Home Campaigns and proactive messages

Campaigns and proactive messages

How to start conversations: bulk campaigns, single sends and email.
Ian Kraskoff
By Ian Kraskoff and 1 other
β€’ 7 articles

How to send messages via campaign in Cloud Chat

https://www.loom.com/share/b35a984fb24541a3a1c9fd821c4afad7 When to use it - You need to send proactive messages to a list of contacts via WhatsApp or email - You want to schedule a campaign for a specific time - You want to select the audience by tag, by attribute filter or by CSV upload - You want to apply a specific tag or team to the tickets created by the campaign Prerequisites - Be an administrator or supervisor in Cloud Chat - For supervisors: be assigned to the inbox linked to the number that will be used as the source - Have a template approved by Meta registered β€” see How to create, edit and delete WhatsApp templates in Cloud Chat :::warning If the supervisor is not assigned to the inbox, they will not be able to see the number or create campaigns with it. ::: Supported channels The channel used in the campaign depends on the inbox you select. Campaign sending is currently available for: - WhatsApp (via Meta or via Twilio) - Email - Website chat (web widget) β€” a one-off campaign in the website chat, for contacts identified in the logged-in area. See the dedicated guide: One-off campaign in the website chat (web widget). :::info Email campaigns have their own specific steps (domain, sender and postal address). See the dedicated guide: How to set up and send email campaigns in Cloud Chat. ::: Ticket creation behavior If there is no open ticket for the contact - A new ticket is created automatically - The ticket does not go into the "open" state immediately - It is only considered open when the customer replies - At that point it is assigned to an agent or to ClaudIA If there is already an open ticket for the contact - The new message is sent inside the existing conversation - It appears in green (automatic system message) Step by step Step 1 β€” Access the campaigns section 1. In the menu, go to Campaigns 2. Go to One-off campaigns 3. Click Create a one-off campaign Step 2 β€” Create the campaign 1. Enter the campaign Title :::info Tip: use a title that makes auditing and tracking easier (e.g.: "March/2026 Renewal β€” Active Customers"). ::: Step 3 β€” Set automatic resolution by inactivity (optional) In the automatic resolution field (under Advanced settings): - Enter the number and the unit β€” hours or days - If left empty, the account's default automatic resolution duration is used It automatically closes conversations created by the campaign when there is no activity. :::info The secondary settings β€” automatic resolution, team, conversation label and scheduling β€” are grouped in the Advanced settings section, collapsed by default to keep the form cleaner. ::: Step 4 β€” Select the channel and the template Select the source inbox (number/channel) and the template you want to use. When you choose the template, its content is displayed so you can review it. Variables in the template Variables are filled in automatically with each contact's data at send time. When you type {{, the list shows the options (always close with }}): - Standard contact attributes: {{contact.name}}, {{contact.first_name}}, {{contact.last_name}}, {{contact.email}}, {{contact.phone_number}}, {{contact.identifier}}. - Any custom contact attribute, in the format {{contact.custom_attribute.<attribute_name>}} β€” e.g.: {{contact.custom_attribute.numero_pacote}}. (Only the custom attributes that already exist in your account are shown.) - Columns from a CSV (when the audience comes from an import): {{csv.<column_name>}}. - For a fixed value, type the text directly, without {{ }}. :::error To avoid having your number banned when using the Meta API: - Avoid messages that violate Meta's content policy - Avoid mass sending outside business hours - Offer an opt-out option in the templates - Monitor the number's quality via WhatsApp Manager Details at: How to avoid blocks and bans on WhatsApp. ::: Step 5 β€” Define the audience In the Audience section you have three ways to choose who will receive the campaign, organized in tabs: Filter, CSV and Tag β€” the Filter tab is selected by default. Use the one that best represents the audience you want β€” choose one tab per campaign. As you make your selection, Cloud Chat shows how many contacts were reached (e.g.: βœ“ 320 contacts selected). If your database has no contacts that meet the criteria, "No contact matches these criteria" is displayed. :::warning Authentication templates require the recipient's phone number. Contacts without a phone number (reachable only by their WhatsApp username) will not receive the campaign. ::: Option A β€” Filter Build the audience using contact attribute criteria (e.g.: name, email, city, country, identifier or attributes such as created at / last activity). Click Add first filter and define each condition with field + operator + value. You can use Add filter to combine more than one condition. - Use view contacts to review the list that will be reached before sending. - If the result exceeds the platform limit, the following warning appears: X contacts match, but the limit is Y. Narrow the criteria. β€” refine the filters so the audience fits within the limit. Option B β€” CSV Upload a ready-made list by dragging a file or clicking Drag a CSV file or click to select. - Format: .csv β€” maximum size of 5 MB. - The file must have the phone_number or email column (at least one is required). - After the upload, Cloud Chat shows how many contacts were found and how many were not found. - Under Download CSV of not found you get the rows that did not match any contact β€” fix the data and upload the file again. :::info In pilot phase: you can automatically create the contacts from the CSV that do not yet exist in your database, instead of sending only to those already registered β€” and download a failure report with the rows that could not be created. See: Contact creation via CSV in campaigns and failure report. ::: :::info Common CSV errors: file larger than 5 MB (File exceeds the 5 MB limit) or a format other than .csv (Format not recognized. Upload a .csv file). ::: Option C β€” Tag Select one or more customer labels / tags. The campaign reaches every contact that has those tags. This is the fastest path when your audience is already organized by tags. Step 6 β€” Select the team in charge (optional) In the Team the created conversation will be assigned to field: - Select the team that will be responsible for the conversations generated - If you do not select one, the system's default assignment rules apply Step 7 β€” Select a tag for the created conversation (optional) In the Tag for the conversation that will be created field: - If the campaign creates a new ticket, the tag will be applied - If the campaign reuses an already open conversation, the tag will not be added :::info This behavior is intentional, to avoid unwanted changes to ongoing conversations. ::: Step 8 β€” Define the sending: now or scheduled Under Scheduled time, choose between Send now or Schedule for later: - Send now β†’ the campaign is sent immediately (there may be an operational delay of a few minutes). - Schedule for later β†’ enter the date and time for the sending. :::info By default, the time uses your system's time zone. To change the account's time zone: How to set the time zone in Cloud Chat. ::: Step 9 β€” Create After reviewing the settings, click Create to send (or schedule) the campaign. To discard it, click Cancel. Notes - You can choose the audience by Filter (contact attributes), CSV (ready-made list) or Tag β€” use the corresponding tab in the Audience section. - For email campaigns: How to set up and send email campaigns in Cloud Chat. - To prevent ClaudIA from automatically replying to campaign responses: Campaigns and proactive messages with ClaudIA: behavior, blocking and best practices - For one-by-one proactive messages (1 contact at a time): How to send one-off proactive messages in Cloud Chat - For sending directly via API: How to send a proactive WhatsApp message via API - To understand sending tiers and limits: WhatsApp sending tiers: what they are and how to move up See also - Ongoing campaigns in the website chat (web widget) - One-off campaign in the website chat (web widget) - Send a proactive message via API (WhatsApp and Web Widget) - New conversation via Web Widget: why the inbox appears (or not)

