StatusDashboard
Segments

Assign tag

Assign a tag to an email address or phone number.

View Markdown

POST /app/segments/registry

Creates a registry assignment. Does not create or modify dashboard subscribers. A contact may be tagged before, during, or after subscribing.

The request body is a discriminated union on channel. Each assignment requires a display name — a human-readable label for the registry (e.g. Jane Doe, CEO). It is for admin display only; matching and DELETE still use the normalized email or phone.

Phone numbers are validated with libphonenumber-js and stored in E.164 format (e.g. +14155552671).


Request

See API Basics for required headers.

Body (email)

FieldTypeRequiredDescription
channelstringYesMust be email.
tagIduuidYesExisting tag UUID.
displayNamestringYesHuman-readable label. 1–100 characters.
emailstringYesValid email address. Stored lowercased.

Body (SMS)

FieldTypeRequiredDescription
channelstringYesMust be sms.
tagIduuidYesExisting tag UUID.
displayNamestringYesHuman-readable label. 1–100 characters.
phonestringYesE.164 phone number (e.g. +14155552671).

Body (WhatsApp)

FieldTypeRequiredDescription
channelstringYesMust be whatsapp.
tagIduuidYesExisting tag UUID.
displayNamestringYesHuman-readable label. 1–100 characters.
phonestringYesE.164 phone number (same validation rules as SMS).

The same E.164 number may be assigned to the same tag independently for SMS and WhatsApp — each channel is stored as a separate registry row.


Sample request (email)

curl -X POST https://api.statusdashboard.com/app/segments/registry \
  -H "Authorization: Bearer bcf847abf5c6:def456" \
  -H "Content-Type: application/json" \
  -d '{
    "channel": "email",
    "tagId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "displayName": "Jane Doe, CEO",
    "email": "ceo@acme.com"
  }'

Sample request (SMS)

curl -X POST https://api.statusdashboard.com/app/segments/registry \
  -H "Authorization: Bearer bcf847abf5c6:def456" \
  -H "Content-Type: application/json" \
  -d '{
    "channel": "sms",
    "tagId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "displayName": "Jane Doe, CEO",
    "phone": "+14155552671"
  }'

Sample request (WhatsApp)

curl -X POST https://api.statusdashboard.com/app/segments/registry \
  -H "Authorization: Bearer bcf847abf5c6:def456" \
  -H "Content-Type: application/json" \
  -d '{
    "channel": "whatsapp",
    "tagId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "displayName": "Jane Doe, CEO",
    "phone": "+14155552671"
  }'

Sample response

Status: 201 Created

{
  "entry": {
    "tagId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "tagName": "Executive",
    "channel": "email",
    "displayName": "Jane Doe, CEO",
    "contact": "ceo@acme.com",
    "normalizedContact": "ceo@acme.com",
    "createdAt": "2026-06-02T09:00:00.000Z"
  }
}

SMS and WhatsApp entries return contact as a formatted display value and normalizedContact as E.164 (e.g. +14155552671).


Error responses

StatusWhen
400Validation error, invalid phone number, or tag not found.
403Not admin, feature not enabled, or subscribersPerTag limit reached.
409Contact is already assigned to this tag.

On this page

We use cookies

We use essential cookies to keep the site working, and optional analytics cookies to understand how it's used. Read our Privacy Policy.