---
title: "sequence_completed"
method: POST
path: "sequence_completed"
tags: ["Webhooks"]
---

# sequence_completed

`POST sequence_completed` (webhook)

A lead reached the end of an email sequence. Fires on the enrollment's
transition to `completed`, so it is one event per enrollment, not per step.

`contact_id` is the CRM contact behind the lead, when the lead was mirrored
from one — join on whichever id your workflow already holds.

## Payload

- object: Every outbound event uses this envelope. `data` is the only part that varies by event type.
  - `event` string: Event type. Also sent in the `X-Webhook-Event` header.
  - `timestamp` string, date-time: When the event was delivered — not necessarily when it occurred.
  - `data` object: Event-specific payload.
    - `enrollment_id` string, uuid
    - `sequence_id` string, uuid
    - `sequence_name` string
    - `lead_id` string, uuid
    - `contact_id` string, uuid, nullable
    - `lead_email` string
    - `current_step` integer
    - `status` string
    - `changed_at` string, date-time
  - `webhook_id` string, uuid: Delivery ID. Also sent as `X-Webhook-ID`. Use it to deduplicate retries.
  - `organization_id` string, uuid

## Acknowledgement `200`

Return any 2xx to acknowledge. A non-2xx or a timeout is treated as a failed
delivery and retried with backoff up to your configured `max_retries`.

---

[API](https://skmtc.dev/automatedclientacquisition/apis/aca-api.md) · [All operations](https://skmtc.dev/automatedclientacquisition/apis/aca-api/llms.txt) · [OpenAPI document](https://skmtc.dev/automatedclientacquisition/apis/aca-api/revisions/8f3e3b141311?raw)