Last updated on Sep 22, 2026

Ongoing Campaigns in the Website Chat (Web Widget)

https://www.loom.com/share/5c8daaa9f20a4c1cb76caa6211230154 When to Use - When you want to send a proactive message in the website chat that appears automatically to the visitor (without them initiating the conversation). - When you want to choose who sees the campaign β€” all visitors or a specific audience (by tag, filter, or contact list). - When you want to limit how many times the same contact sees the campaign, with a minimum interval between displays. :::info Who can use: The Campaigns area is available to Administrator and Supervisor profiles. Agents do not have access to this area. ::: How It Works What is an ongoing campaign An ongoing campaign remains active continuously: whenever a visitor meets the conditions you set, it appears in their website chat. It differs from a one-time send β€” it has no scheduled date; it reacts to the visitor's behavior. Campaign creation form in Cloud Chat Who the campaign reaches (audience) In the audience field, you choose between All visitors or Segment: - All visitors β€” the campaign appears to any visitor who triggers the conditions. - Segment β€” you narrow down the audience using one of these tabs: - Tag β€” appears only for contacts with the selected tag. The check is real-time: on each visit, the system checks if the contact currently has the tag. - Filter β€” appears only for contacts matching the filter conditions (also evaluated in real-time). - CSV β€” upload a list of contacts and the campaign appears only to them. The list is a snapshot from when it was saved: uploading a new file replaces the previous list. Segment audience by Tag, Filter, or CSV :::info Tag, Filter, and CSV target identified contacts. Anonymous visitors only receive campaigns without segmentation (audience "All visitors"). ::: When the campaign triggers (trigger) In Advanced Settings you define the trigger: - Time on page β€” how many seconds the visitor stays on the page before the campaign appears. - URL β€” on which page the campaign triggers. Leaving it blank causes it to trigger on any page with the chat. Display frequency Also in advanced settings, you can limit how many times each contact sees the campaign: - Maximum displays per contact β€” the maximum number of times the campaign appears to the same person. - Interval between displays (cooldown) β€” the minimum waiting time before showing it again to the same contact. Display frequency in Advanced Settings :::warning The display frequency counts per identified contact, so it only applies in boxes configured as Logged-in area (with identity validation). In boxes without this setting, the field is unavailable β€” just set the box as "Logged-in area" under the Configure and install widget tab to enable. ::: Notes - Leaving the audience and frequency blank maintains the default behavior β€” the campaign appears for all visitors who meet the trigger, with no display limit. - The audience accepts one criterion at a time (Tag, Filter, or CSV).

