|
Node |
Plain Message |
|---|---|
|
Description |
The Plain Message node The node supports multiple digital channels configured in CCM (Channel Connection Manager). Commonly used channels include:
Any other non-voice digital channel configured in CCM (excluding CX Voice and Cisco CC) can also be selected from the Channel dropdown. |
Overview
When a contact reaches the Plain Message node (typically from the Init node), the node:
-
Reads the contact from
msg.outboundMetadata.contact.cxCustomer -
Resolves the customer's channel identifier (e.g. phone number, email address) using Customer Identifier and Identifier Index
-
Personalizes the message body by replacing
{fieldName}placeholders with contact data -
Schedules the message for delivery via the Scheduler
-
Optionally forwards delivery notifications back into the flow when wired to a downstream node
If the contact is missing or has no valid identifier for the selected channel, the message is not sent and the contact is skipped.
Category
|
Category |
Inputs |
Outputs |
Default Label |
|---|---|---|---|
|
Channel Action |
1 |
1 |
Your node's name, or Plain Message if left blank |
Supported Digital Channels
The Channel dropdown is populated from CCM at edit time. Voice channels (CX_VOICE, CISCO_CC) are excluded — this node is for digital messaging only.
|
Channel |
Typical use |
Customer identifier |
Notes |
|---|---|---|---|
|
|
WhatsApp Business messaging |
Mobile number / phone field on the contact |
Message sent as plain text ( |
|
SMS |
SMS via configured gateway e.g. SMPP |
Mobile number / phone field on the contact |
Message sent as plain text ( |
|
|
Outbound email campaigns |
Email address field on the contact |
Uses |
|
Other CCM channels |
Any additional digital channel configured in your tenant |
Depends on contact schema |
Shown as |
Prerequisite: The channel must be configured in CCM before it appears in the Plain Message node. If no digital channels are configured, the node editor will show an error.
Configuration Options
|
Setting |
Default |
What it does |
|---|---|---|
|
Name |
(blank) |
Optional label for the node. |
|
Channel |
— |
The CCM digital channel to send through (WhatsApp, SMPP, Email, etc.). Loaded from |
|
Customer Identifier |
|
Which contact field holds the destination address (e.g. |
|
Identifier Index |
|
When the contact has multiple values for the same field (e.g. two email addresses), this selects which one to use. Index is 0-based internally (UI shows 1–10). |
|
Subject |
(blank) |
Email only — the email subject line. Hidden for WhatsApp, SMPP, and other non-email channels. |
|
Message |
(blank) |
The message body. Supports |
Plain Message configuration setup
-
Open the node editor — channels and contact fields are loaded automatically from CCM and the contact schema.
-
Select the Channel that matches how you want to reach the customer (WhatsApp, SMPP, Email, etc.).
-
Set Customer Identifier to the contact field that holds the destination (e.g.
mobileNumberfor WhatsApp/SMPP,emailfor Email). -
If contacts can have multiple values for that field, set Identifier Index to pick the correct one (1 = first, 2 = second, and so on).
-
For Email, fill in Subject — this field only appears when an Email channel is selected.
-
Write your Message using
{placeholder}syntax for personalization.
When Does It Send?
The node runs each time it receives a message from an upstream node (usually Init, one message per contact).
Normal send path:
-
Contact exists in
msg.outboundMetadata.contact.cxCustomerwith a valid_id -
The configured Customer Identifier field has a non-empty value at the selected Identifier Index
-
The node builds a schedule request and posts it to the Scheduler (
POST /scheduled-activities) -
The Scheduler delivers the message on the selected channel
Skipped (no send):
-
Customer identifier field is missing or empty at the selected index
-
Skipped contacts are counted in metrics as
MISSING_CONTACT
Delivery notification path:
If the Scheduler returns a delivery result and the flow is wired for it, a message with type: "DELIVERY_NOTIFICATION" arrives back at this node. The node passes it through to its output without re-sending — use a downstream Post Attempt Decision node to branch on delivery status.
Output
On successful schedule (no downstream wire required)
The node does not emit a new message on the normal send path — it schedules the activity and completes. Wire a Delivery Notification path separately if you need post-send branching.
On delivery notification (when wired)
When a DELIVERY_NOTIFICATION arrives (from the Scheduler webhook loop), the node forwards the message to its output:
{
"payload": {
"body": {
"status": "DELIVERED",
"type": "DELIVERYNOTIFICATION"
},
"channelType": {
"name": "WHATSAPP"
}
},
"outboundMetadata": {
"contact": { },
"schedulingNodeId": "<plain-message-node-id>",
"flowId": "<flow-id>"
},
"type": "DELIVERY_NOTIFICATION"
}
|
Field |
Notes |
|---|---|
|
|
Set to |
|
|
Delivery result from the channel (e.g. |
|
|
Channel that sent the message ( |
|
|
Preserved from the original send, including contact and flow context |
Message Personalization
Use curly-brace placeholders in the Message (and Subject for Email):
Hello {firstName}, your appointment is confirmed.
|
Placeholder |
Replaced with |
|---|---|
|
|
Contact's |
|
|
Contact's |
|
|
Any field on the contact object |
If a placeholder has no matching value, it is left as-is in the message.
Channel-Specific Behavior
|
Channel |
Schedule body type |
Extra fields |
|---|---|---|
|
|
|
|
|
SMPP (SMS) |
|
|
|
|
|
|
|
Other digital |
|
|