Blog
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.
| Event | When to fire | Value |
|---|---|---|
| StartTrial | User starts free trial | 0 (with currency) |
| Subscribe | First paid charge | First period revenue |
| Purchase | Each renewal | Renewal amount |
| Lead | Newsletter signup pre-trial | Estimated LTV (optional) |
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.
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
}
}
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.
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.
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.