Skip to main content
TRACKLAYER · SUBSCRIPTION

Recurring revenue tracking that respects renewals,
not just first orders.

Subscription boxes, membership sites, and recurring-DTC businesses bid Meta and Google on first-order CPA — then watch their best customers churn at month 3 with no signal back to the algo. TrackLayer routes Recharge, Bold Subscriptions, Chargebee, and Stripe Billing subscription events to every ad platform with LTV RFM segmentation, churn prediction, anomaly auto-pause on delivery drift, and EU/US residency — so your campaigns optimize for LTV instead of trial signups.
14-day trial · no card · all subscription apps supported
SUBSCRIPTION APP TRACKLAYER AD + LIFECYCLE CHANNELS ──────────────── ────────── ─────────────────────── Recharge / Bold / Smartrr / Skio / Stripe-native subscription.created → subscription_started → Meta Subscribe (first) · Google · Klaviyo welcome subscription.charged (renewal) → subscription_renewed → Meta Subscribe (renewal MRR + LTV) · Google subscribe_renewed subscription.upgraded (tier ↑) → subscription_upgraded → Meta Purchase (ΔMRR) · Google · Klaviyo upgrade flow subscription.canceled → subscription_canceled → Google negative · Meta exclusion audience · Klaviyo win-back invoice.payment_failed → payment_failed → Klaviyo dunning (NOT to ad platforms) subscription.recovered → subscription_renewed → Meta Subscribe · Klaviyo recovery-success
// ADJACENT SOLUTIONS

Subscription overlaps three of our solutions. Pick the closest fit.

Subscription is the universe of recurring revenue. If you're more specifically B2B SaaS, a creator monetization stack, or a B2B-only operation, the dedicated solution page goes deeper on what's specific.
SAAS →

B2B SaaS with trial → activation → paid funnel, LinkedIn CAPI, CRM webhook bridge (HubSpot, Salesforce, Pipedrive).

CREATORS →

Substack, Beehiiv, Kajabi, Memberstack subscriber lifecycle. Newsletter + course + membership monetization.

B2B →

Enterprise long-cycle B2B (180+ day deals), pipeline-aware tracking, multi-stakeholder attribution.

// THE PROBLEM

The first order is the worst signal you can optimize on.

Subscription DTC boxes have a $40 first-order CPA target — and a customer worth $580 in year-one LTV. Optimizing campaigns on the $40 signal pulls in cohorts that look great on day 1 and churn at 70% by month 2. Your CFO sees the truth in Stripe MRR; Meta and Google never do.

First-order CPA optimizes against you.

Meta sees the first $40 charge and bids accordingly. The cohort that ranks 'cheapest CPA' is also the one that churns hardest — because they bought the discount, not the product. Without renewal signal flowing back, the algo never learns the difference between a 6-month customer and a one-and-done.

Renewals aren't ad events.

Recharge / Bold / ReCharge fire renewal hooks — to your billing system. They do not POST to Meta CAPI as a Subscribe event with the renewal MRR. That signal stays trapped inside the subscription app. Your $80/mo renewal is invisible to the platform that found the customer.

Churn is the real conversion event.

The team that ships subscription_canceled to Meta as a NEGATIVE signal — and excludes recently-churned cohorts from prospecting audiences — outperforms by 30-50% on year-one LTV. Almost no team does it because the plumbing is hard. TrackLayer ships the plumbing.

§ 01

Subscription app → TrackLayer → every paid + lifecycle channel.

One webhook URL in your subscription app. Six canonical events covering the full subscriber lifecycle. Renewal value, churn signal, upgrade delta — all flowing to Meta, Google, TikTok, and Klaviyo.
STEP 01

Connect your subscription app

Recharge, Bold Subscriptions, ReCharge, Smartrr, Skio, native Stripe Subscriptions, custom — all supported. Paste the webhook URL, set the HMAC secret, done. We verify every payload's signature.

STEP 02

Translate to taxonomy

subscription.created → subscription_started. subscription.charged (renewal cycle) → subscription_renewed. subscription.upgraded (tier change) → subscription_upgraded. subscription.canceled → subscription_canceled. One taxonomy across every backend.

STEP 03

Enrich with LTV signal

Pull MRR, billing interval, plan tier, total renewals to date, days-since-acquisition. Hash email + phone for CAPI. Carry through fbp / fbc / gclid / ttclid from the original click.

