Subscription Renewed

Fires when a subscription renewal payment is successfully processed. The eventType is subscription_renewed. Categories: COMMERCE, PAYMENT.

This is a recurring charge, not a new purchase. first_purchase is always false. A renewal must never be attributed as a new purchase. Deduplicate on event_id. Money is integer cents (84900 = $849.00).

Field guarantees

FieldGuarantee
subscription_id, subscription_status, total_value_cents, currency, ecommerce_order_id, commerce_status, payment_status, first_purchase, cycle_number, plan_type✅ Always present
attribution⚠️ Omitted when no tracking data was captured
journey_id⚠️ Omitted when no journey relationship is resolved

Payload (v2)

{
  "event_type": "subscription_renewed",
  "event_id": "evt::example",
  "api_version": "2026-08-17",
  "timestamp": "2026-05-26T12:00:00.000Z",
  "timestamp_epoch": 1779796800,
  "affiliate_id": "aff::example",
  "patient_id": "pat::example",
  "patient_external_id": "ext-patient-123",
  "patient_marketing_consent": false,
  "is_returning_patient": true,
  "subscription_id": "esub::example",
  "subscription_status": "active",
  "total_value_cents": 4999,
  "currency": "usd",
  "ecommerce_order_id": "eord::example",
  "commerce_status": "paid",
  "payment_status": "collected",
  "first_purchase": false,
  "cycle_number": 6,
  "plan_type": "quarterly",
  "journey_id": "jour::example",
  "attribution": {
    "first": {
      "captured_at": "2026-01-04T10:22:31.000Z",
      "landing_url": "https://shop.example.com/get-started",
      "params": {
        "utm_source": "google",
        "gclid": "Cj0KCQexample"
      }
    },
    "touch_count": 2,
    "visitor_id": "550e8400-e29b-41d4-a716-446655440000"
  }
}
FieldTypeAlways?Notes
first_purchaseboolean✅Always false. Do not treat this event as a new sale.
cycle_numberinteger✅Billing cycle that just succeeded (e.g. 6).
plan_typestring✅Cadence of this renewal order: monthly · quarterly · sixmonth · annual · one_time. Not the original checkout plan if the subscription later changed steps.
payment_statusstring✅Clinical renewals: authorized is a hold, not collected funds. Non-clinical: collected.
ecommerce_order_idstring✅The renewal order for this cycle — not the parent checkout order.
attributionobject⚠️Copied from the parent checkout. Month-6 keeps original first.landing_url / first.params. See Attribution Passthrough.