Last updated on Sep 02, 2026

Single Campaign in Site Chat (Web Widget)

https://www.loom.com/share/90c164605b934a91ad3e8823f778357b A single campaign in the site chat sends a proactive message to each identified contact and delivers it the next time they open the widget β€” in the logged-in area. It is the equivalent, on the website channel, of WhatsApp and email single campaigns. When to use - When you want to notify specific contacts about something in the site chat, but they are not online at that moment. - When it is a one-time communication (a single send), not recurring like the ongoing campaign. - When the contact is identified in the logged-in area β€” anonymous visitors do not receive it. :::info Who can use: The Campaigns area is available for Administrator and Supervisor profiles. Agents do not have access to this area. ::: How it works What is a single campaign Unlike an ongoing campaign (which reacts to visitor behavior in real-time), the single campaign makes just one dispatch: the message is prepared as soon as you create the campaign and appears to the contact the next time they open the site chat while identified, with a notification of a new message on the widget button. Each contact receives the message only once. Create single campaign form in site chat Write the message and use variables Select the site chat (logged-in area) input box and write the message. To personalize with contact data, click on the variables button { } and choose, for example, the contact's name. Variables list in the campaign message Choose the audience In the Audience section, define who receives the message via one of these tabs: - Filter (selected by default) β€” contacts matching the filter conditions. - CSV β€” a list of contacts you upload. - Tag β€” contacts with the selected tag. Only identified contacts are reached. Advanced settings In Advanced Settings (enabled by default), you can adjust: - Cancel message if the contact does not open it within β€” how long the message expires, in hours or days. - Time and tag of the created conversation. - Scheduling β€” send now or schedule for later. Advanced settings with expiration time in days Notes - Delivery is passive: the message waits for the contact to return to chat; there is no immediate external send. Even if the person is not online at that moment, the message is stored and delivered when they return. - Anonymous visitors do not receive the campaign β€” it requires an identified contact (logged-in area / HMAC). - To trigger a proactive message via API, see "Trigger proactive message via API (WhatsApp and Web Widget)".

Last updated on Sep 22, 2026

How to Set Up and Send Email Campaigns in Cloud Chat

