---
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
  - `customAttributes` object

## Response `200`

Events triggered successfully

- object
  - `success` boolean
  - `subscriber` object
    - `id` string
    - `email` string
    - `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

## Changes

- **2026-07-17** `0e8e15b16f1e` — 1 info
  - added the optional property `events/items/sideEffectFailures` to the response with the `200` status
- **2026-06-12** `f9a826460811` — 1 info
  - added the optional property `optIn` to the response with the `200` status
- **2026-05-20** `1139fdf1ac6b` — 2 info
  - added the new optional request property `firstName`
  - added the new optional request property `lastName`
- **2026-05-05** `5449b620579f` — 2 info
  - added the new optional request property `externalId`
  - the request property `email` became optional

[Change history](https://skmtc.dev/sequenzy/apis/sequenzy-api/changes/subscribers/events/bulk/post.md)

---

[API](https://skmtc.dev/sequenzy/apis/sequenzy-api.md) · [All operations](https://skmtc.dev/sequenzy/apis/sequenzy-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/sequenzy/sequenzy-api/revisions/4d1e8971ce8a/schema)
