Ecommerce Order Paid

Fires when an ecommerce order payment is collected. The eventType is ecommerce_order_paid. Categories: COMMERCE, PAYMENT.

Use first_purchase to distinguish a new sale from a renewal order that also pays. A renewal must never be attributed as a new purchase. Deduplicate on event_id. Money is integer cents (84900 = $849.00).

Field guarantees

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

Payload (v2)

{
  "event_type": "ecommerce_order_paid",
  "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": false,
  "ecommerce_order_id": "eord::example",
  "commerce_status": "processing",
  "total_value_cents": 4999,
  "currency": "usd",
  "payment_status": "collected",
  "first_purchase": true,
  "plan_type": "one_time",
  "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": 1,
    "visitor_id": "550e8400-e29b-41d4-a716-446655440000"
  }
}
FieldTypeAlways?Notes
ecommerce_order_id, commerce_statusstring✅
total_value_cents, currencynumber/string✅Integer cents. 4999 = $49.99.
first_purchaseboolean✅true unless metadata.isRenewal on this order.
plan_typestring✅monthly · quarterly · sixmonth · annual · one_time. Per this order.
payment_statusstring⚠️e.g. collected
is_returning_patientboolean✅Per-patient, not per-order. true when another ecommerce order is already paid, processing, or completed.
attributionobject⚠️See Attribution Passthrough.