Plain Message

Node

Plain Message

Description

The Plain Message node plain.png sends a text-based outbound message to a contact over a digital channel. It is used in Non-CX Voice and other digital campaigns where you want to deliver a simple message — without a form, survey, or voice call.

The node supports multiple digital channels configured in CCM (Channel Connection Manager). Commonly used channels include:

  • WhatsApp — send plain-text WhatsApp messages to a customer's mobile number

  • SMS — send SMS messages via an SMPP connector or any other configured connector

  • Email — send outbound emails with a subject line and message body

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:

  1. Reads the contact from msg.outboundMetadata.contact.cxCustomer

  2. Resolves the customer's channel identifier (e.g. phone number, email address) using Customer Identifier and Identifier Index

  3. Personalizes the message body by replacing {fieldName} placeholders with contact data

  4. Schedules the message for delivery via the Scheduler

  5. Optionally forwards delivery notifications back into the flow when wired to a downstream node

full plain.png


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

WhatsApp Business messaging

Mobile number / phone field on the contact

Message sent as plain text (PLAIN type)

SMS

SMS via configured gateway e.g. SMPP

Mobile number / phone field on the contact

Message sent as plain text (PLAIN type)

Email

Outbound email campaigns

Email address field on the contact

Uses EMAIL type; Subject field appears in the editor

Other CCM channels

Any additional digital channel configured in your tenant

Depends on contact schema

Shown as {channel name} - {service identifier} in the dropdown

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 /get-ccm-channels.

Customer Identifier

phoneNumber

Which contact field holds the destination address (e.g. mobileNumber, email, phoneNumber). Options come from the contact schema fields marked as channel identifiers.

Identifier Index

1 (index 0)

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 {fieldName} placeholders (e.g. Hello {firstName}) replaced with contact data before sending.

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. mobileNumber for WhatsApp/SMPP, email for 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.

email.png


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:

  1. Contact exists in msg.outboundMetadata.contact.cxCustomer with a valid _id

  2. The configured Customer Identifier field has a non-empty value at the selected Identifier Index

  3. The node builds a schedule request and posts it to the Scheduler (POST /scheduled-activities)

  4. 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:

JSON
{
  "payload": {
    "body": {
      "status": "DELIVERED",
      "type": "DELIVERYNOTIFICATION"
    },
    "channelType": {
      "name": "WHATSAPP"
    }
  },
  "outboundMetadata": {
    "contact": { },
    "schedulingNodeId": "<plain-message-node-id>",
    "flowId": "<flow-id>"
  },
  "type": "DELIVERY_NOTIFICATION"
}

Field

Notes

type

Set to DELIVERY_NOTIFICATION — removed before forwarding to the next node

payload.body.status

Delivery result from the channel (e.g. DELIVERED, FAILED)

payload.channelType.name

Channel that sent the message (WHATSAPP, SMPP, EMAIL, etc.)

outboundMetadata

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

{firstName}

Contact's firstName field

{email}

Contact's email field

{fieldName}

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

WhatsApp

PLAIN

markdownText = personalized message

SMPP (SMS)

PLAIN

markdownText = personalized message

Email

EMAIL

subject, from, recipientsTo, htmlBody

Other digital

PLAIN

markdownText = personalized message