STEP 04

Fan out with renewal value

Meta CAPI: subscription_renewed → Subscribe with renewal MRR (not first-order value). Google Ads: subscribe_renewed with conversion value = MRR. Klaviyo: trigger renewal milestones (3-mo, 6-mo, 12-mo). Idempotent + retried via CF Queues.

§ 02

Daily churn scores turn lifecycle data into retention action.

TrackLayer scores every active subscriber on 14-day churn probability using recent usage frequency, last-login age, support tickets, plan downgrades, and billing failures. The retention dashboard ranks risk and pairs each subscriber with a concrete next action.
SUBSCRIPTION CHURN SCORE · DAILY
{
  "subscriber_id": "sub_18420",
  "churn_probability_14d": 0.72,
  "features": {
    "usage_frequency_30d": 2,
    "last_login_age_days": 19,
    "support_ticket_count_30d": 3,
    "plan_downgrades_90d": 1,
    "billing_failures_30d": 0
  },
  "recommended_action": "Subscriber sub_18420 is likely to churn in 14d. Open a support recovery task before sending automated winback."
}
Transparent logistic model inputs stored with every score for auditability.

Churn-risk leaderboard

Retention teams see the highest-risk active subscribers first, with the signals that moved the score.

Revenue-lift recommendations

High-risk subscribers get retention, dunning, or support actions. High-usage low-risk subscribers get upgrade prompts.

Per-subscriber timeline

Usage, inactivity, ticket, downgrade, and payment-failure inputs are visible next to the recommended action.

§ 03

Renewals fire as Subscribe with the renewal MRR.

Below: a Recharge subscription_charged webhook arrives every billing cycle. TrackLayer translates it to subscription_renewed and POSTs to Meta CAPI as Subscribe with the renewal value — so Meta's bid optimizer can learn that this user is now worth their cumulative MRR, not their first-order value.
RECHARGE · SUBSCRIPTION CHARGED
POST /v1/integrations/recharge/subscriptions?merchant_id=glasshouse_42
X-Recharge-Hmac-SHA256: a8f5...
X-Recharge-Topic: subscription/charged
Content-Type: application/json

{
  "event": "subscription/charged",
  "subscription": {
    "id": 18420,
    "customer_id": 73851,
    "status": "active",
    "next_charge_scheduled_at": "2026-05-26",
    "charge_count": 7,
    "first_charge_at": "2025-10-26",
    "billing_interval": "1 month",
    "billing_amount": "48.00",
    "currency": "USD"
  },
  "customer": {
    "email": "buyer@glasshouse.co",
    "phone": "+15125550199"
  }
}
Recharge POSTs this on every renewal billing. X-Recharge-Hmac-SHA256 verified per merchant.
META CAPI · SUBSCRIBE OUTBOUND
POST https://graph.facebook.com/v22.0/123456/events
Authorization: Bearer <merchant_meta_token>

{
  "data": [{
    "event_name": "Subscribe",
    "event_time": 1776954960,
    "event_id": "recharge_18420_renewal_7",
    "action_source": "system_generated",
    "user_data": {
      "em": ["9c2edcec5b3..."],
      "ph": ["a4f7..."],
      "fbp": "fb.1.1729958900.1234567890",
      "fbc": "fb.1.1729958820.IwAR2..."
    },
    "custom_data": {
      "currency": "USD",
      "value": 48.00,
      "predicted_ltv": 336.00,
      "subscription_id": "recharge_18420",
      "renewal_count": 7,
      "days_since_acquisition": 182
    }
  }]
}
Renewal #7. Meta sees Subscribe with renewal MRR + cumulative LTV signal. Bid optimization shifts toward high-LTV cohorts.
§ 04

Three subscription scenarios where the math changes.

Real subscription DTC stores, real renewal volumes, real LTV deltas. Numbers are representative of stores doing $50k-500k/mo MRR with 2k-20k active subscribers.
Coffee subscription · $84k MRR · 1,750 active subs
northfield.box
BEFORE

Meta optimized on first-order Subscribe @ $42 CPA. The 'cheapest' cohort churned at 68% before month 2. Real CAC-recovered-by-month-3 was $114, not the $42 Meta thought it was bidding.

AFTER

Wired Recharge subscription_charged → Meta CAPI Subscribe with renewal MRR. After 6 weeks Meta started favoring cohorts with 3+ renewals. New-customer churn rate dropped from 68% to 41%; net LTV per acquired sub up 47% on the same monthly budget.

