View as Markdownllms.txt

Attribution

Qualified purchases

Choose which paid purchases count as qualified. In Observe mode, AppRefer checks every purchase against your rules without changing the events sent to ad networks, and your revenue does not change.

Observe only

Every real payment is still counted once in revenue and forwarded exactly as before (Purchase or Subscribe, see Events). Qualified purchases are a separate observation stored beside the payment. Sending them to ad networks will be a later, opt-in step.

Why

Some buyers cancel or ask for a refund within minutes. Watching how many purchases survive a short window, per product, tells you whether a qualified signal would be worth optimising ads for, before anything about your campaigns changes. It is not a verdict on revenue: an annual buyer who turns off auto-renew still paid for the year.

Rules

Each app has up to 10 rules. A payment is checked by the first rule (in order) that covers its type and product.

SettingWhat it does
Applies toAny of: first payment, trial converts to paid, renewal, one-time purchase. Free trial starts are never purchases (see Qualified trials for those).
ProductsStore product ids. Empty means every product.
WindowHow long after the payment to watch, 1 to 720 hours.
Minimum amount paidOptional, with an explicit currency. A USD minimum uses the converted USD price. Any other currency is compared only with payments made in that currency; others show as Unknown.
Not refunded or revokedA refund of this payment, or a revocation of the purchase, inside the window means Not qualified.
Exclude purchases whose renewal is cancelled during the windowOptional. Turning off auto-renew inside the window (even if it is turned back on) means Not qualified. Never assumed: leave it off for annual plans.
Required activityOptional: an SDK event name (for example workout_completed) and the minimum times it must be received inside the window.

Results

ResultMeaning
WaitingStill inside the observation window.
QualifiedThe payment met every part of the rule.
Not qualifiedRefunded, revoked, auto-renew turned off (when the rule asks), below the minimum amount, or not enough app activity.
UnknownAppRefer is missing data it needs to decide, and says why: the store sent no price; the payment was in another currency than the minimum; no AppRefer install was linked to the purchase; the app wasn't sending the activity event before the purchase; AppRefer wasn't collecting that event for the whole window (for about 6 minutes after a new event name is saved, or after a dropped name's 31-day grace period); or the subscription's store history was too long to check the whole window.

Missing data is always Unknown, never Not qualified. A refund, revocation or cancellation that happened inside the window but is delivered late by the store changes a result to Not qualified, and the change is recorded. A refund after the window is noted but does not change the result.

How payments are matched

  • Which purchases are checked. Purchases that reach AppRefer through AppRefer Billing (App Store, Google Play and Stripe, including purchases the SDK reports) or the RevenueCat webhook. Purchases sent only through the legacy Superwall webhook are not checked.
  • One result per payment. A payment is identified by app, environment (live or test), store and store transaction id. When the same purchase arrives from AppRefer Billing and again from RevenueCat, it is checked once. A test purchase never matches a live one, even with the same ids.
  • Sign-in doesn't matter. Refunds and cancellations are matched by the store's subscription, not by user id, so a purchase made anonymously and cancelled after sign-in is still matched. Google Play subscriptions are matched by their order id (the part before ..), which both sources share; a refund that names its transaction always reaches that payment.
  • Out of order. A cancellation or refund that arrives before the purchase itself is kept and applied when the purchase lands. Cancellations from up to 10 minutes before the payment count.
  • Nothing is dropped silently. A store notice that can't be recorded is retried, then kept and retried daily; the card says how many are outstanding. Very long store histories keep a marker of what was trimmed, and a payment whose window might be affected is Unknown, never Qualified.
  • Rule versions. Every save creates a new numbered version; versions are never edited. A payment keeps the version it was checked under, so changing a rule never rewrites past results.
  • Required activity. Events are counted for the AppRefer install linked to the purchase (the device id AppRefer Billing and RevenueCat pass along), timed when AppRefer receives them and de-duplicated by event id. Events received before the store's purchase notice are counted too, from the payment time. A new event name is collected within about 6 minutes of saving; a name you rename or remove (or turn the feature off) keeps being collected for 31 days, so payments already waiting are still judged on it.

Set up

  1. Open Settings → App settings and find Qualified Purchases. Everyone in the company can see it; owners and admins can change it.
  2. Turn on Observe qualified purchases and start from a template: Weekly plan: kept 2 hours (not refunded, renewal not cancelled within 2 hours) or Annual plan: not refunded in 14 days. Pick the products each rule covers.
  3. Save. Payments from then on are checked; earlier payments are not.

The card shows the last 30 days: how many payments are waiting, qualified, not qualified or unknown, the reasons, a row per rule version and the latest payments (product, amount, result). Test purchases are shown separately. No user, device or transaction ids are shown.

Annual plans

Many annual buyers turn off auto-renew soon after buying and keep using what they paid for. Use "not refunded" for annual plans and keep the auto-renew check for short plans such as weekly.

Privacy and data

Results hold the product, amount, store, times and the outcome. Store transaction ids and install ids are stored only as one-way hashes. Results are kept for 400 days. For a counted event name, AppRefer keeps each install's hashed event ids and receive times for up to 45 days. Erasing a user (see Privacy) deletes that activity record and unlinks their installs from any results.