Concepts
Signals and tiers
A signal is evidence that a creator influenced a user: a redeemed offer code, a click ID that survived the install, a code typed on your paywall. Each signal has a tier, and the tier decides whether a conversion pays automatically.
| Tier | Meaning | Signals | Pays automatically |
|---|---|---|---|
| VVerified | The store confirms it | apple_offer_code, google_promo_code |
Yes |
| DDeterministic | An ID carried the whole way | web_checkout, install_referrer, universal_link, app_clip, post_install_link, cpp_deep_link |
Yes |
| UUser-asserted | The user said so | code_entry, confirmed_creator, self_report |
code_entry yes; confirmed_creator your choice (monthly cap); self_report never |
Estimated conversions (EEstimated) come from aggregate store data. They appear in the coverage meter and never pay by default.
How a decision is made
decideAttribution is a pure function: the same signals and the same rules version always give
the same decision.
- Collect the program’s signals for the user within their windows.
- Drop invalid ones: out of window, creator not in the program, flagged by fraud rules, or a forbidden type.
- Pick the highest tier (V, then D, then U). Within it, the last touch at or before the first paid transaction wins, or the first touch if the program says so.
- Write the decision with the rules version and a receipt.
Rules that always apply:
self_reportnever wins a payable decision. It can produce a U decision withautopay: falsefor reporting.- Contested: if different creators have valid signals in the winning tier (or across tiers),
the decision is marked
contested: true. The highest tier still wins; by default an offer code beats a link click, because it shows intent at the moment of purchase. - Transfer protection (default on): once a user is
attributedorlocked, later signals don’t move them to another creator. - Status:
provisionalbefore the first paid transaction,attributedafter it,lockedafter the hold,voidif reversed.
What is never a signal
IP or device fingerprint matching, the IDFA without consent, and reading the clipboard without a user tap. These aren’t options you can switch on; they are not built.