Skip to content
Proofline

Product · Attribution

Proof first. Guesses never pay.

Every sale is matched to a creator by a signal the App Store, Google Play or the user’s own action confirms. Every commission has a receipt showing why it was paid.

The signal ladder

Three tiers of evidence. Higher tiers win.

Each user collects signals. Each signal has a tier, and the tier decides whether it pays automatically.
Signal ladder: tiers, signals and whether they pay automatically
TierSignalHow it’s createdPays automatically
VVerifiedV1Apple offer code redemptionThe user redeems the creator’s custom code. Apple’s transaction records an offer code (offer type 3) and its identifier.Yes
VVerifiedV2Google Play promo codeThe creator’s custom Play code, for new subscribers.Yes
DDeterministicD1Web checkoutThe click ID travels in the URL to web checkout; the purchase is linked to the app account.Yes
DDeterministicD2Android Install ReferrerThe click ID passes through the Play Store install.Yes
DDeterministicD3Universal link / App LinkSomeone who already has the app taps the link.Yes
DDeterministicD4–D6App Clip, post-install link, custom product pageAn ID handed to the full app, or carried by a link tapped after install.Yes
UUser-assertedU1Code typed or pasted in the appThe user enters the creator’s code on your paywall, or taps paste.Yes (you can turn it off)
UUser-assertedU2Confirmed creatorThe user picks the creator in a prompt. Suggestions come from aggregate data only.Your choice; on by default with a monthly cap per creator
UUser-assertedU3Self-reported source“How did you hear about us?”Never — reporting only
ForbiddenIP or device fingerprint matching; IDFA without consent; clipboard reads without a tap—Never built

Apple’s AdAttributionKit isn’t on the ladder: it reports aggregated, privacy-thresholded results to ad networks, so it can’t credit one sale to one creator.

The decision

A pure function you can replay.

The same signals and the same rules version always give the same decision. That is what makes it testable and explainable.
  1. 01

    Collect

    All the program’s signals for the user, inside their windows: 30 days from click by default; a code counts while it’s valid.

  2. 02

    Drop

    Invalid signals: out of window, creator not in the program, flagged by a fraud rule, or a forbidden type.

  3. 03

    Pick

    The highest tier. Within it, the last touch before the first paid transaction (or the first touch).

  4. 04

    Write

    The decision with its rules version and a receipt. Provisional before payment, attributed at first payment, locked after the hold.

Per environment

What the link does where it opens.

Where does the tap happen?
Landing pageiOS · TikTok in-app browser

Sarah Lee recommends Stretchly

20% off for 3 months

Primary button: Claim 20% off on the App Store

  • “Already have the app? Open it” (universal link, on a real tap)
  • Fallback: “Copy code SARAH20” (on tap), then the creator’s custom product page

Sarah earns a commission.

Method that fires
Apple offer-code redemption link
Best tier
VVerifiedV1 · Apple offer code

Universal links rarely open apps from in-app browsers, but App Store links do. So the purchase happens in the App Store first, and Apple records which code was used.

  1. Touch:

    Link tap in TikTok

    /sarah/k7Q2x

  2. Touch:

    Offer code SARAH20 redeemed in the App Store

    VVerifiedWinner
  3. App open:

    App installs; first open links the user

  4. Purchase:

    First paid period, Apple-verified

Being validated · We’re still testing offer-code redemption from TikTok’s browser on real devices.

Landing pageiOS · Instagram in-app browser

Sarah Lee recommends Stretchly

20% off for 3 months

Primary button: Claim 20% off on the App Store

  • “Already have the app? Open it” (universal link, on a real tap)
  • Fallback: “Copy code SARAH20” (on tap), then the creator’s custom product page

Sarah earns a commission.

Method that fires
Apple offer-code redemption link
Best tier
VVerifiedV1 · Apple offer code

