Skip to main content
GET
Subscribers By External ID
Use external-ID routes when your app has a stable customer, account, or user ID. Prefer the query form because it supports external IDs that contain slashes. For GET, email engagement stats and recent activity exclude detected email-security scanners and tracked brand assets by default. Subscriber notes can also use external IDs with GET or POST /api/v1/subscribers/external/notes?externalId={externalId}.

Request

string
required
Customer-owned external ID. Required for GET, PATCH, and DELETE /subscribers/external.
string
Compatibility path form for external IDs that do not contain slashes.
boolean
default:"false"
Set to true on GET requests to include detected scanner, preview, and tracked asset open/click events in emailStats and recent activity.
When machine engagement is included, open/click activity events include machine, engagementQuality, and classificationReasons fields.
string
New subscriber email when updating.
string
New external ID when updating.
string
Updated first name.
string
Updated last name.
string
Updated phone number in E.164 or national format. Stored normalized to E.164 on the native phone field, not as a custom attribute. An invalid phone returns 400 VALIDATION_ERROR. Setting a phone does NOT subscribe the contact to SMS. Changing the number without smsConsent resets SMS consent. null or "" clears the phone, except on a phone-only contact with no email.
string
ISO 3166-1 alpha-2 country used to read a national-format phone, such as IT or US. Defaults to US. Send it only together with phone.
SMS marketing consent. true subscribes the contact with consent source api and must only be sent with verified express written consent. false unsubscribes the contact from SMS. When omitted, SMS status stays unchanged unless phone changes, which resets consent because it belonged to the old number. Consent is never inferred from phone presence. See SMS & MMS for the full consent model.
string
Updated status: active or unsubscribed.
array
Replacement tag list.
object
Custom attributes to update. By default this replaces the existing public custom-attribute map.
string
default:"replace"
How to apply customAttributes: replace replaces the existing public custom-attribute map, while merge overwrites only the provided keys and retains unspecified existing keys.

Responses