πŸŽ₯ Video Demonstration Watch the complete process in practice β€” from configuring (postal address, domain, sender) to creating the email campaign: https://www.loom.com/share/1e2684089c8b40b3affd12a982092f4f When to Use - You want to send bulk emails to a segment of contacts in Cloud Chat. - You need customer responses to come back as normal conversations in Cloud Chat (not in an external inbox). - The send must comply with CAN-SPAM / LGPD (postal address + automatic unsubscribe link). Prerequisites :::error Before creating your first campaign, complete steps 1, 2, and 3 of this tutorial in order. Skipping any will cause the campaign to fail silently or be rejected by Gmail/Yahoo. ::: - An administrator profile in Cloud Chat. - Access to the domain DNS that will be used for sending (Cloudflare, Route53, Registro.br, etc.). Verification involves adding 3-4 DNS records. - A configured Email inbox β€” it will receive contact responses. If you don't have one, create it in Settings β†’ Inboxes. - The full postal address of the company (street, city, state, ZIP, country) β€” required by CAN-SPAM, included in the footer of all emails. About This Tutorial The full process consists of 5 steps: postal address β†’ domain β†’ sender β†’ campaign β†’ tracking. Each step is located in Settings β†’ Email Campaigns in the sidebar menu. Step-by-Step Instructions Step 1 β€” Configure the Postal Address The postal address appears in the footer of all campaign emails, along with the unsubscribe link. It is a legal requirement (CAN-SPAM in the USA, LGPD in Brazil) and Gmail/Yahoo reject emails without this info. 1. Go to Settings β†’ Email Campaigns β†’ Postal Address. 2. Fill in street, city, state/UF, ZIP, and country. 3. Click Save. :::warning Without filling in the postal address, any attempt to create an email campaign will return a validation error. Configure it before proceeding. ::: Step 2 β€” Add and Verify the Domain You need to prove that you control the domain you will use as the sender (e.g., mail.yourcompany.com). Without this, emails may go to spam or be rejected at the source. 1. Go to Settings β†’ Email Campaigns β†’ Domains. 2. Click Add Domain. 3. Enter the domain (recommended: dedicated subdomain, e.g., mail.yourcompany.com instead of the root domain). 4. Cloud Chat will display 3-4 DNS records (MX, SPF/TXT, DKIM). Copy all of them. 5. In your DNS provider (Cloudflare, Route53, etc.), add each record exactly as shown β€” type, name, value. 6. Return to Cloud Chat and click Verify Now on the domain card. 7. Wait for asynchronous verification (may take up to 5 minutes after DNS propagation). :::success Once everything is correct, the domain status changes to Verified (green). Only verified domains can be used as senders. ::: :::info The Verify Now button is disabled for 30 seconds after each click to give time for the sending provider to process. If the status hasn't changed after 5 minutes, check if your DNS records match exactly what is shown and try again. ::: Step 3 β€” Create a Sender The sender is the visible address that appears in the "From" field of emails (e.g., [email protected]). Each sender is linked to a verified domain and an inbox that receives responses. 1. Go to Settings β†’ Email Campaigns β†’ Senders. 2. Click Add Sender. 3. Fill out: - Display Name: name that appears in the recipient's email (e.g., "Pepa - Support YourCompany"). - Local Part: the part before @ (e.g., pepa, contact, noreply). - Domain: select one of the verified domains from the previous step. - Response Inbox: the Email inbox that will receive customer responses. When the recipient replies, it becomes a conversation in this inbox. 4. Click Save. :::warning The response inbox must be of type Email and on the same account. If you don't have one, create it first in Settings β†’ Inboxes β†’ Add Inbox β†’ Email. ::: Step 4 β€” Create the Campaign 1. Go to Campaigns β†’ Single β†’ Create a Single Campaign. 2. Select Type: Email. 3. Fill in: - Title: internal campaign name (not sent to recipient). - Subject: appears in the email. Supports dynamic variables (see below). - Sender: choose one of the senders created in Step 3. - Body Type: HTML (with formatting) or Plain Text (preserves line breaks). - Body: email content. Supports dynamic variables. 4. Define the Audience β€” choose one of 3 options: - Filter: by contact attribute (e.g., custom_attribute_1 equals cloud). - Tags: contacts with specific tags. - CSV: upload spreadsheet with email or phone_number in the identifying column. 5. Click Save. The campaign status becomes Active and will be sent at the next scheduled window (usually in 1-2 minutes). Available dynamic variables in subject and body: - {{ contact.first_name }} β€” contact's first name. If only one name (e.g., "Anna"), returns the full name. - {{ contact.last_name }} β€” last name. Empty if only one name. - {{ contact.name }} β€” full name capitalized. - {{ contact.email }} β€” contact's email. - {{ contact.phone_number }} β€” contact's phone. - {{ contact.custom_attribute['key'] }} β€” any custom attribute of the contact. :::info Contacts without a valid email (empty field or invalid format) are automatically excluded from the audience. Same for contacts in the blocklist β€” those who unsubscribed or got a permanent bounce will not receive future campaigns. ::: Step 5 β€” Track the Sending In the campaigns list (Campaigns β†’ Singles), each campaign shows a status: - Active: waiting for the next send window (~1 min). - In Progress: emails are being sent. - Completed: send finished with 99%+ terminal events. - Partially Completed: at least 80% of contacts received β€” used when some failed but most succeeded. - Failed: configuration error (unverified domain, deleted sender, bounce kill switch triggered). Click See Details to see how many contacts were targeted and how many received the email. :::info When the recipient responds to the email, the reply automatically turns into a proactive conversation in the sender's response inbox. The entire thread (original email + customer reply) is linked via standard email headers. ::: Notes - Limit per campaign: 3,000 contacts per send. For larger audiences, split into multiple campaigns. - Automatic kill switch: if bounce/reclaim rate exceeds 10% in a sample of 200+ deliveries, the campaign is automatically paused and marked as Failed. This protects sender domain reputation. - Blocklist: contacts who unsubscribed, bounced permanently, or marked as spam are in Settings β†’ Email Campaigns β†’ Blocklist. They are automatically excluded from all future campaigns. - Manually removing unsubscribes: you can remove an email from the blocklist on the same screen. Use with caution β€” customers may complain.

