Paddle payments as timeline markers

Subscriptions and payments become events on the timeline. Need a visitor snippet first? Create one in Settings → API. For web attribution, pass customData.ek_visitor_id (localStorage ek_vid) into Paddle.Checkout.open.

What does not arrive

  • Any event type other than transaction.completed, subscription.activated and subscription.canceled. Those are acknowledged and ignored.
  • Past events. The timeline starts when the destination is created in Paddle. Paddle keeps its own event history for 90 days, but Erdi does not backfill it.
  • Revenue metrics. Only timeline events are written.

What arrives

transaction.completed. Kind subscription.

FieldWhat it is
kindsubscription
titlePayment completed.
external_idevent_id.
occurred_atoccurred_at.
meta.iddata.id, when present.

subscription.activated. Kind subscription.

FieldWhat it is
kindsubscription
titleSubscription started.
external_idevent_id.
occurred_atoccurred_at.
meta.iddata.id, when present.

subscription.canceled. Kind subscription.

FieldWhat it is
kindsubscription
titleSubscription canceled.
external_idevent_id.
occurred_atoccurred_at.
meta.iddata.id, when present.

How it authenticates

In the Paddle dashboard open Developer Tools → Notifications → New destination. Paste the Erdi endpoint URL as the destination URL — the exact endpoint, with no trailing redirect. Paddle expects a 200 within five seconds and treats a redirect as a failed delivery. Copy the destination's secret key from Paddle and paste it into Erdi. Select transaction.completed, subscription.activated and subscription.canceled.

Attribution

On transaction.completed, Erdi also reads data.custom_data.ek_visitor_id when present. Pass that value from the marketing snippet (localStorage ek_vid) when opening Checkout — key name must be exactly ek_visitor_id. Missing custom_data or the key is fine — timeline markers still write; no attribution marker. Walkthrough: Web attribution.

Signature

HMAC-SHA256 of ts colon the raw body, hex, header Paddle-Signature (ts= unix seconds; h1= hex). The key is the destination secret from Paddle.

Set it up under Settings → Webhooks in your project.

Get started with ErdiKnows