Blog

Pixel-perfect Meta CAPI events for subscription products

Subscriptions need separate events for trial, conversion, and renewal. Meta optimises differently for each.

For subscription businesses, sending a single "Subscribe" event to Meta is leaving optimisation on the table. The platform can use distinct signals for trial start, trial-to-paid conversion, and recurring renewal. Each one tells a different story to the auction.

The four events to send

EventWhen to fireValue
StartTrialUser starts free trial0 (with currency)
SubscribeFirst paid chargeFirst period revenue
PurchaseEach renewalRenewal amount
LeadNewsletter signup pre-trialEstimated LTV (optional)

Why Subscribe and Purchase are separate

Meta treats Subscribe as a high-intent acquisition event. Purchase signals a recurring transaction. Sending only Purchase for renewals tells Meta you are getting a constant stream of new customers, which inflates your apparent acquisition rate and trains the algorithm to optimise for the wrong moment.

Predicted LTV

For Subscribe events specifically, send predicted_ltv if your data team has a reliable LTV model. Meta uses this to optimise for high-value subscribers rather than just any subscriber.

{
  "event_name": "Subscribe",
  "custom_data": {
    "value": 49.00,
    "currency": "EUR",
    "predicted_ltv": 480.00
  }
}

Fire from your billing system

For Subscribe and Purchase, fire from your billing webhook (Stripe, Chargebee, Recurly), not from the website. Renewals do not happen in the browser; the user is not on your site when they happen. Wire your billing webhooks into sGTM and route from there.

For trials that do not convert

No event is needed for failed trials. Meta's algorithm uses the absence of a Subscribe event after a StartTrial to learn what kind of user converts. Sending a "TrialFailed" or "Lost" event provides no useful signal and can confuse the optimisation.

Custom audiences for retention

Trial-started-but-not-subscribed audiences are some of the highest-converting retargeting segments. Build them in Meta Ads Manager based on the events you fire. Without distinct StartTrial and Subscribe events, this segmentation is impossible.