Last updated on Sep 02, 2026

How to send individual proactive messages in Cloud Chat

When to use - You need to send a proactive message to a single contact (not in bulk) - You want to open a ticket on the agent's initiative, outside the usual channel - You want to send a WhatsApp template or a proactive email starting from the contact Prerequisites - Be an administrator (no need to be assigned to an inbox) or a supervisor / agent / assistant assigned to the corresponding inbox - For WhatsApp: have a template approved by Meta β€” see How to create, edit and delete WhatsApp templates in Cloud Chat - For email: have an email inbox configured Compatible channels Allow individual sending - Email - WhatsApp - SMS - Twilio - API :::info About API: the behavior depends on the customer's implementation. Technically, individual sending should work, but validate it directly in the product. ::: Do not allow individual sending - Web Widget (website) - Messenger / Instagram - Telegram - LINE Sending permission - Administrator β€” can send without being assigned to an inbox - Supervisor, Agent, Assistant β€” must be assigned to the inbox for it to show up as an option :::warning If the user is not assigned, the inbox does not appear as an option and the message cannot be sent. ::: Ticket creation behavior - The message is already assigned to an agent when created, and so is the ticket - It always creates a new ticket with open status :::warning If the customer has two open tickets, new messages sent by the customer will be routed to the most recent ticket. ::: Individual proactive sending via WhatsApp :::error Always follow the Meta / WhatsApp guidelines to avoid penalties and bans. Details at: How to avoid blocks and bans on WhatsApp. ::: Instructional video: https://youtu.be/FiIRQxUjxgA Step 1 β€” Start from the conversation or from the contact From the conversation While in any conversation, go to the right-hand panel and click "Nova mensagem" (New message). :::info The open ticket does not need to be in the WhatsApp inbox β€” it just needs to be the contact you want to send the message to. ::: From Contacts Go to "Contatos" (Contacts) and select the contact: And click "Nova mensagem" (New message): Step 2 β€” Select the inbox and the template Select the sending inbox and the desired template. You can search by title or scroll the screen to select it: Step 3 β€” Header attachments (if applicable) If the template has attachments in the header, fill them in. :::warning Attachments must follow the formats and sizes supported by Meta. ::: Step 4 β€” Template variables Dynamic variables For a dynamic variable, type {{ and choose the system variable. Make sure to close it with }}. Variables with a fixed value To use a fixed value (without {{ }}), type it directly. In the example, the template button was fixed to https://cloudchat.cloudhumans.com. :::warning Static elements of the template (such as pre-filled quick action buttons) cannot be edited. ::: Step 5 β€” Send When you are ready, click "Enviar mensagens" (Send messages). :::info In proactive sends, only templates can be sent β€” do not send free text outside the 24-hour window. ::: Individual proactive sending via Email Useful for opening an internal ticket on the agent's initiative or sending a proactive communication. Instructional video: https://youtu.be/HtTgEQe0g4c :::info We recommend sending the email from an inbox that is separate from the ones you use on other channels β€” this makes it easier to keep track. ::: Step 1 β€” Select the contact Go to "Contatos" (Contacts): Image Click the contact and then "Nova Mensagem" (New Message): Image Image Step 2 β€” Set up the inbox, subject and recipients Choose the email inbox and define the subject: Image Add people in copy or blind copy if needed: Image Step 3 β€” Write the message Write the message. Use shortcuts by typing / if you want. You can attach files. Image Click "Enviar Mensagem" (Send Message). Image Step 4 β€” View the open ticket Go to "Conversas" (Conversations) and click the inbox to see the tickets that were created: Image Image :::info Each proactive send generates a new ticket with a new number. If you want the ticket not to be answered automatically by ClaudIA, contact the support team. ::: Notes - For bulk sending (contact list): How to send messages via campaign in Cloud Chat - For sending directly via API (without the UI): How to send a proactive WhatsApp message via API - For Meta template rules: WhatsApp template rules (Meta) - To create templates inside Cloud Chat: How to create, edit and delete WhatsApp templates in Cloud Chat

