Overview
Encore measures offer impact by joining your subscription events back to the offer exposures it recorded for the same person. Until those events reach Encore, the Analytics section of your dashboard shows no data. The whole integration reduces to one rule: one stable customer id everywhere.Using a third-party subscription manager? If RevenueCat manages your subscriptions, it can carry these events for you: see RevenueCat.
Step 1: Identify before you show offers
Callidentify() with your own stable customer id, before any offer is presented:
getAppAccountId() returns. Without identify(), the SDK falls back to an auto-generated anonymous id that your server cannot reproduce later, so those exposures can never link back. Identify as soon as you know who the user is, and always before show().
Step 2: Forward subscription events with the same id
Whenever a subscription event happens in your billing system (subscribe, renew, cancel, and so on), your server POSTs it tohttps://api.encorekit.com/encore/webhooks/encore with:
user.app_account_id: the same customer id from step 1, byte-identicalsubscription.original_transaction_id: your biller’s subscription idevent_type: the matching Encore verb, for exampledid_subscribeordid_renew
buildEncoreHeaders signing helper, the payload schema, the verb list, and responses) lives in the Webhook Ingestion reference. This step only composes it:
Gotchas
- Byte-identical id.
user.app_account_idmust equal theidentify()id exactly; any prefixing, casing, or trimming difference breaks the join silently. - Identify before show, not after. Exposures recorded before
identify()are keyed to the anonymous id and are not retro-linked; a late identify leaves them unattributed. - Resolve the id server-side. Read the customer id from your own auth session or subscription records, never from the client request body: a spoofed id attributes someone else’s subscription.
- Every event carries the id.
user.app_account_idis required on every event, not just the first; an event without it is acknowledged but dropped. See how the join works. - Use the canonical verbs. An unrecognized
event_typeis accepted and stored but cannot be projected into measurement; map your biller’s events to the verb list.
Next Steps
You’ve completed the Encore web integration. Here’s what to explore next:- Encore Dashboard - Monitor analytics and manage your app
- Webhook Ingestion reference - The full contract this step forwards to
- Reduce Churn - The use case this integration serves, and the moments to target