{"schemaVersion":"2.0.0","defaultLanguage":"en","languages":["en"],"launchScreenId":"article_screen_ro9I4CXgL4mwgQBfGpol","screens":{"article_screen_ro9I4CXgL4mwgQBfGpol":{"id":"article_screen_ro9I4CXgL4mwgQBfGpol","name":"Every event Segmently sends to Facebook (Pixel + Conversions API)","tags":["article"],"screenType":"FlexibleLayout","position":{"x":0,"y":0},"content":{"canvas":{"background":{"kind":"solid","content":{"color":"#F7F8FA"}},"insets":{"top":0,"end":0,"bottom":0,"start":0},"webViewBackgroundColor":"#F7F8FA"},"animated":false,"offlineFirst":true,"flexibleLayout":{"scrollable":true,"insets":{"top":48,"end":32,"bottom":56,"start":32},"sections":[{"id":"intro","order":0,"kind":"Text","label":"Every event Segmently sends to Facebook (Pixel + Conversions API)","layout":{"heightKind":"auto"},"textContent":{"title":{"translations":{"en":"Every event Segmently sends to Facebook (Pixel + Conversions API)"},"kind":"static","appearance":{"align":"start","fontSize":30,"fontWeight":800,"lineHeight":36,"color":"#101828"}},"subtitle":{"translations":{"en":"The complete list of the events and parameters Segmently sends to Meta — the browser Pixel events as your visitor moves through the funnel, and the server Conversions API events from Stripe payments — so you know exactly what to build ads, audiences, and conversions on."},"kind":"static","appearance":{"align":"start","fontSize":17,"fontWeight":400,"lineHeight":26,"color":"#475467"}}}},{"id":"facebook-events-catalog-where-this-fits","order":1,"kind":"Text","label":"Where this fits","layout":{"heightKind":"auto","margin":{"top":28}},"textContent":{"title":{"translations":{"en":"Where this fits"},"kind":"static","appearance":{"align":"start","fontSize":21,"fontWeight":750,"lineHeight":28,"color":"#101828"}},"subtitle":{"translations":{"en":"This is reference material for the optional ad-tracking step of launching a funnel. It assumes you have already added the Facebook Pixel and Conversions API integrations (see the Facebook setup guide). Once both are connected, the events below start flowing automatically — you do not configure events one by one. Use this page to decide which event to optimize your Meta campaigns on and which to build Custom Audiences from. Event names are sent exactly as written here, so they appear under these same names in Meta Events Manager."},"kind":"static","appearance":{"align":"start","fontSize":16,"fontWeight":400,"lineHeight":25,"color":"#344054"}}}},{"id":"facebook-events-catalog-where-this-fits-image","order":2,"kind":"Media","label":"Enable the Facebook Pixel + Conversion API integrations in Analytics settings so these events flow","layout":{"heightKind":"fixed","heightValue":360,"padding":{"top":8,"end":0,"bottom":8,"start":0},"cornerRadius":{"uniform":12}},"mediaContent":{"kind":"Image","content":{"image":{"translations":{"en":{"original":"https://api.segmently.ai/assets/projects/eEZgfU4hvE9WtLkU30Dg/cli-assets/guide-images/20260601151456_expand-analytics-analytics-section/origin.png","name":"Enable the Facebook Pixel + Conversion API integrations in Analytics settings so these events flow"}},"appearance":{}}},"appearance":{"scaleMode":"scaleAspectFit","cornerRadii":{"uniform":12}}}},{"id":"facebook-events-catalog-two-streams","order":3,"kind":"Text","label":"Two streams: browser Pixel and server Conversions API","layout":{"heightKind":"auto","margin":{"top":20}},"textContent":{"title":{"translations":{"en":"Two streams: the browser Pixel and the server Conversions API"},"kind":"static","appearance":{"align":"start","fontSize":21,"fontWeight":750,"lineHeight":28,"color":"#101828"}},"subtitle":{"translations":{"en":"Segmently sends to Meta in two ways. The browser Pixel fires from the visitor's device as they move through the funnel (page views, button clicks, product selection, checkout). It reports rich funnel behaviour but can be blocked by ad blockers or tracking-prevention. The server Conversions API (CAPI) fires from Segmently's servers when Stripe confirms a payment event (purchase, subscription, cancellation, failed charge). It is the reliable money signal that does not depend on the browser. The two work together and are de-duplicated, so a purchase counted by both is only counted once."},"kind":"static","appearance":{"align":"start","fontSize":16,"fontWeight":400,"lineHeight":25,"color":"#344054"}}}},{"id":"facebook-events-catalog-pixel-how","order":4,"kind":"Text","label":"How browser Pixel events are sent","layout":{"heightKind":"auto","margin":{"top":20}},"textContent":{"title":{"translations":{"en":"How browser Pixel events are sent"},"kind":"static","appearance":{"align":"start","fontSize":21,"fontWeight":750,"lineHeight":28,"color":"#101828"}},"subtitle":{"translations":{"en":"All browser events are sent to your Pixel as custom events (technically fbq('trackCustom', ...)), keeping Segmently's own event names rather than renaming them to Meta's standard set. So in Events Manager you will see names like ScreenDidAppear and StripePurchase, not 'PageView' or 'Purchase', for the browser stream. They fire only when the Facebook Pixel integration is enabled and — if you use GDPR consent — only after the visitor accepts cookies. Because they keep their original names, you build Custom Conversions and audiences in Meta by matching on these exact names."},"kind":"static","appearance":{"align":"start","fontSize":16,"fontWeight":400,"lineHeight":25,"color":"#344054"}}}},{"id":"facebook-events-catalog-pixel-journey","order":5,"kind":"Text","label":"Browser Pixel events: journey and navigation","layout":{"heightKind":"auto","margin":{"top":20}},"textContent":{"title":{"translations":{"en":"Browser Pixel events: journey and navigation"},"kind":"static","appearance":{"align":"start","fontSize":21,"fontWeight":750,"lineHeight":28,"color":"#101828"}},"subtitle":{"translations":{"en":"These describe how a visitor moves through the funnel."},"kind":"static","appearance":{"align":"start","fontSize":16,"fontWeight":400,"lineHeight":25,"color":"#344054"}}}},{"id":"facebook-events-catalog-pixel-journey-list","order":6,"kind":"BulletList","label":"Journey and navigation","layout":{"heightKind":"auto","margin":{"top":20},"padding":{"top":16,"end":18,"bottom":16,"start":18},"background":{"kind":"solid","color":"#FFFFFF"},"cornerRadius":{"uniform":14}},"optionsListContent":{"selectionMode":"browse","columnLayout":"oneCol","itemLayout":"TitleSubtitle","appearance":{},"items":[{"id":"journey-startonboarding","title":{"translations":{"en":"StartOnboarding"},"kind":"static","appearance":{"fontSize":16,"fontWeight":700,"lineHeight":22,"color":"#101828"}},"subtitle":{"translations":{"en":"Parameters: projectName, projectId, onboardingName, onboardingId, versionId, and A/B test fields when present. Fires when the funnel is opened."},"kind":"static","appearance":{"fontSize":14,"fontWeight":400,"lineHeight":20,"color":"#475467"}},"variableValue":"journey_startonboarding"},{"id":"journey-screendidappear","title":{"translations":{"en":"ScreenDidAppear"},"kind":"static","appearance":{"fontSize":16,"fontWeight":700,"lineHeight":22,"color":"#101828"}},"subtitle":{"translations":{"en":"Parameters: screenID, screenName. Fires when a screen is shown."},"kind":"static","appearance":{"fontSize":14,"fontWeight":400,"lineHeight":20,"color":"#475467"}},"variableValue":"journey_screendidappear"},{"id":"journey-screendisappeared","title":{"translations":{"en":"ScreenDisappeared"},"kind":"static","appearance":{"fontSize":16,"fontWeight":700,"lineHeight":22,"color":"#101828"}},"subtitle":{"translations":{"en":"Parameters: screenID, screenName, the screen's input value, nextScreenId. Fires when a screen is left."},"kind":"static","appearance":{"fontSize":14,"fontWeight":400,"lineHeight":20,"color":"#475467"}},"variableValue":"journey_screendisappeared"},{"id":"journey-entryscreenrulematched","title":{"translations":{"en":"EntryScreenRuleMatched"},"kind":"static","appearance":{"fontSize":16,"fontWeight":700,"lineHeight":22,"color":"#101828"}},"subtitle":{"translations":{"en":"Parameters: screenID, screenName, paramKey, paramValue, operator, expectedValue, defaultScreenId, ruleIndex. Fires when an entry rule sends the visitor to a specific first screen based on a URL parameter."},"kind":"static","appearance":{"fontSize":14,"fontWeight":400,"lineHeight":20,"color":"#475467"}},"variableValue":"journey_entryscreenrulematched"},{"id":"journey-routetaken","title":{"translations":{"en":"RouteTaken"},"kind":"static","appearance":{"fontSize":16,"fontWeight":700,"lineHeight":22,"color":"#101828"}},"subtitle":{"translations":{"en":"Parameters: screenID, targetScreenId, actionKey. Fires when the visitor moves from one screen to the next."},"kind":"static","appearance":{"fontSize":14,"fontWeight":400,"lineHeight":20,"color":"#475467"}},"variableValue":"journey_routetaken"},{"id":"journey-pagehidden","title":{"translations":{"en":"PageHidden"},"kind":"static","appearance":{"fontSize":16,"fontWeight":700,"lineHeight":22,"color":"#101828"}},"subtitle":{"translations":{"en":"Parameters: screenID, timeOnScreenMs. Fires when the tab is hidden."},"kind":"static","appearance":{"fontSize":14,"fontWeight":400,"lineHeight":20,"color":"#475467"}},"variableValue":"journey_pagehidden"},{"id":"journey-funnelexited","title":{"translations":{"en":"FunnelExited"},"kind":"static","appearance":{"fontSize":16,"fontWeight":700,"lineHeight":22,"color":"#101828"}},"subtitle":{"translations":{"en":"Parameters: lastScreenId, journeyDurationMs, screensVisitedCount. Fires when the visitor leaves without finishing."},"kind":"static","appearance":{"fontSize":14,"fontWeight":400,"lineHeight":20,"color":"#475467"}},"variableValue":"journey_funnelexited"},{"id":"journey-onboardingfinished","title":{"translations":{"en":"OnboardingFinished"},"kind":"static","appearance":{"fontSize":16,"fontWeight":700,"lineHeight":22,"color":"#101828"}},"subtitle":{"translations":{"en":"Parameters: screenID, screenName. Fires when the funnel is completed."},"kind":"static","appearance":{"fontSize":14,"fontWeight":400,"lineHeight":20,"color":"#475467"}},"variableValue":"journey_onboardingfinished"}]}},{"id":"facebook-events-catalog-pixel-input","order":7,"kind":"Text","label":"Browser Pixel events: inputs, buttons, and extras","layout":{"heightKind":"auto","margin":{"top":20}},"textContent":{"title":{"translations":{"en":"Browser Pixel events: inputs, buttons, and extras"},"kind":"static","appearance":{"align":"start","fontSize":21,"fontWeight":750,"lineHeight":28,"color":"#101828"}},"subtitle":{"translations":{"en":"These capture interactions and answers."},"kind":"static","appearance":{"align":"start","fontSize":16,"fontWeight":400,"lineHeight":25,"color":"#344054"}}}},{"id":"facebook-events-catalog-pixel-input-list","order":8,"kind":"BulletList","label":"Inputs, buttons, and interaction","layout":{"heightKind":"auto","margin":{"top":20},"padding":{"top":16,"end":18,"bottom":16,"start":18},"background":{"kind":"solid","color":"#FFFFFF"},"cornerRadius":{"uniform":14}},"optionsListContent":{"selectionMode":"browse","columnLayout":"oneCol","itemLayout":"TitleSubtitle","appearance":{},"items":[{"id":"input-userupdatedvalue","title":{"translations":{"en":"UserUpdatedValue"},"kind":"static","appearance":{"fontSize":16,"fontWeight":700,"lineHeight":22,"color":"#101828"}},"subtitle":{"translations":{"en":"Parameters: screenID, screenName, the value, blockType, dataKey. Fires when the visitor changes an input."},"kind":"static","appearance":{"fontSize":14,"fontWeight":400,"lineHeight":20,"color":"#475467"}},"variableValue":"input_userupdatedvalue"},{"id":"input-fieldinputvalueerror","title":{"translations":{"en":"FieldInputValueError"},"kind":"static","appearance":{"fontSize":16,"fontWeight":700,"lineHeight":22,"color":"#101828"}},"subtitle":{"translations":{"en":"Parameters: screenID, the value, errorMessage. Fires when an input fails validation, e.g. a malformed email."},"kind":"static","appearance":{"fontSize":14,"fontWeight":400,"lineHeight":20,"color":"#475467"}},"variableValue":"input_fieldinputvalueerror"},{"id":"input-variableupdated","title":{"translations":{"en":"VariableUpdated"},"kind":"static","appearance":{"fontSize":16,"fontWeight":700,"lineHeight":22,"color":"#101828"}},"subtitle":{"translations":{"en":"Parameters: variableId, variableName, variableType, value. Fires when a funnel variable changes."},"kind":"static","appearance":{"fontSize":14,"fontWeight":400,"lineHeight":20,"color":"#475467"}},"variableValue":"input_variableupdated"},{"id":"input-firstfooterbuttonpressed","title":{"translations":{"en":"FirstFooterButtonPressed and SecondFooterButtonPressed"},"kind":"static","appearance":{"fontSize":16,"fontWeight":700,"lineHeight":22,"color":"#101828"}},"subtitle":{"translations":{"en":"Parameters: screenID, screenName. Fire for the main and secondary footer buttons."},"kind":"static","appearance":{"fontSize":14,"fontWeight":400,"lineHeight":20,"color":"#475467"}},"variableValue":"input_firstfooterbuttonpressed"},{"id":"input-navbarbuttonpressed","title":{"translations":{"en":"LeftNavbarButtonPressed, RightNavbarButtonPressed, CloseNavbarButtonPressed"},"kind":"static","appearance":{"fontSize":16,"fontWeight":700,"lineHeight":22,"color":"#101828"}},"subtitle":{"translations":{"en":"Fire for the back, skip, and close buttons in the header."},"kind":"static","appearance":{"fontSize":14,"fontWeight":400,"lineHeight":20,"color":"#475467"}},"variableValue":"input_navbarbuttonpressed"},{"id":"input-abtestloaded","title":{"translations":{"en":"AbTestLoaded"},"kind":"static","appearance":{"fontSize":16,"fontWeight":700,"lineHeight":22,"color":"#101828"}},"subtitle":{"translations":{"en":"Parameters: abTestId, abTestName, abTestVariantId, abTestVariantName. Fires when the visitor is placed in an A/B variant."},"kind":"static","appearance":{"fontSize":14,"fontWeight":400,"lineHeight":20,"color":"#475467"}},"variableValue":"input_abtestloaded"},{"id":"input-cookiespressed","title":{"translations":{"en":"AcceptCookiesPressed and DeclineCookiesPressed"},"kind":"static","appearance":{"fontSize":16,"fontWeight":700,"lineHeight":22,"color":"#101828"}},"subtitle":{"translations":{"en":"Fire for the consent banner choices."},"kind":"static","appearance":{"fontSize":14,"fontWeight":400,"lineHeight":20,"color":"#475467"}},"variableValue":"input_cookiespressed"},{"id":"input-downsaletriggered","title":{"translations":{"en":"DownsaleTriggered"},"kind":"static","appearance":{"fontSize":16,"fontWeight":700,"lineHeight":22,"color":"#101828"}},"subtitle":{"translations":{"en":"Parameters: screenID, cancelActionKey. Fires when a downsale offer is shown after a cancel."},"kind":"static","appearance":{"fontSize":14,"fontWeight":400,"lineHeight":20,"color":"#475467"}},"variableValue":"input_downsaletriggered"}]}},{"id":"facebook-events-catalog-pixel-buy","order":9,"kind":"Text","label":"Browser Pixel events: paywall and payment","layout":{"heightKind":"auto","margin":{"top":20}},"textContent":{"title":{"translations":{"en":"Browser Pixel events: paywall and payment"},"kind":"static","appearance":{"align":"start","fontSize":21,"fontWeight":750,"lineHeight":28,"color":"#101828"}},"subtitle":{"translations":{"en":"These are the highest-value browser signals because they show buying intent. Note: these browser payment events can be lost to ad blockers, which is exactly why the server Conversions API events below exist."},"kind":"static","appearance":{"align":"start","fontSize":16,"fontWeight":400,"lineHeight":25,"color":"#344054"}}}},{"id":"facebook-events-catalog-pixel-buy-list","order":10,"kind":"BulletList","label":"Paywall and payment","layout":{"heightKind":"auto","margin":{"top":20},"padding":{"top":16,"end":18,"bottom":16,"start":18},"background":{"kind":"solid","color":"#FFFFFF"},"cornerRadius":{"uniform":14}},"optionsListContent":{"selectionMode":"browse","columnLayout":"oneCol","itemLayout":"TitleSubtitle","appearance":{},"items":[{"id":"buy-productselected","title":{"translations":{"en":"ProductSelected"},"kind":"static","appearance":{"fontSize":16,"fontWeight":700,"lineHeight":22,"color":"#101828"}},"subtitle":{"translations":{"en":"Parameters: screenID, productId, price, currency. Fires when the visitor picks a plan on the paywall."},"kind":"static","appearance":{"fontSize":14,"fontWeight":400,"lineHeight":20,"color":"#475467"}},"variableValue":"buy_productselected"},{"id":"buy-purchasefooterbuttonpressed","title":{"translations":{"en":"PurchaseFooterButtonPressed"},"kind":"static","appearance":{"fontSize":16,"fontWeight":700,"lineHeight":22,"color":"#101828"}},"subtitle":{"translations":{"en":"Parameters: screenID, productId, price_id, offer_type, trial_days, paywall_type, and buy_intent_status ('accepted' or 'error'). Fires when the visitor presses Buy / Continue to pay. This is your best browser-side intent signal."},"kind":"static","appearance":{"fontSize":14,"fontWeight":400,"lineHeight":20,"color":"#475467"}},"variableValue":"buy_purchasefooterbuttonpressed"},{"id":"buy-stripecheckoutsessioncreated","title":{"translations":{"en":"StripeCheckoutSessionCreated"},"kind":"static","appearance":{"fontSize":16,"fontWeight":700,"lineHeight":22,"color":"#101828"}},"subtitle":{"translations":{"en":"Parameters: sessionId, paywallProductId. Fires when a redirect Stripe Checkout session opens."},"kind":"static","appearance":{"fontSize":14,"fontWeight":400,"lineHeight":20,"color":"#475467"}},"variableValue":"buy_stripecheckoutsessioncreated"},{"id":"buy-stripepaymentintentsuccess","title":{"translations":{"en":"StripePaymentIntentSuccess"},"kind":"static","appearance":{"fontSize":16,"fontWeight":700,"lineHeight":22,"color":"#101828"}},"subtitle":{"translations":{"en":"Parameters: paymentIntentId, mode. Fires when a card or wallet payment is confirmed in the funnel."},"kind":"static","appearance":{"fontSize":14,"fontWeight":400,"lineHeight":20,"color":"#475467"}},"variableValue":"buy_stripepaymentintentsuccess"},{"id":"buy-stripepurchase","title":{"translations":{"en":"StripePurchase"},"kind":"static","appearance":{"fontSize":16,"fontWeight":700,"lineHeight":22,"color":"#101828"}},"subtitle":{"translations":{"en":"Parameters: productId, mode ('embedded' / 'upsell_frictionless' / 'redirect'). Fires when an embedded or one-click purchase succeeds."},"kind":"static","appearance":{"fontSize":14,"fontWeight":400,"lineHeight":20,"color":"#475467"}},"variableValue":"buy_stripepurchase"},{"id":"buy-stripesubscriptioncreated","title":{"translations":{"en":"StripeSubscriptionCreated"},"kind":"static","appearance":{"fontSize":16,"fontWeight":700,"lineHeight":22,"color":"#101828"}},"subtitle":{"translations":{"en":"Parameters: subscriptionId, mode. Fires when an embedded subscription is created."},"kind":"static","appearance":{"fontSize":14,"fontWeight":400,"lineHeight":20,"color":"#475467"}},"variableValue":"buy_stripesubscriptioncreated"},{"id":"buy-stripecheckoutsessionsuccess","title":{"translations":{"en":"StripeCheckoutSessionSuccess and StripeCheckoutSessionCancel"},"kind":"static","appearance":{"fontSize":16,"fontWeight":700,"lineHeight":22,"color":"#101828"}},"subtitle":{"translations":{"en":"Fire when the visitor returns from hosted Checkout as paid or cancelled."},"kind":"static","appearance":{"fontSize":14,"fontWeight":400,"lineHeight":20,"color":"#475467"}},"variableValue":"buy_stripecheckoutsessionsuccess"},{"id":"buy-stripepaymentelementerror","title":{"translations":{"en":"StripePaymentElementError"},"kind":"static","appearance":{"fontSize":16,"fontWeight":700,"lineHeight":22,"color":"#101828"}},"subtitle":{"translations":{"en":"Parameters: error, mode. Fires when a payment error occurs."},"kind":"static","appearance":{"fontSize":14,"fontWeight":400,"lineHeight":20,"color":"#475467"}},"variableValue":"buy_stripepaymentelementerror"}]}},{"id":"facebook-events-catalog-capi-conversions","order":11,"kind":"Text","label":"Server Conversions API events (from Stripe)","layout":{"heightKind":"auto","margin":{"top":20}},"textContent":{"title":{"translations":{"en":"Server Conversions API events (from Stripe)"},"kind":"static","appearance":{"align":"start","fontSize":21,"fontWeight":750,"lineHeight":28,"color":"#101828"}},"subtitle":{"translations":{"en":"These fire from Segmently's servers when Stripe confirms money has moved. Important: these are the names Segmently uses internally — what you see in Meta is the name after the adapter maps it. In particular, RecurringPayment is the internal name for a renewal, but the Facebook adapter remaps it to Purchase, so subscription renewals never appear under a distinct 'RecurringPayment' name in Meta — they show up as Purchase. Purchase and Subscribe pass through under their own names because they match Meta's standard set. One extra detail: when a subscription is created and is active or in trial, Segmently also sends the raw customer.subscription.created event alongside Subscribe, so analytics teams can report on both — your campaigns should still optimize on Subscribe. If the creation status is 'incomplete' (payment not yet confirmed), the raw created event is skipped and Subscribe fires later on the incomplete-to-active transition, so not every creation emits the dual raw event."},"kind":"static","appearance":{"align":"start","fontSize":16,"fontWeight":400,"lineHeight":25,"color":"#344054"}}}},{"id":"facebook-events-catalog-capi-conversions-list","order":12,"kind":"BulletList","label":"Server events","layout":{"heightKind":"auto","margin":{"top":20},"padding":{"top":16,"end":18,"bottom":16,"start":18},"background":{"kind":"solid","color":"#FFFFFF"},"cornerRadius":{"uniform":14}},"optionsListContent":{"selectionMode":"browse","columnLayout":"oneCol","itemLayout":"TitleSubtitle","appearance":{},"items":[{"id":"server-purchase","title":{"translations":{"en":"Purchase"},"kind":"static","appearance":{"fontSize":16,"fontWeight":700,"lineHeight":22,"color":"#101828"}},"subtitle":{"translations":{"en":"Parameters: value, currency. A payment was completed — a one-time purchase, the first subscription charge, or a paid-trial fee. Sent under its own name in Meta."},"kind":"static","appearance":{"fontSize":14,"fontWeight":400,"lineHeight":20,"color":"#475467"}},"variableValue":"server_purchase"},{"id":"server-subscribe","title":{"translations":{"en":"Subscribe"},"kind":"static","appearance":{"fontSize":16,"fontWeight":700,"lineHeight":22,"color":"#101828"}},"subtitle":{"translations":{"en":"A subscription was created and is active or in trial. Sent under its own name in Meta."},"kind":"static","appearance":{"fontSize":14,"fontWeight":400,"lineHeight":20,"color":"#475467"}},"variableValue":"server_subscribe"},{"id":"server-recurringpayment","title":{"translations":{"en":"RecurringPayment (appears in Meta as Purchase)"},"kind":"static","appearance":{"fontSize":16,"fontWeight":700,"lineHeight":22,"color":"#101828"}},"subtitle":{"translations":{"en":"A subscription renewal was charged (and the first charge after a 'fake' trial, where the original purchase was already counted). RecurringPayment is the internal name only; the Facebook adapter remaps it to Purchase, so renewals reach Meta as Purchase, not as a distinct 'RecurringPayment' event."},"kind":"static","appearance":{"fontSize":14,"fontWeight":400,"lineHeight":20,"color":"#475467"}},"variableValue":"server_recurringpayment"},{"id":"server-cancelsubscription","title":{"translations":{"en":"CancelSubscription"},"kind":"static","appearance":{"fontSize":16,"fontWeight":700,"lineHeight":22,"color":"#101828"}},"subtitle":{"translations":{"en":"A subscription was cancelled. Sent under its own name in Meta."},"kind":"static","appearance":{"fontSize":14,"fontWeight":400,"lineHeight":20,"color":"#475467"}},"variableValue":"server_cancelsubscription"},{"id":"server-paymentfailed","title":{"translations":{"en":"PaymentFailed"},"kind":"static","appearance":{"fontSize":16,"fontWeight":700,"lineHeight":22,"color":"#101828"}},"subtitle":{"translations":{"en":"A charge failed — a declined card or a failed renewal. Sent under its own name in Meta."},"kind":"static","appearance":{"fontSize":14,"fontWeight":400,"lineHeight":20,"color":"#475467"}},"variableValue":"server_paymentfailed"}]}},{"id":"facebook-events-catalog-mapping","order":13,"kind":"Text","label":"How each Stripe moment becomes an event","layout":{"heightKind":"auto","margin":{"top":20}},"textContent":{"title":{"translations":{"en":"How each Stripe moment becomes an event"},"kind":"static","appearance":{"align":"start","fontSize":21,"fontWeight":750,"lineHeight":28,"color":"#101828"}},"subtitle":{"translations":{"en":"Segmently translates Stripe's webhooks into the events above carefully, so nothing is double-counted: • A completed hosted Checkout for a one-time product → Purchase. • A confirmed payment inside the funnel (embedded card or wallet) → Purchase. • The first subscription invoice when an amount was actually charged (a paid-trial fee, or a Checkout subscription's first payment) → Purchase; if that first invoice is a free trial charging nothing, it is skipped. • The first charge after a real trial ends → Purchase (this is when money first moves). • Any later subscription renewal → RecurringPayment internally, which the Facebook adapter remaps to Purchase, so in Meta a renewal also reports as Purchase. • A subscription becoming active or in trial → Subscribe. • A subscription cancelled → CancelSubscription. • A failed charge or failed renewal → PaymentFailed. The takeaway: Purchase marks real revenue (including renewals once they reach Meta), and Subscribe marks the subscription decision."},"kind":"static","appearance":{"align":"start","fontSize":16,"fontWeight":400,"lineHeight":25,"color":"#344054"}}}},{"id":"facebook-events-catalog-data-attached","order":14,"kind":"Text","label":"What customer and value data is attached","layout":{"heightKind":"auto","margin":{"top":20}},"textContent":{"title":{"translations":{"en":"What customer and value data is attached"},"kind":"static","appearance":{"align":"start","fontSize":21,"fontWeight":750,"lineHeight":28,"color":"#101828"}},"subtitle":{"translations":{"en":"The server Conversions API events carry the data Meta uses to match a conversion to the right person and value. Personal details are securely hashed (SHA-256) before sending: em (email), ph (phone), fn (first name), ln (last name), and external_id (your Segmently visitor id). Browser-matching signals are sent as-is because Meta expects them raw: fbp and fbc (the Pixel's browser-id and click-id cookies), client_ip_address, and client_user_agent. The purchase itself carries value and currency, plus content_ids and your funnel metadata (UTM tags, fbclid, product and offer details) forwarded under meta_ names. This is why collecting the email before the paywall and mapping the ad identifiers at publish matter — they directly improve how many conversions Meta can match."},"kind":"static","appearance":{"align":"start","fontSize":16,"fontWeight":400,"lineHeight":25,"color":"#344054"}}}},{"id":"facebook-events-catalog-dedup","order":15,"kind":"Text","label":"Why a purchase is not counted twice","layout":{"heightKind":"auto","margin":{"top":20}},"textContent":{"title":{"translations":{"en":"Why a purchase is not counted twice"},"kind":"static","appearance":{"align":"start","fontSize":21,"fontWeight":750,"lineHeight":28,"color":"#101828"}},"subtitle":{"translations":{"en":"Because both the browser Pixel and the server Conversions API can report the same sale, Segmently gives each server event a stable event_id derived from the Stripe event (in the form evt_<stripe-event-id>) and includes external_id (your visitor id). Meta uses these to recognise the browser and server reports as the same conversion and merge them. The result: better match quality from the server signal, without inflating your numbers. You do not need to configure anything for this — it is automatic once the Pixel ID matches between your Pixel and Conversions API integrations."},"kind":"static","appearance":{"align":"start","fontSize":16,"fontWeight":400,"lineHeight":25,"color":"#344054"}}}},{"id":"facebook-events-catalog-preconditions","order":16,"kind":"Text","label":"What makes these events fire and match","layout":{"heightKind":"auto","margin":{"top":20}},"textContent":{"title":{"translations":{"en":"What makes these events fire and match"},"kind":"static","appearance":{"align":"start","fontSize":21,"fontWeight":750,"lineHeight":28,"color":"#101828"}},"subtitle":{"translations":{"en":"Three launch-step settings decide whether these events actually fire and how well Meta can match them: • Enable both integrations — the Facebook Pixel and Conversions API integrations must be turned on in your Analytics settings; until they are, none of the events above leave Segmently. • Collect and bind the email — add an email screen before the paywall, create a variable for it, and select that variable as the Web Placement's stripe.emailVariableId, so the visitor's email reaches Stripe and is forwarded (hashed) as the strongest match key on the server Purchase / Subscribe events. • Map the ad identifiers at publish — map fbp and fbc into Stripe metadata at publish (the dotted facebook.fbp / facebook.fbc keys via stripeMappings); without them the server events lose the browser-id and click-id signals and Meta's match quality drops. Get these three right and the events below fire reliably and match to the right person."},"kind":"static","appearance":{"align":"start","fontSize":16,"fontWeight":400,"lineHeight":25,"color":"#344054"}}}},{"id":"facebook-events-catalog-optimize","order":17,"kind":"Text","label":"Which events to optimize ads on","layout":{"heightKind":"auto","margin":{"top":20}},"textContent":{"title":{"translations":{"en":"Which events to optimize ads on"},"kind":"static","appearance":{"align":"start","fontSize":21,"fontWeight":750,"lineHeight":28,"color":"#101828"}},"subtitle":{"translations":{"en":"For most paid funnels: optimize purchase-driven campaigns on Purchase (the reliable server revenue signal) and, for subscription products, on Subscribe. Because subscription renewals reach Meta as Purchase (RecurringPayment is remapped to Purchase by the adapter), your Purchase volume already includes renewals — there is no separate renewal event in Meta to optimize on. Use PurchaseFooterButtonPressed (buy intent) as an upper-funnel signal when you do not yet have enough purchases for Meta to learn from. Build Custom Audiences and retargeting from the journey events — StartOnboarding, ScreenDidAppear on your paywall screen, and ProductSelected — to re-reach people who showed interest but did not buy. Avoid optimizing on the browser StripePurchase alone, since ad blockers can suppress it; the server Purchase is the dependable choice."},"kind":"static","appearance":{"align":"start","fontSize":16,"fontWeight":400,"lineHeight":25,"color":"#344054"}}}},{"id":"facebook-events-catalog-ownership","order":18,"kind":"Text","label":"Who does what","layout":{"heightKind":"auto","margin":{"top":20}},"textContent":{"title":{"translations":{"en":"Who does what"},"kind":"static","appearance":{"align":"start","fontSize":21,"fontWeight":750,"lineHeight":28,"color":"#101828"}},"subtitle":{"translations":{"en":"Segmently sends every event above automatically once your Pixel and Conversions API are connected — you do not wire events individually. In Meta you do the campaign work: pick the optimization event (Purchase or Subscribe), define Custom Conversions or audiences on the event names listed here, and confirm events are arriving in Events Manager (use a Test Event Code while testing). Remember the server Conversions API sends payment events only; the full funnel behaviour comes from the browser Pixel. The two complement each other."},"kind":"static","appearance":{"align":"start","fontSize":16,"fontWeight":400,"lineHeight":25,"color":"#344054"}}}},{"id":"facebook-events-catalog-next","order":19,"kind":"Text","label":"Next","layout":{"heightKind":"auto","margin":{"top":20}},"textContent":{"title":{"translations":{"en":"Next"},"kind":"static","appearance":{"align":"start","fontSize":21,"fontWeight":750,"lineHeight":28,"color":"#101828"}},"subtitle":{"translations":{"en":"If you have not connected Meta yet, open the Facebook Pixel and Conversions API setup guide to add both integrations and the matching identifiers. Running TikTok ads too? The TikTok events catalog lists the equivalent events and the names TikTok expects."},"kind":"static","appearance":{"align":"start","fontSize":16,"fontWeight":400,"lineHeight":25,"color":"#344054"}}}}]}}}},"metadata":{"kind":"article","projectId":"arswew63RwQr6V4Ekb1Z","articleId":"ro9I4CXgL4mwgQBfGpol","alias":"facebook-events-catalog","articlePresentation":{"version":1,"profiles":{"standard":{"containerMaxWidth":1120,"contentInsets":{"top":48,"end":32,"bottom":56,"start":32},"sectionPaddingScale":1,"textScale":1},"laptop":{"containerMaxWidth":960,"contentInsets":{"top":44,"end":40,"bottom":52,"start":40},"sectionPaddingScale":0.96,"textScale":0.96},"tablet":{"containerMaxWidth":760,"contentInsets":{"top":36,"end":28,"bottom":44,"start":28},"sectionPaddingScale":0.9,"textScale":0.92,"titleTextScale":0.9},"phone":{"containerMaxWidth":"100%","contentInsets":{"top":28,"end":16,"bottom":36,"start":16},"sectionPaddingScale":0.82,"textScale":0.88,"titleTextScale":0.82}}}},"webViewDefaultBackgroundColor":"#F7F8FA","projectAnalytics":{"consentManagement":{"enabled":true,"bannerText":"We use cookies to improve your experience and analyze site usage.","privacyPolicyUrl":"","defaultConsent":"denied"},"integrations":[{"platform":"segmently_internal","name":"Segmently Analytics","enabled":true,"config":{"mode":"http"},"createdAt":"2026-05-26T13:53:00.398Z","updatedAt":"2026-05-26T13:53:00.398Z","id":"int_mpmp3jsm_aij2kz"}]}}