View as Markdownllms.txt

Attribution

Qualified trials

Send a trial start to ad networks only after the user has kept it for a while, so the networks learn from trials that are likely to pay.

Why

Ad networks optimise toward the events you send them. Many people start a trial and cancel within minutes. If every trial start is sent, the network learns to find more of those people. Holding the event back until the trial has survived a short window gives the network a cleaner signal of purchase intent.

How it works

StepWhat happens
1. Trial startsA store notification (AppRefer Billing) or a RevenueCat webhook reports a new trial for an install attributed to an ad network. Instead of sending it, AppRefer holds it.
2. HoldThe trial waits for the delay you set (2 hours by default, 1 to 24 hours).
3a. Still activeWhen the delay ends, AppRefer sends it as qualified_trial to the network that drove the install.
3b. CancelledIf the user cancels during the hold, the trial is disqualified and never sent.
3c. Paid earlyIf a renewal or plan change arrives during the hold, the hold ends. The paid event is sent on its own, so no separate trial event is needed.

Trials from organic installs and test-key (sandbox) purchases are never held. The hold applies to installs attributed to Meta, Google, TikTok and ChatGPT Ads.

How cancellations are matched

A cancellation has to find the right held trial even when the user changed identity in between, and even when the store reports events out of order. AppRefer handles both:

  • Across user IDs. Apps often start a trial under an anonymous ID and log the user in before they cancel. A cancellation is matched to held trials by the install's attribution and by every ID the purchase knows about: the current app user ID, the original app user ID and all aliases.
  • Cancellation before the trial. A cancellation can arrive a second before the trial start it belongs to, when nothing is held yet. Every cancellation therefore also stamps the install's attribution with the time it happened (lastCancellationAt). When a held trial is due, AppRefer disqualifies it if that install has a cancellation from 10 minutes before the trial start onwards.

What is sent

NetworkEvent
MetaStartTrial
TikTokStartTrial
Google AdsThe conversion action you mapped to qualified_trial (nothing is sent without one)
ChatGPT Adstrial_started

You can change the Meta and TikTok event in Settings → Event mapping. The original trial time is kept, and the qualified trial also appears as a qualified_trial event in your analytics. If the install is still waiting for the user's tracking answer, the event waits too (see Tracking consent); if tracking was denied, it is recorded but not sent.

Setup

  1. Open Settings → App settings for your app (admin role needed).
  2. Turn on Qualified Trial.
  3. Set the delay in hours, from 1 to 24. Most apps use 2 to 4 hours.

The same card shows how many trials qualified, were disqualified or are still pending, and the qualification rate.

Choosing the delay

A longer delay filters out more quick cancellations but gives the ad network its signal later. Look at when most cancellations happen in your app and pick a delay just after that.