Skip to main content

Tags & Lists

Tags and lists are two complementary ways to organize your contacts in SendSeven. Tags are color-coded labels for flexible categorization. Lists are named collections of contacts used for campaigns and bulk operations.

Tags vs. Lists​

AspectTagsLists
Apply toContacts and conversationsContacts only
Use caseFlexible categorization, filteringCampaign targeting, bulk operations
VisualColor-coded labelsNamed groups
MultipleA resource can have many tagsA contact can be in many lists

Use tags for dynamic categorization and visual organization. Use lists for campaign recipient groups and structured audience segments.

Required Scopes​

ScopePurpose
contacts:read or conversations:readList and view tags
tags:createCreate tags
tags:updateRename or recolor tags
tags:deleteDelete tags
contacts:updateAdd/remove tags on contacts
conversations:updateAdd/remove tags on conversations
lists:readList and view contact lists
lists:createCreate new lists
lists:updateAdd/remove contacts from lists
lists:deleteDelete lists

Tags​

List Tags​

curl -X GET "https://api.sendseven.com/api/v1/tags?page=1&page_size=20" \
-H "Authorization: Bearer s7_api_a1b2c3d4e5f6789012345678abcdef00" \
-H "Content-Type: application/json"
{
"items": [
{
"id": "tag_vip",
"name": "VIP",
"color": "#EF4444",
"description": "High-value customers",
"created_at": "2026-01-10T09:00:00Z"
},
{
"id": "tag_new",
"name": "New Customer",
"color": "#10B981",
"description": "Recently onboarded",
"created_at": "2026-01-12T14:00:00Z"
}
],
"pagination": {
"page": 1,
"page_size": 20,
"total": 3,
"total_pages": 1,
"has_next": false,
"has_prev": false
}
}

Usage counts​

Add include_usage=true to see how many contacts and conversations carry each tag. Every item then also has contact_count and conversation_count (0 when the tag is unused). The counts cover the tags on the returned page. Leave the parameter off when you don't need the counts; the plain list is faster.

curl -X GET "https://api.sendseven.com/api/v1/tags?include_usage=true&page=1&page_size=20" \
-H "Authorization: Bearer s7_api_a1b2c3d4e5f6789012345678abcdef00"
{
"items": [
{
"id": "tag_vip",
"name": "VIP",
"color": "#EF4444",
"description": "High-value customers",
"created_at": "2026-01-10T09:00:00Z",
"contact_count": 128,
"conversation_count": 342
}
],
"pagination": { "page": 1, "page_size": 20, "total": 1, "total_pages": 1, "has_next": false, "has_prev": false }
}

Create a Tag​

curl -X POST "https://api.sendseven.com/api/v1/tags" \
-H "Authorization: Bearer s7_api_a1b2c3d4e5f6789012345678abcdef00" \
-H "Content-Type: application/json" \
-d '{
"name": "Enterprise",
"color": "#6366F1",
"description": "Enterprise-tier customers"
}'
FieldTypeRequiredDescription
namestringYesTag name (max 50 chars, unique per workspace)
colorstringNoHex color code (e.g., #EF4444)
descriptionstringNoTag description (max 255 chars)

Tag names are unique per workspace. The comparison ignores case, accents and trailing spaces, so VIP, vip and vip count as the same name. Creating or renaming a tag to an existing name returns 400:

{"detail": "A tag with the name 'VIP' already exists"}

Tags are also used as team-member skills for routing. See Skill-Based Routing.

Update a Tag​

curl -X PUT "https://api.sendseven.com/api/v1/tags/tag_enterprise" \
-H "Authorization: Bearer s7_api_a1b2c3d4e5f6789012345678abcdef00" \
-H "Content-Type: application/json" \
-d '{
"color": "#8B5CF6",
"description": "Enterprise and strategic accounts"
}'

Delete a Tag​

Deleting a tag removes it from all contacts and conversations it is applied to.

curl -X DELETE "https://api.sendseven.com/api/v1/tags/tag_enterprise" \
-H "Authorization: Bearer s7_api_a1b2c3d4e5f6789012345678abcdef00"

Add a Tag to a Contact​

curl -X POST "https://api.sendseven.com/api/v1/contacts/contact_xyz789/tags/tag_vip" \
-H "Authorization: Bearer s7_api_a1b2c3d4e5f6789012345678abcdef00" \
-H "Content-Type: application/json"

Remove a Tag from a Contact​

curl -X DELETE "https://api.sendseven.com/api/v1/contacts/contact_xyz789/tags/tag_vip" \
-H "Authorization: Bearer s7_api_a1b2c3d4e5f6789012345678abcdef00"

Add a Tag to a Conversation​

curl -X POST "https://api.sendseven.com/api/v1/conversations/conv_abc123/tags/tag_urgent" \
-H "Authorization: Bearer s7_api_a1b2c3d4e5f6789012345678abcdef00" \
-H "Content-Type: application/json"

Lists​

List All Lists​

curl -X GET "https://api.sendseven.com/api/v1/lists?page=1" \
-H "Authorization: Bearer s7_api_a1b2c3d4e5f6789012345678abcdef00" \
-H "Content-Type: application/json"
{
"items": [
{
"id": "list_newsletter",
"name": "Newsletter Subscribers",
"description": "Main weekly newsletter recipients",
"contact_count": 2450,
"created_at": "2026-01-05T10:00:00Z",
"updated_at": "2026-02-10T12:00:00Z"
}
],
"pagination": {
"page": 1,
"page_size": 20,
"total": 5,
"total_pages": 1,
"has_next": false,
"has_prev": false
}
}

Create a List​

curl -X POST "https://api.sendseven.com/api/v1/lists" \
-H "Authorization: Bearer s7_api_a1b2c3d4e5f6789012345678abcdef00" \
-H "Content-Type: application/json" \
-d '{
"name": "Product Launch Invites",
"description": "Contacts to invite to the Q2 product launch event"
}'
FieldTypeRequiredDescription
namestringYesList name (max 100 chars)
descriptionstringNoList description (max 255 chars)

Add Contacts to a List​

curl -X POST "https://api.sendseven.com/api/v1/lists/list_launch/contacts" \
-H "Authorization: Bearer s7_api_a1b2c3d4e5f6789012345678abcdef00" \
-H "Content-Type: application/json" \
-d '{
"contact_ids": ["contact_001", "contact_002", "contact_003"]
}'
{
"list_id": "list_launch",
"added": 3,
"already_in_list": 0,
"total_contacts": 3
}

Remove a Contact from a List​

curl -X DELETE "https://api.sendseven.com/api/v1/lists/list_launch/contacts/contact_003" \
-H "Authorization: Bearer s7_api_a1b2c3d4e5f6789012345678abcdef00"

Error Responses​

StatusError CodeDescription
400VALIDATION_ERRORInvalid request body or parameters
401INVALID_TOKENMissing or invalid authentication token
403INSUFFICIENT_SCOPEToken lacks required scope
404RESOURCE_NOT_FOUNDTag, list, contact, or conversation not found
400—A tag with this name already exists
409DUPLICATE_RESOURCEList name already exists

Next Steps​