Links
Attribution and events
Clicks, installs, first opens, custom events and last-click attribution.
Attribution#
Beck Links credits an install, a re-engagement or an event to at most one link click: the last click of your own link channels, with deterministic matches first. It stores how the match was made, so you can tell a certain match from a weak one.
getAttribution() says which link, if any, brought this install:
| State | Meaning |
|---|---|
attributed | A click was matched (the result includes the link, campaign and matchMethod) |
organic | No click could be matched |
reinstall | The install ID survived a reinstall (best effort) |
pending | The first open's answer is still on its way |
unavailable | Tracking is off, or no result could be had |
onAttribution emits every change in the process, for example pending and then attributed.
What counts, in the dashboard and the API:
- Clicks (people only; link-preview bots are recorded separately and never billed or attributed), and unique clicks counted once per link and day.
- Installs, and attributed installs (deterministic matches only), first opens, re-engagements (opens through a link by an existing install) and events.
- Per link: top operating systems, countries, in-app browsers and match methods.
Events#
await BeckLink.instance.setUserId('user_8841'); // after sign-in; use an internal ID
await BeckLink.instance.track('signup');
await BeckLink.instance.track('purchase', revenue: 49.98, currency: 'USD');
await BeckLink.instance.clearUserId(); // on sign-out- Names: 1 to 64 characters of
a-z,0-9and_. Standard names:signup,login,purchase,subscription,checkout,add_to_cart,registration. - Properties: flat, at most 50 keys and 8 KB, values
String,boolornum. Values that look like email addresses or phone numbers are removed unless your project allows them. - Revenue needs a
currency(ISO 4217, such asUSD), and acurrencyneedsrevenue. - Delivery: events are queued on the device, sent in batches (every 15 seconds, at 20 waiting events and when the app goes to the background) and kept for up to 7 days offline. Each event is stored once.
Events from your server#
For things only your server knows (a confirmed purchase), send POST /v1/events with a secret key
that has the events:write scope, and an event_id of your own: a repeated event_id is stored once.
Privacy#
No IDFA, no advertising ID, no fingerprinting. IP addresses are not stored raw: they are hashed with a daily salt for unique-click counting. Referrer paths and queries are not kept (only the host). Query parameters on a link are stored only when the link has Pass query parameters on, because they can carry personal data. See Consent for turning tracking off.
Verify it works#
Track a test event from a debug build. It appears on the dashboard's Events page within about a minute. Open a link on a fresh install and check Attribution in the install's detail.