Same as TikTok: the landing page never auto-redirects to a universal link, because redirects break them. One button, chosen for this browser.

  1. Touch:

    Link tap in Instagram

    /sarah/k7Q2x

  2. Touch:

    Offer code SARAH20 redeemed in the App Store

    VVerifiedWinner
  3. App open:

    App installs; first open links the user

  4. Purchase:

    First paid period, Apple-verified

Being validated · We’re still testing offer-code redemption from Instagram’s browser on real devices.

Landing pageiOS · link in a YouTube description

Sarah Lee recommends Stretchly

20% off for 3 months

Primary button: Claim 20% off on the App Store

  • Code spoken in the video, typed into your paywall
  • Fallback: “Copy code SARAH20” (on tap)

Sarah earns a commission.

Method that fires
Apple offer-code redemption link
Best tier
VVerifiedV1 · Apple offer code (or U1 if typed)

Description links behave like other in-app browsers. A code said out loud still lands as a typed code (U1), or as V1 when the viewer redeems it in the App Store.

  1. Touch:

    Link tap in YouTube description

    /sarah/k7Q2x

  2. Touch:

    Offer code SARAH20 redeemed in the App Store

    VVerifiedWinner
  3. App open:

    First open links the user

  4. Purchase:

    First paid period, Apple-verified

Being validated · We’re still testing how YouTube opens links, on real devices.

Landing pageiOS · Safari or Chrome

Sarah Lee recommends Stretchly

20% off for 3 months

Primary button: Claim 20% off on the App Store

  • App Clip card or Smart App Banner, if your app has an App Clip
  • Fallback: “Copy code SARAH20” (on tap), then the product page

Sarah earns a commission.

Method that fires
Apple offer-code redemption link
Best tier
VVerifiedV1 · Apple offer code (D4 with an App Clip)

In a real browser the same offer-code path works, and an App Clip can hand the click ID to the full app through shared storage.

  1. Touch:

    Link opened in Safari

    /sarah/k7Q2x

  2. Touch:

    Offer code SARAH20 redeemed

    VVerifiedWinner
  3. App open:

    First open links the user

  4. Purchase:

    Trial converts to paid

Being validated · We’re still testing the App Clip handoff on real devices.

Landing pageAndroid · any browser or in-app browser

Sarah Lee recommends Stretchly

20% off for 3 months

Primary button: Get it on Google Play

  • App Link, if the app is already installed
  • Fallback: Play promo code

Sarah earns a commission.

Method that fires
Play Store with the click ID in the install referrer
Best tier
DDeterministicD2 · Play Install Referrer

The click ID rides through the Play Store install in the referrer, so the match is exact. Its timestamps also catch click injection.

  1. Touch:

    Link tap in Instagram on Android

    /sarah/k7Q2x

  2. Install:

    Play Store install with referrer

  3. App open:

    First open reads proofline_click=k7Q2x

    DDeterministicWinner
  4. Purchase:

    First paid period, Google-verified

Being validated · We’re still testing, on real devices, whether the referrer survives each in-app browser.

Landing pageDesktop browser

Sarah Lee recommends Stretchly

20% off for 3 months

Primary button: Scan to get the app

  • “Text me the link” or “Email me the link”
  • Fallback: App Store and Google Play web pages

Sarah earns a commission.

Method that fires
QR code to the same link
Best tier
VVerifiedSame as phone (plus D5 post-install link)

Nobody installs an app on a laptop. The QR code opens the same creator link on the phone and keeps the click history.

  1. Touch:

    Link opened on a laptop

    /sarah/k7Q2x

  2. Touch:

    QR scanned; same link opens on the phone

  3. Touch:

    Offer code SARAH20 redeemed

    VVerifiedWinner
  4. Purchase:

    First paid period

Landing pageSpoken code (podcast, video, live)

Sarah Lee recommends Stretchly

20% off for 3 months

Primary button: Code field on your paywall

  • “How did you hear about us?” for reporting only

Sarah earns a commission.

Method that fires
In-app code entry
Best tier
UUser-assertedU1 · code typed in the app (V1 if redeemed in the App Store)

