Subscription tracking event schema
A subscription business that sends one event at signup is telling the ad platforms almost nothing about its economics. The schema that works sends the whole lifecycle — trial start, first payment, renewal, upgrade, downgrade, cancellation, failed payment — each with its own value, so reported revenue moves in both directions over a customer's life. The single design decision everything depends on is storing the click ID on the customer record at signup, because no cookie survives to the fourth renewal.
Free30 minutesNo obligation
Subscription schema · what breaks
Where teams get this wrong — Subscription schema
- 01
Only the first payment sent
Every customer then looks identical regardless of how long they stay.
- 02
Projected lifetime value at signup
Reporting revenue you haven't earned, and rewarding channels that bring churners.
- 03
Cancellations never reported
Reported revenue only climbs while the business shrinks.
Subscription schema · the fix
What a correct implementation looks like — Subscription schema
Each payment sent as it clears
At the amount actually charged.
Click ID on the customer record
So renewals reference the original click.
Downgrades and cancellations as negative adjustments
Value moving both ways.
Voluntary and involuntary churn separated
They're different problems with different fixes.
Subscription schema · architecture
The lifecycle events — Subscription schema
Seven states. Most implementations send one. Each of the other six changes what the platforms can learn.
- 1
Trial start
Server-side, with a modelled value rather than the full plan price. Volume for bidding to learn from.
- 2
First payment
Server-side from billing, at the amount charged. The conversion that matters.
- 3
Renewal
Server-side, each cycle. Where lifetime value actually accumulates.
- 4
Upgrade
Server-side. Expansion revenue and a strong quality signal about the channel that produced the customer.
- 5
Downgrade
Server-side, as a negative adjustment.
- 6
Cancellation
Server-side reversal. Without it reported revenue only goes up.
- 7
Failed payment
Server-side. Involuntary churn is a separate and often more recoverable problem.
Subscription schema · diagnose
Common mistakes and how to validate each — Subscription schema
Ordered by how often we find them. Each one has a specific check rather than a general instruction to be careful.
- 01
Renewals never sent
Check whether anything fires on a renewal. There's no browser involved, so usually nothing does.
- 02
Click ID lost after signup
Check whether it's on the customer record. A cookie won't survive to renewal four.
- 03
Full plan value at checkout
Compare reported revenue against collected revenue for a closed month. The gap is the overstatement.
- 04
Pauses treated as cancellations
A paused subscriber is recoverable. Conflating them understates your base.
- 05
Annual and monthly blended
Different cash and retention profiles. Check whether you can separate them in reporting.
Subscription schema · prove
How to prove your implementation is right — Subscription schema
Against your own records and a live payload, not against a preview screen.
Source of truth
your billing system's invoice and subscription records
- Each lifecycle event confirmed arriving from a real subscription.
- Click ID present on a live customer record.
- A real cancellation and a real refund both tested and confirmed reversing.
- Collected revenue reconciled against billing for a closed month.
- Checked on a live conversion, not in preview mode.
- Reconciled over a fully closed window, matched per record.
- Re-checked 30 days later.
Subscription schema · free audit
What we check in the free audit
- Renewals never sent
- Click ID lost after signup
- Full plan value at checkout
- Pauses treated as cancellations
- Annual and monthly blended
Checked against
your billing system's invoice and subscription records
Free30 minutesNo obligation
Subscription schema · when not to buy
What this reference deliberately leaves out — Subscription schema
Stated openly, because a reference that's silent about its own gaps is the dangerous kind.
- Usage-based and hybrid billing models need additional events and aren't covered by this schema.
- Proration handling varies by billing system and affects what value to send on mid-cycle changes.
- Dunning and recovery flows are adjacent and have their own measurement questions.
- Vendor documentation is the authority, not this page. Where the two disagree, the vendor is right and we'd like to know so we can correct it.
- Parameter names and behaviour change. Anything here is accurate as we last verified it; verify against the current documentation before you rely on it for a build.
Subscription schema · what we deliver
The checklist — Subscription schema
Every lifecycle state has an event
Trial, first payment, renewal, upgrade, downgrade, cancellation, failed payment.
Click ID stored on the customer record
Not in a cookie.
Values are actual amounts charged
Not projections.
Reversals implemented
Tested with a real cancellation.
Trial and paid are distinct events
With distinct values.
Pricing
Pick the package that fits your ad spend
Browser-side starter
$400One-time fee · lifetime ownership
Repairs and verifies your existing browser-side setup against this reference, on a live conversion.
- Implementation checked against the spec
- Verified on a live conversion
- Reconciled against your own records
- Written handover
1st-party server-side
Recommended$800One-time fee · most popular
Money events sent from your own records through a first-party container on your subdomain, built to this specification.
- First-party server container on your own subdomain
- Events from your records, not the browser
- Deduplicated on a shared event ID at every destination
- First-party cookies beyond Safari's 7-day cap
- 95%+ accuracy and 8+ Meta EMQ, guaranteed in writing
Full 1st-party stack
$1,800One-time fee · lifetime ownership
Every paid channel server-side plus the offline loop, documented to this standard.
- Everything in 1st-party server-side
- Pinterest, Snapchat, Reddit and LinkedIn CAPI
- CRM and offline conversion loop
- Refunds and cancellations corrected wherever each platform allows it
- Monitoring so the next break surfaces in days
FAQ
Subscription schema questions, answered
No. Send each payment as it clears. A projection at signup reports revenue you haven't earned and rewards channels that bring customers who leave.
Store the click ID on the customer record at signup. Every subsequent invoice references it, which no cookie could.
If you want reported revenue to resemble actual revenue, yes. Without reversals the two diverge every month.
First renewal, if you have the volume. It's the earliest reliable signal that a channel brings customers who stay.
Free · 30 min
Send the whole lifecycle, not just the signup
Free30 minutesNo obligation