Last updated on Sep 22, 2026

Open an email conversation via API

https://cloudchat.cloudhumans.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBMVpWTnc9PSIsImV4cCI6bnVsbCwicHVyIjoiYmxvYl9pZCJ9fQ==--b63861e2dbc9f283a42b6d2a83b5af4611af9f75/recap.mp4 When to use - Your system needs to start a support conversation by email, without waiting for the customer to write first. - You want to send a transactional email (confirmation, billing, delivery notice) and have the customer's reply land in your Cloud Chat inbox as a regular conversation. - You need the same request to be safely repeatable, without creating two conversations or sending two emails. :::info To reach many people at once, use "Campanhas" (Campaigns). This API is for single sends: one contact per call. ::: Prerequisites - An email inbox already connected and working. - An access token for the Cloud Humans public API. - The inbox must not have the "Manter Conversa Única" (Keep Single Conversation) option turned on. With it enabled, the message would be appended to the old conversation and your subject would be ignored β€” that's why the API rejects the request with inbox_locked_to_single_conversation instead of doing something different from what you asked. How it works Call POST /cloudchat/v1/accounts/{account_id}/conversations Headers: Authorization: Bearer <token> and cloudchat-instance. { "inbox_id": 12, "email": "[email protected]", "name": "Maria Silva", "subject": "Seu pedido foi enviado", "content": "OlΓ‘! Seu pedido saiu para entrega hoje.", "idempotency_key": "pedido-12345" } Identify the recipient by email or by contact_id β€” one of the two, never both together. With email, the contact is created if it doesn't exist yet. The response includes id (conversation number), message_id and dispatch_status, which is created for a new send and duplicate for a repeat. Repeat safely Send your own idempotency_key, up to 128 characters. If the same key arrives again, the API does not create another conversation or send another email: it returns the original conversation with dispatch_status: duplicate. The key is valid for 24 hours. The key is per inbox: the same key in another inbox is a new send, not a repeat. Reusing a key with different content is rejected with idempotency_key_payload_mismatch, instead of silently discarding the new message. CC and attachments - cc_emails and bcc_emails accept a list or comma-separated text, with a combined maximum of 25 addresses. - Use attachment_blob_ids for files already uploaded to the platform and attachment_urls for public links. There's a maximum of 10 attachments, up to 5 of them by URL. When the API rejects the request | Code | What happened | |---|---| | inbox_not_assigned | The inbox doesn't exist or your access doesn't reach it | | subject_required / content_required | The subject or body is missing | | invalid_email / invalid_recipient | Malformed address | | recipient_suppressed | The address is undeliverable: it hard bounced, was marked as spam, or has already failed in this inbox | | too_many_recipients / too_many_attachments | The limits above were exceeded | | email_claimed_by_another_contact | The address already belongs to another contact in this inbox | Each code is stable: handle it in your system instead of reading the text message. Notes - The limit is 30 sends per minute per account. - The conversation is created marked as started by your team, which keeps response time metrics accurate. - The email is sent from the inbox itself, so the sender, signature and domain are the ones you have already configured.