There is no link to tap. A typed code shows clear intent and pays by default; a self-reported answer never pays.

  1. Touch:

    Hears “use code SARAH20”

  2. Install:

    Installs from the App Store

  3. Touch:

    Types SARAH20 on the paywall

    UUser-assertedWinner
  4. Purchase:

    First paid period

Receipts

The receipt behind every number.

Receipt R-8F2KCommission $5.39Locked

Creator
Sarah Lee (@sarahmoves) · Program “Spring creators”
(note 1) Decision
Apple-verified offer codeVVerifiedrules v3 · last touch
(note 2) Signals
  1. 14 Oct 09:12Link tap in Instagram (iOS in-app browser) /sarah/k7Q2x
  2. 14 Oct 09:13Offer code SARAH20 redeemed (Apple)winner
  3. 14 Oct 09:15First app open; user linked (appAccountToken set)
(note 3) Transaction
21 Oct 2026 First paid period $11.99 → net $8.99 (store fee 15%, tax 10%)
(note 4) Calculation
$8.99 × 60% (first 3 months) = $5.39 → 30-day hold → lockedHold until 20 Nov 2026 · status Locked
(note 5) Store refs
originalTransactionId 2000000… · environment Production

Tier V = Verified. Re-running rules v3 on these signals reproduces this receipt.

  1. 1

    The rule that decided it

    Highest tier wins. An Apple-verified offer code (V) beats the link tap (D) that came a minute earlier. The rules version is stored, so the decision can be replayed.

  2. 2

    Every signal, winner marked

    All signals the engine considered are listed, not just the winner. Creators and owners see the same facts.

  3. 3

    Net, not gross

    Commission is paid on net proceeds: price minus the store’s fee minus tax. Free trials, sandbox and family-shared purchases are excluded by default.

  4. 4

    The calculation, in full

    Basis × rate = amount, then a hold before it locks. Refunds during the hold reverse it; later refunds net against future earnings.

  5. 5

    Store references

    The original transaction ID ties the receipt to Apple’s records. Creators see a redacted copy without it.

Coverage

See what you can’t prove, too.

Per creator, App Store campaign links and custom product pages give aggregate download counts. Proofline scales them up into an estimated range and shows it next to what is verified.
@sarahmovesCoverage 64–79%
@coachdaniCoverage 81–95%
@liftwithleoCoverage 64–81%

Demo dataEstimates never pay by default; you can add a discretionary bonus pool.

What we never do

The lines we don’t cross.

  • No fingerprinting

    We never match a click to a device by IP address, user agent or device data. Apple’s rules forbid it, and it would make receipts guesses.

  • No IDFA, no ATT prompt

    The SDK never asks for or reads the advertising identifier.

  • No clipboard reads without a tap

    Codes are pasted only through Apple’s paste control, after the user taps it.

  • No raw IP addresses stored

    A short-lived salted hash is used for rate limiting only, never for matching.

  • No tracking cookies

    The click ID lives in the link’s URL path and the server session.

  • No silent changes

    Locked commissions change only through new, linked adjustment entries, each with a reason.

FAQ

App Review, ATT and edge cases.

Is the SDK safe for App Review?

Yes. It declares no tracking in its privacy manifest, never reads the IDFA, does no fingerprinting, and only reads the clipboard through Apple’s paste control after a tap. The App Review guide in the docs has the privacy-label answers.

Do I need App Tracking Transparency?

No. Nothing Proofline does links your users’ data with other companies’ apps or websites, which is what ATT governs.

What if two creators touch the same user?

The higher tier wins; within a tier, the last touch before the first payment (or the first touch, if you choose). The decision is marked “contested” so you can see it, and the receipt lists both signals.

Can a later click steal a paying subscriber?

Not by default. Transfer protection keeps an attributed, paying user with their creator for the renewal window.

What happens when I change the rules?

New rules apply to new conversions. You can choose to apply them to pending commissions too. Locked commissions never change silently; every receipt records the rules version that produced it.