Skip to content
Proofline

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.

  1. Collect the program’s signals for the user within their windows.
  2. Drop invalid ones: out of window, creator not in the program, flagged by fraud rules, or a forbidden type.
  3. 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.
  4. Write the decision with the rules version and a receipt.

Rules that always apply:

  • self_report never wins a payable decision. It can produce a U decision with autopay: false for 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 attributed or locked, later signals don’t move them to another creator.
  • Status: provisional before the first paid transaction, attributed after it, locked after the hold, void if 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.

See also