Last updated on Oct 02, 2026

Open Email Conversation via API

https://cloudchat.cloudhumans.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBMVpWTnc9PSIsImV4cCI6bnVsbCwicHVyIjoiYmxvYl9pZCJ9fQ==--b63861e2dbc9f283a42b6d2a83b5af4611af9f75/recap.mp4 When to Use - Your system needs to initiate an email support session without waiting for the customer to write first. - You want to send a transactional email (confirmation, billing, delivery notice) and have the customer's reply land in your Cloud Chat inbox as a normal conversation. - You need the same request to be safely repeatable without creating duplicate conversations or emails. :::info To contact many people at once, use Campaigns. This API is for single dispatch: one contact per call. ::: Prerequisites - An email inbox already connected and operational. - An API access token for Cloud Humans. - The inbox must not have the Maintain Single Conversation option enabled. If it is active, messages will be appended to the old conversation and your subject will be ignored β€” hence the API will reject with inbox_locked_to_single_conversation, instead of doing something different from what you requested. How It Works Call POST /cloudchat/v1/accounts/{account_id}/conversations Headers: Authorization: Bearer <token> and cloudchat-instance. { "inbox_id": 12, "email": "[email protected]", "name": "Maria Silva", "subject": "Your order has been shipped", "content": "Hello! Your order is out for delivery today.", "idempotency_key": "order-12345" } Identify the recipient by email or by contact_id β€” only one, never both. With email, the contact will be created if it doesn't exist yet. The response includes id (conversation number), message_id, and dispatch_status, which is created for a new send and duplicate for a repeat. Safe Repeat Send your own idempotency_key, up to 128 characters. If the same key is received again, the API does not create another conversation or send another email: it returns the original conversation with dispatch_status: duplicate. The key is valid for 24 hours. The key is per inbox: the same key in another inbox is a new send, not a repeat. Reusing a key with different content is rejected with idempotency_key_payload_mismatch, instead of silently discarding the new message. Copies and Attachments - cc_emails and bcc_emails accept a list or comma-separated text, up to 25 addresses. - Use attachment_blob_ids for files already uploaded to the platform and attachment_urls for public links. Up to 10 attachments, with a maximum of 5 per URL. When the API Rejects | Code | What happened | |---|---| | inbox_not_assigned | The inbox does not exist or is not accessible | | subject_required / content_required | Subject or body missing | | invalid_email / invalid_recipient | Malformed address | | recipient_suppressed | Undeliverable address: hard bounce, marked as spam, or already failed in this inbox | | too_many_recipients / too_many_attachments | Limits exceeded | | email_claimed_by_another_contact | Address already belongs to another contact in this inbox | Each code is stable: handle it in your system instead of reading the message text. Notes - Limit of 30 sends per minute per account. - The conversation is marked as initiated by you, maintaining correct response time metrics. - The email is sent from your configured inbox, so sender, signature, and domain are as you set up.

Last updated on Oct 06, 2026