3-mo retention32% → 59%+84%
Tea club · $46k MRR · 980 active subs
halcyon-tea.co
BEFORE

Google Ads only saw the first $32 charge. Klaviyo's churn-recovery flow was firing 4 days after cancel — and 80% of churners had already moved on. No re-acquisition trigger fed back into Google's audience exclusion.

AFTER

subscription_canceled now fires to Google Ads as a negative remarketing signal AND Klaviyo within 60 seconds. Google excludes recent-churners from prospecting audiences automatically; cancel-recovery email open rate up 3.4× because it ships the same hour as cancellation.

Cancel-recovery email open9% → 31%+244%
Wellness box · $230k MRR · 4,800 active subs
glasshouse.co
BEFORE

Tier upgrades (Basic $32 → Premium $58) showed up nowhere in ad reporting. Meta and Google had no signal that 18% of customers ARPU-up'd by month 4 — so they kept optimizing for first-purchase volume, not upgrade-prone cohorts.

AFTER

subscription_upgraded fires to Meta as Purchase with the MRR delta ($26 in this example) and to Google with conversion_value = ARPU lift. Within 8 weeks, Meta started preferring cohorts that historically ARPU-up'd, lifting blended ARPU by $4.20/sub.

Blended ARPU$38 → $42.20+11%
// HOW IT COMPARES

Other subscription tracking options vs TrackLayer.

BASED ON PUBLIC DOCS · 04·2026
CAPABILITYTRACKLAYERRecharge nativeStape.ioKlaviyo only
Renewal → Meta CAPI Subscribe (renewal MRR)first order onlyDIY GTM tag
Cancel → Google Ads negative signalmanual
Upgrade → Meta Purchase (MRR delta)DIY
Predicted LTV in CAPI custom_data
Recharge / Bold / Smartrr / Skio / native-StripeallRecharge onlyDIY per appvia Shopify only
Pixel ↔ server dedup via event_idn/amanualn/a
Refund / failed-payment → ad platform negativeDIY
Klaviyo lifecycle triggers (3/6/12-mo renewals)via flows
Price at 50k subscribers$199 Growth≈ $200 Pro + GCP≈ $700 Klaviyo
TRACKLAYER
Renewal → Meta CAPI Subscribe (renewal MRR)
Cancel → Google Ads negative signal
Upgrade → Meta Purchase (MRR delta)
Predicted LTV in CAPI custom_data
Recharge / Bold / Smartrr / Skio / native-Stripe
all
Pixel ↔ server dedup via event_id
Refund / failed-payment → ad platform negative
Klaviyo lifecycle triggers (3/6/12-mo renewals)
Price at 50k subscribers
$199 Growth
Recharge native
Renewal → Meta CAPI Subscribe (renewal MRR)
first order only
Cancel → Google Ads negative signal
Upgrade → Meta Purchase (MRR delta)
Predicted LTV in CAPI custom_data
Recharge / Bold / Smartrr / Skio / native-Stripe
Recharge only
Pixel ↔ server dedup via event_id
n/a
Refund / failed-payment → ad platform negative
Klaviyo lifecycle triggers (3/6/12-mo renewals)
via flows
Price at 50k subscribers
Stape.io
Renewal → Meta CAPI Subscribe (renewal MRR)
DIY GTM tag
Cancel → Google Ads negative signal
manual
Upgrade → Meta Purchase (MRR delta)
DIY
Predicted LTV in CAPI custom_data
Recharge / Bold / Smartrr / Skio / native-Stripe
DIY per app
Pixel ↔ server dedup via event_id
manual
Refund / failed-payment → ad platform negative
DIY
Klaviyo lifecycle triggers (3/6/12-mo renewals)
Price at 50k subscribers
≈ $200 Pro + GCP
Klaviyo only
Renewal → Meta CAPI Subscribe (renewal MRR)
Cancel → Google Ads negative signal
Upgrade → Meta Purchase (MRR delta)
Predicted LTV in CAPI custom_data
Recharge / Bold / Smartrr / Skio / native-Stripe
via Shopify only
Pixel ↔ server dedup via event_id
n/a
Refund / failed-payment → ad platform negative
Klaviyo lifecycle triggers (3/6/12-mo renewals)
Price at 50k subscribers
≈ $700 Klaviyo
PLAN COMPATIBILITY

