---
title: "Trigger event for subscriber"
method: POST
path: "/subscribers/events"
tags: ["Subscribers"]
---

# Trigger event for subscriber

`POST /subscribers/events`

Triggers an event for a subscriber. Creates the subscriber if they don't exist and applies the workspace default lists setting. Creates the event definition if it doesn't exist. When the workspace has double opt-in enabled, a brand-new subscriber is created pending confirmation, the confirmation email is queued, and matching sequences wait at their trigger until the subscriber confirms.

## Request body

- object
  - `email` string, email — Required when creating a new subscriber. Optional when externalId identifies an existing subscriber.
  - `externalId` string — Customer-owned app/customer/user ID
  - `firstName` string — First name to set if creating the subscriber.
  - `lastName` string — Last name to set if creating the subscriber.
  - `event` string, required
  - `properties` object — Event properties/metadata
  - `customAttributes` object — Optional attributes to set on the subscriber if created
  - `occurredAt` string, date-time — When the event actually happened. Defaults to now. More than an hour in the past records it as history - stored with the real timestamp and counted by segments, but running no sequences, sync rules, waiting steps, goal conversions or webhooks, and the response carries historical=true. Older than the 5-year event retention window is rejected with 400.
  - `eventId` string — Caller-owned event ID. Re-sending the same ID for a historical event writes nothing new, so an interrupted import is safe to re-run.

## Response `200`

Event triggered successfully

- object
  - `success` boolean
  - `subscriber` object
    - `id` string
    - `email` string, nullable — Null for phone-only (SMS) contacts.
    - `created` boolean
  - `event` object
    - `id` string — The created event record ID
    - `name` string
    - `definitionCreated` boolean — Whether the event definition was newly created
  - `sideEffectFailures` string[] — Present when the event was recorded but one or more side-effect stages (e.g. apply-sync-rules, trigger-event-automations) failed. Retry-sensitive callers should treat these as partial failures.
  - `optIn` object — Present when this event created a brand-new subscriber while workspace double opt-in is enabled. The subscriber stays pending and matching sequences wait until they confirm.
    - `required` boolean
    - `emailQueued` boolean

## Other responses

- `401` — Unauthorized
- `500` — Internal server error

---

[API](https://skmtc.net/sequenzy/apis/sequenzy-api.md) · [All operations](https://skmtc.net/sequenzy/apis/sequenzy-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sequenzy/sequenzy-api/versions/af1cf9620482/schema)
