Use case description of how to use the customers communication collection to manage customer communication preferences and create communication messages via the Open API.
This collection supports two core scenarios:
- Consent and preference management (read and update)
- Outbound communication creation (existing or new communication thread)
- GET communication preferences
- PUT update communication preferences
- POST create communication in existing communication thread
- POST create communication in new communication thread
The customers communication collection is designed to help partners integrate communication flows while keeping consent handling aligned with studio-side settings.
Core behavior:
- Communication preferences define whether and how communication can be sent.
- Communication messages can be posted into existing threads or started as new threads.
- Integrations should treat preferences as an authoritative constraint for outbound communication behavior.
Typical partner scenarios:
- Preference center in member app or portal
- Marketing and service communication orchestration
- Customer support follow-ups linked to existing thread history
Use GET communication preferences before rendering communication settings or triggering campaigns.
Use this to:
- show current channel/category choices
- determine whether a channel is currently active
- prefill preference settings in your UI
When a customer changes consent or channel settings, call PUT update communication preferences.
Best practice:
- submit only intended changes
- show explicit confirmation before save
- refresh preferences after update
If communication belongs to an already established context (for example support follow-up), use POST create communication in existing communication thread.
Use this to:
- preserve conversation continuity
- keep context attached to one thread lifecycle
- avoid duplicate parallel threads for the same issue
If no prior thread exists for the topic, use POST create communication in new communication thread.
Use this to:
- start a new structured communication context
- separate unrelated topics cleanly
Note: Payloads below are illustrative integration examples. Validate exact field names and structures against the latest OpenAPI schema before publication or implementation.
Scenario: Customer disables promotional SMS and keeps transactional email enabled.
- GET communication preferences
- Render settings UI
- PUT update communication preferences
- Re-fetch GET communication preferences
Example update payload (illustrative):
{
"preferences": [
{
"category": "MARKETING",
"channels": [
{ "channel": "SMS", "active": false },
{ "channel": "EMAIL", "active": true }
]
},
{
"category": "SERVICE",
"channels": [
{ "channel": "EMAIL", "active": true }
]
}
],
"requestId": "7e5dfce2-5475-4f23-b2d8-7718d5d19ce6"
}Scenario: Partner sends a follow-up message for an already open support conversation.
- Resolve thread identifier from your context
- POST create communication in existing communication thread
- Update timeline in UI
Example payload (illustrative):
{
"threadId": "comm-thread-123",
"message": {
"subject": "Update on your request",
"body": "We have completed the requested change.",
"channel": "EMAIL"
},
"requestId": "765c6977-c91b-4a58-a1f0-5efe90ff84ca"
}Scenario: Partner starts a new communication thread for a campaign confirmation.
- POST create communication in new communication thread
- Store returned thread reference
- Use existing-thread endpoint for follow-up messages
Example payload (illustrative):
{
"topic": "Campaign registration",
"message": {
"subject": "Your registration was successful",
"body": "Thanks for registering. We will keep you updated.",
"channel": "EMAIL"
},
"requestId": "4f67db16-f75f-4cc8-9b95-75dc32b7f977"
}- Sending without preference check: Always read current communication preferences before outbound communication.
- Channel/category mismatch: Keep your UI model aligned to category-channel structures returned by the API.
- Missing refresh after update: Re-fetch preferences after PUT to avoid stale state.
- Thread fragmentation: Reuse existing threads where possible instead of always creating new ones.
- Weak auditability: Persist request IDs and thread IDs to support troubleshooting and compliance checks.
For event-driven synchronization, use relevant webhook events from the event catalog and map them to your communication state model.
Event reference: