Journey Completed

Fires when a patient completes the journey intake flow. The eventType is journey_completed. Category: JOURNEY.

This event is per journey, not per patient. If you need per-patient semantics, dedupe on patient_id. Deduplicate deliveries on event_id.

journey_contact_captured is emitted as a safety net immediately before this event if contact had not already been claimed for the journey.

📘

v1 and v2 payloads are identical for journey events. These are journey-native events built on the flat, sanitized payload shape — there is no separate raw-envelope form.

Money fields are integer cents: 84900 = $849.00.

Field guarantees

FieldGuarantee
event_type, event_id, api_version, timestamp, timestamp_epoch, journey_id, affiliate_id, template_id, patient_marketing_consent, is_returning_patient, total_value_cents, currency, products, first_purchase, plan_type✅ Always present
template_display_name, journey_type, patient_id, patient_external_id, started_at, coupon_code, ecommerce_order_id, attribution, intake_form_instance_ids⚠️ Conditional — omitted when the underlying data is absent

Payload (v1 and v2)

{
  "event_type": "journey_completed",
  "event_id": "evt::example",
  "api_version": "2026-08-17",
  "timestamp": "2026-05-26T12:00:00.000Z",
  "timestamp_epoch": 1779796800,
  "journey_id": "jour::example",
  "ecommerce_order_id": "eco::example",
  "affiliate_id": "aff::example",
  "template_id": "jtmp::example",
  "template_display_name": "Wellness Program",
  "journey_type": "ONE_TIME",
  "patient_id": "pat::example",
  "patient_external_id": "ext-patient-123",
  "patient_marketing_consent": true,
  "is_returning_patient": false,
  "first_purchase": true,
  "plan_type": "one_time",
  "intake_form_instance_ids": ["aifi::example"],
  "started_at": "2026-05-26T12:00:00.000Z",
  "total_value_cents": 4999,
  "currency": "usd",
  "products": [
    {
      "product_variation_id": "epv::example",
      "quantity": 1,
      "unit_price_cents": 4999,
      "is_addon": false
    }
  ],
  "coupon_code": "WELCOME20",
  "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
event_idstring✅Retry-stable dedup key.
productsarray✅{ product_variation_id, quantity, unit_price_cents, is_addon } only. No display_name.
first_purchase, plan_typeboolean/string✅See Journey Checkout Started.
attributionobject⚠️See Attribution Passthrough.
intake_form_instance_idsstring[]⚠️AffiliateIntakeFormInstance ids (aifi::…) for custom intake forms on this journey (pre- and post-checkout). Omitted when no instances exist.