Subscription requires Growth — for the LTV signal pipeline.

Starter ships first-order tracking; that won't help here. Growth adds the subscription_charged / subscription_canceled / subscription_upgraded fan-out, predicted LTV in CAPI custom_data, and the Klaviyo renewal-milestone triggers. Most subscription DTC stores live on Growth permanently.
Starter$79

First-order tracking only. Not enough for subscription businesses.

Growth$199

Full subscription lifecycle: renewals, upgrades, churn, predicted LTV. 200k events/mo.

Business$499

Custom event taxonomy, sub-account isolation, dedicated CSM. 1M events/mo.

Enterprisecustom

VPC deploy, SLA, custom platform adapters, audit logs in your SIEM.

BUILT FOR SUBSCRIPTION

LTV RFM + churn prediction + residency.

Segment subscribers by recency, frequency, and monetization; predict churn before it happens; and choose EU or US data residency per workspace.

LTV RFM segmentation

Cohort scores that update with every renewal and upgrade.

Churn prediction

14-day churn probability scored on usage, tickets, and billing health.

EU/US residency

Provision workspaces in EU or US regions for compliance.

// GET STARTED

Stop bidding on first-order CPA. Bid on LTV instead.

Connect your subscription app, point the webhook at TrackLayer, watch renewal MRR start flowing to Meta within minutes. Reconcile with Stripe in week one.
$199/MO · 200K EVENTS · RENEWAL + CANCEL + UPGRADE FAN-OUT · NO CARD
// FAQ

Common subscription questions.

Will Meta actually use renewal value to bid better?
Yes — but only if you give it 4-8 weeks of renewal data. Meta's Advantage+ optimizer needs ~50 conversions per cohort signal to shift bidding meaningfully. Stores at $50k+ MRR usually see the lift around week 6. Smaller stores: 8-10 weeks. We track the dedup match rate + Meta's reported conversion volume so you can verify it's actually flowing.
What about Recharge / Bold's native Meta integration?
Recharge fires Meta Subscribe on the *first* charge only. It does not fire on renewals, upgrades, or cancels. So you get exactly the signal that misleads your campaigns the most: first-order CPA. TrackLayer fills the renewal/upgrade/cancel gap. Most merchants leave Recharge's first-order pixel on AND add TrackLayer; we dedup against it via event_id.
Does this work with Stripe Subscriptions natively (no Recharge / Bold)?
Yes. Point your Stripe webhook at TrackLayer's /v1/integrations/stripe/subscription-events endpoint. We read customer.subscription.* and invoice.payment_succeeded directly. This is the most common config for SaaS — see /solutions/saas for that specific case.
How does predicted LTV get computed?
We compute a rolling-cohort LTV per merchant: average revenue per surviving subscriber × predicted survival probability, conditioned on plan tier and acquisition channel. After 8+ weeks of data the model stabilizes. Before that, we use industry-typical curves as a Bayesian prior. The number is sent in CAPI custom_data.predicted_ltv — Meta uses it as a value-optimization input.
Can I exclude churned cohorts from prospecting audiences automatically?
Yes. subscription_canceled fires a custom event to Meta + Google + TikTok, and we ship a pre-built audience definition file: 'Excluded - Churned Last 90 Days'. Most merchants apply it to all prospecting campaigns. Net effect: ~12-18% lift in net-new-LTV per acquired customer because the algo stops re-targeting people who actively unsubscribed.
What about failed payments / dunning?
subscription.payment_failed fires payment_failed to Klaviyo (trigger dunning email) and *not* to Meta (it would muddy the signal). subscription.recovered (after a successful retry) fires subscription_renewed normally. So the ad platform sees clean renewal signal; Klaviyo sees the recovery flow.
Does this support B2B SaaS-style trial-to-paid conversion?
Yes — but the dedicated /solutions/saas page goes deeper on B2B SaaS (LinkedIn CAPI, CRM webhook bridge, longer attribution windows). Subscription is the right fit for DTC subscription boxes, membership sites, and consumer recurring revenue. SaaS is the right fit if your product is software with trial → activation → paid milestones.

We use essential cookies to keep the site secure and functional. Analytics and third-party tags run only with your consent. See our Cookie Policy.

We use essential cookies to keep the site secure and functional. Analytics and third-party tags run only with your consent. See our Cookie Policy.