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

# Trigger multiple events for subscriber

`POST /subscribers/events/bulk`

Triggers multiple events for a subscriber. Creates the subscriber if they don't exist and applies the workspace default lists setting. Creates event definitions if they don't exist. Events are processed independently, so an error response may still include events that were already triggered. When the workspace has double opt-in enabled, a brand-new subscriber is created pending confirmation, a single confirmation email is queued for the request, 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.
  - `events` object[], required
    - `name` string, required
    - `properties` object
    - `occurredAt` string, date-time — When this event actually happened. Defaults to now. When every event in the batch is more than an hour old the batch is imported as history in one idempotent write, running no sequences, sync rules, waiting steps, goal conversions or webhooks.
    - `eventId` string — Caller-owned event ID that makes a re-run idempotent.
  - `customAttributes` object

## Response `200`

Events triggered successfully

- object
  - `success` boolean
  - `subscriber` object
    - `id` string
    - `email` string, nullable — Null for phone-only (SMS) contacts.
    - `created` boolean
  - `events` object[]
    - `id` string
    - `name` string
    - `definitionCreated` boolean
    - `sideEffectFailures` string[] — Present when this event was recorded but one or more side-effect stages (e.g. apply-sync-rules, trigger-event-automations) failed.
  - `optIn` object — Present when this request 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)
