---
title: "Update subscriber by external ID path"
method: PATCH
path: "/subscribers/external/{externalId}"
tags: ["Subscribers"]
---

# Update subscriber by external ID path

`PATCH /subscribers/external/{externalId}`

Compatibility route for external IDs that do not contain path separators. Use `/subscribers/external?externalId=...` for IDs containing slashes.

## Path parameters

- `externalId` string, required

## Request body

- object
  - `email` string, email — New delivery email. Fails with 409 if another subscriber owns it.
  - `externalId` string — New external ID. Fails with 409 if another subscriber owns it.
  - `firstName` string
  - `lastName` string
  - `status` 'active' | 'unsubscribed' | 'bounced' — Setting `unsubscribed` performs the unsubscribe workflow.
  - `tags` string[]
  - `customAttributes` object

## Response `200`

Subscriber updated

- object
  - `success` boolean
  - `subscriber` Subscriber
    - `id` string
    - `email` string, email
    - `externalId` string, nullable — Customer-owned app/customer/user ID for this subscriber
    - `firstName` string, nullable
    - `lastName` string, nullable
    - `status` 'active' | 'unsubscribed' | 'bounced'
    - `emailProvider` string, nullable
    - `tags` string[]
    - `customAttributes` object
    - `createdAt` string, date-time
    - `updatedAt` string, date-time

## Other responses

- `409` — Identity conflict

## Changes

- **2026-05-19** `1a51a400be50` — 1 info
  - added the new `bounced` enum value to the request property `status`
- **2026-05-05** `5449b620579f` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/sequenzy/apis/sequenzy-api/changes/subscribers/external/:externalId/patch.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/f9a826460811/schema)
