Configure the Message Node

Learn how to create messages inside a workflow, insert dynamic variables and emojis, use Buttons and Quick Replies correctly across channels, and combine multiple content blocks inside a single Message Node.

Configure the Message Node

The Message Node is where you create the messages a customer receives while moving through a workflow.

A Message Node can contain much more than a single line of text. You can personalize messages with contact data, add interactive replies, insert media and other content blocks, and combine multiple pieces of content inside the same node.

The exact options available can vary slightly depending on the workflow channel because WhatsApp, Telegram, Instagram, and Messenger each have their own messaging capabilities and limits.

The example above shows a Messenger workflow sending an appointment confirmation. The message includes text, appointment variables, emojis, and the available Quick Reply and Button controls.

Write the Message

Open a Message Node and begin with the Text block.

This is the main message the customer receives. You can write normal conversational content just as you would in a direct message.

For example, an appointment confirmation might include:

🎉 Your Consultation Is Confirmed!

followed by the appointment date, time, and any additional instructions for the customer.

The character counter at the bottom of the editor shows how much text is currently being used and the maximum supported for the selected channel.

BotLance automatically applies the appropriate message limit for the workflow channel.

Current text limits include:

  • WhatsApp: up to 4,096 characters

  • Telegram: up to 4,096 characters

  • Messenger: up to 2,000 characters

  • Instagram: up to 1,000 characters

You normally do not need to memorize these limits. The Message Node displays the current character count while you write, allowing you to stay within the supported range for the selected channel.

Personalize Messages with Variables

The Variables button allows you to insert stored information directly into the message.

Instead of manually typing variable syntax, place the cursor where the information should appear and select the value you want from the variable picker.

For example, an appointment confirmation can use values such as:

{{appointment_start}}

or

{{appointment_timezone}}

When the workflow runs, BotLance replaces the variable with the value available for that contact or workflow run.

This allows one Message Node to send personalized content to different customers without creating separate messages for each person.

System Fields

System Fields are built-in contact fields provided by BotLance.

These represent standard information the platform already understands, such as supported contact identity and profile information.

System Fields are managed by BotLance and do not need to be created manually.

When you need one inside a message, open Variables, choose System Fields, and select the field you want to insert.

The available System Fields may depend on the selected channel and the contact information available through that channel.

Custom Fields

Custom Fields are workspace fields that you create for information specific to your business.

For example, you might create fields for a customer's plan, qualification status, preferred service, project type, budget, or any other information your workflow needs to remember.

You can create and manage Custom Fields from the Workflow area, but you do not need to leave the Message Node when you realize a new one is required.

Open Variables → Custom Fields and choose Create new field.

Once created, the field becomes reusable across your workspace and can immediately be inserted into the message.

This makes it easier to build a workflow without repeatedly leaving the builder just to prepare fields.

Workspace Fields

The variable picker also includes Workspace Fields.

Unlike contact-specific fields, Workspace Fields are intended for values shared across the workspace.

For example, a business may store a commonly used booking link, company value, or another reusable piece of information as a Workspace Field and insert it wherever needed.

Workspace Fields can also be created directly from the variable picker.

So when inserting dynamic information into a Message Node, you can work with three main groups:

System Fields for built-in contact information,

Custom Fields for information created specifically for your workspace and contacts,

and Workspace Fields for shared workspace-level values.

Add Emojis

Next to Variables, the Emoji button opens the emoji picker.

Use it to insert an emoji at the current cursor position without leaving the Message Node.

Emojis can make confirmations, reminders, short instructions, and customer-facing messages easier to scan visually.

For example:

📅 Date

⏰ Time

✅ Confirmed

The emoji picker is optional. Use it where it improves the message rather than filling every message with unnecessary symbols.

Quick Replies

A Quick Reply is designed as a fast, one-tap response.

The customer selects an option instead of manually typing a reply, and the workflow can then continue according to that selection.

Quick Replies are generally suited to choices such as:

Yes

No

View Pricing

Talk to Support

They are intended as immediate response options and normally disappear from the active reply choices after the customer selects one.

Buttons

Buttons are attached to the message itself and are intended for actions or navigation that remain associated with that message.

They can be used for things such as moving the customer through the workflow or performing other supported actions.

We will cover the available Button and Quick Reply actions separately in the next part of this guide.

For now, the important distinction is:

Quick Reply → a one-tap customer response

Button → a persistent interactive control attached to the message


Channel Limits for Quick Replies and Buttons

BotLance automatically adjusts the editor according to the channel selected for the workflow.

The current limits are:

ChannelQuick RepliesButtons
WhatsApp33
Telegram2020
Instagram133
Messenger133

Interactive labels are limited to 20 characters in BotLance.

The builder shows the available count directly beside each section, so the user can see the channel limit while configuring the message.

Using Buttons and Quick Replies Together

There is an important channel difference to understand.

Messenger

Messenger allows BotLance to configure Buttons and Quick Replies together in the same Text block.

That is why the screenshot above shows both sections side by side:

Quick Replies

and

Buttons

You may use one type, the other type, or both when building a Messenger message.

Instagram, WhatsApp, and Telegram

For these channels, BotLance treats Buttons and Quick Replies as mutually exclusive inside the same Text block.

You can configure either:

Quick Replies

or

Buttons

but you do not add both types to that same Text block.

The editor automatically follows this rule based on the workflow channel, so you do not need to manually remember the platform behavior while building the workflow.

This is especially useful when the same Workflow Builder is used across different channels because the interface adapts to the selected channel's capabilities.

A Message Node Can Contain Multiple Content Blocks

A Message Node is not limited to one Text block.

Scroll below the current message and you will find Add Content Block.

This allows several pieces of content to be placed inside the same Message Node and delivered in sequence.

Depending on the selected channel, you may see blocks such as:

Text — send another text message.

Media — add an image, video, PDF, or audio where supported.

Gallery — create a swipeable set of images with interactive elements on supported Messenger and Instagram experiences.

Dynamic Reply — retrieve live information through an existing Custom Action and use the returned result in the conversation.

Data — ask the customer for information and save the answer.

Delay — insert a short pause between pieces of content inside the message sequence.

List — display a selectable list menu on channels that support it, currently including WhatsApp.

Not every block appears on every channel. BotLance automatically shows the content types appropriate for the selected workflow channel.

This allows a single Message Node to represent a small conversational sequence instead of requiring a separate canvas node for every individual message.

Dedicated Nodes and Inline Blocks

Some capabilities are available both as part of a Message Node and elsewhere in the Workflow Builder.

For example, Media and Data Collection can be used as content inside a Message Node while also having dedicated workflow entry points for situations where you want them to stand more clearly on the canvas.

We will explain those capabilities in their own dedicated guides rather than repeating their complete configuration here.

Other Message-specific blocks, including Dynamic Reply, will be covered as we continue through this Message Node guide.

Configure What a Button Does

After adding a Button, enter the label you want the customer to see and then click the arrow/action icon shown on the right side of the Button row.

This opens the Button configuration panel. BotLance deliberately separates Button behaviour into two parts: When Tapped controls what should happen immediately when the customer presses the Button, while Then Continue controls where the workflow should go afterward. These are independent settings, which means a Button can perform an action and still continue through the workflow.

A newly created Button already works without additional configuration. By default, Nothing extra is selected under When Tapped and Next step is selected under Then Continue. In that state, tapping the Button simply follows the normal connector from the Message Node. If that is all you need, you can connect the next node visually on the canvas and leave the Button configuration unchanged.

If you choose Open Website, BotLance displays a Website URL field where you can enter any valid external destination. This can be a normal website page, product page, form, payment page, booking page, or another external service. When the customer taps the Button, BotLance opens that address directly. This is useful when all you need is a clickable destination, but for booking and voice experiences BotLance also provides dedicated options that offer deeper integration with the rest of the platform.

Book Appointment

Choose Book Appointment when the Button should open a booking experience from a scheduling provider already connected to BotLance. If a scheduler has not been connected yet, the user can first visit Integrations and connect the provider there. Once the integration is available, the Button editor can load the supported booking provider and its actual event types so you do not need to copy and paste a booking URL manually.

The advantage of using the dedicated Book Appointment option is that BotLance can keep the booking linked to the workflow and conversation. A normal website link only sends the customer somewhere; it does not necessarily tell BotLance whether the customer actually completed the booking. With a connected scheduling provider, BotLance can also receive booking events such as a confirmed appointment, a reschedule, or a cancellation and use those events as Workflow Triggers.

This makes it possible to create a complete journey. The customer can tap the booking Button, complete the appointment on the scheduling page, and then BotLance can react when the booking provider reports that the appointment was actually created. A confirmation workflow can then begin from the real booking event rather than assuming that a Button click means a booking was completed.

For supported booking experiences, BotLance can also map information already collected in the workflow into the booking form. In the Cal.com example shown in the screenshot, the Booking Field Mapping section displays the questions visible on that booking form and allows you to connect them to existing BotLance fields.

If the workflow has already collected the customer's name and email, those values can be mapped to the matching booking questions instead of asking the customer to enter the same information again. BotLance can use System Fields, Custom Fields, or suitable values already collected in the workflow, and the Auto-map matching fields option can connect obvious matches automatically.

Besides making the booking process faster for the customer, this also helps keep contact information consistent. Without mapping, a customer might provide one email address during the conversation and another when booking, which can make it more difficult to match the booking back to the original contact. Mapping reduces that problem by carrying the information already collected in BotLance into the booking experience.

Only appropriate information should be mapped into booking URLs. Sensitive information such as passwords, medical records, financial details, or other private data should not be exposed through prefilled booking parameters.

The availability of real-time booking events also depends on the scheduling provider and plan being used. Cal.com currently offers webhook capabilities on its individual free plan, while Calendly's webhook subscriptions require an eligible paid plan. These external provider policies can change over time, so the important principle inside BotLance is to use the connected booking option whenever the workflow needs to know about the actual booking event rather than only the initial Button click.

Start a Voice Conversation

The Button can also start a Voice Conversation using the Voice capability already configured in BotLance. The Voice configuration itself lives under AI Actions, so the business owner configures that capability once and can then use it from workflows.

When Start Voice Conversation is selected, BotLance does not require you to paste a static Voice Agent link into the Button. Instead, it uses the existing Voice AI Action configuration and creates a unique secure session link for that customer when the Button message is sent. This keeps the detailed voice configuration in one place while allowing the Message Node to use it whenever the workflow needs to start a voice experience.

Decide Where the Workflow Goes Next

After configuring what happens when the Button is tapped, the Then Continue section determines where the workflow should go afterward. Next step follows the normal connector from the current Message Node and is the default behaviour. Choose existing step lets the Button jump directly to another node that already exists in the same workflow. Start Another Flow launches another published automation, allowing a reusable workflow to be started instead of rebuilding the same sequence again. End the flow stops the workflow on that Button path.


The important point is that the immediate action and the continuation are separate. A Button can open a website and still continue to another workflow step, or it can open the tracked booking experience and then route the workflow somewhere specific. Connecting a node on the canvas does not remove the Button action that has already been configured.

Add an Image Gallery

If you scroll further down inside the same Message Node, you can add a Gallery block from the Add Content Block area. The Gallery block is used when you want to show multiple visual cards inside the conversation instead of sending only plain text or a single media item. This is especially useful for showcasing products, services, portfolio items, featured offers, or any situation where the customer should be able to browse several options in one place.

When you open the Gallery block, BotLance allows you to add between 2 and 10 images. Each image becomes its own gallery card. You can add a new image, replace an existing one, paste an image URL, and reorder the cards if you want to change the sequence in which they appear. This is helpful when the order matters, such as showing a featured service first or arranging products in a preferred display order.

For each gallery card, BotLance currently lets you configure a Title, an optional Subtitle, and an optional Card Link. In the current builder, both the Title and Subtitle support up to 80 characters, which gives enough room for a short heading and a clear supporting description without making the card too heavy.

The Title is the main label of the card and should usually be short and clear. The Subtitle is optional and can be used to briefly describe the item, service, or offer shown in the image. The Card Link is also optional, but it becomes very useful when you want the card itself to be clickable. If a link is added, tapping that card opens the provided URL.

This means the Gallery block is not just for decoration. It can also guide the customer to a product page, service page, booking page, offer page, or any other destination you want them to open after tapping a card. If no link is provided, the card can still serve as a visual presentation item inside the conversation.

The strength of the Gallery block is that it keeps everything inside the same Message Node. Instead of sending several separate images one by one, you can present a structured visual selection in a cleaner and more interactive way. It also helps when you want the customer to compare options quickly without scrolling through many separate messages.

As with other content blocks, the Gallery option only appears where it is supported for the selected workflow channel. If the chosen channel does not support gallery-style presentation, BotLance will not offer this block there. Where it is supported, the Gallery block gives you a compact way to combine visuals, short descriptions, and clickable destinations inside one part of the workflow.

Send Live Information with Dynamic Reply

The Dynamic Reply block lets a Message Node retrieve live information from an external API and immediately use the returned result as part of the customer conversation. The API itself is not configured inside the workflow. Instead, BotLance reuses an existing Custom Action that has already been created at the workspace level, so the endpoint, HTTP method, headers, authentication, request body, response settings, and other API configuration stay in one central place.

To use Dynamic Reply, first create and enable an HTTP Custom Action from Custom Actions. When you return to the Message Node and add the Dynamic Reply block, the Custom Action dropdown shows the enabled HTTP actions available in the same workspace. Select the action you want to run, and BotLance will execute that action whenever the workflow reaches this block.

This approach is useful because the same Custom Action can be reused in several parts of BotLance without rebuilding the API connection each time. An AI Agent can use it as one of its available capabilities, a Dynamic Reply can use it to produce a customer-facing message, and an External Request inside a workflow can use it for background processing. The API configuration remains global while each place decides how the returned information should be used.

When Dynamic Reply runs, BotLance builds the request using the current workflow and contact context. Values already available to the conversation, including supported System Fields, Custom Fields, and workflow variables, can therefore be used by the Custom Action when its configured request is executed.

Choose How the Response Becomes a Reply

The Response format setting controls how BotLance should turn the external response into the message sent to the customer.

With Auto — send the full reply, BotLance uses a response that is already suitable for messaging. This can be simple text or a supported structured response containing message content. Dynamic responses can also include supported media or gallery content where the selected channel allows it, so the external service is not limited to returning plain text.

If the API returns a larger JSON object and only one particular value should be shown to the customer, choose Text from JSON path instead. You can then specify the path to the required value, such as $.data.reply, and BotLance sends that selected text rather than exposing the complete API response.

This makes Dynamic Reply suitable for both simple APIs that already return a ready-to-send answer and more traditional APIs that return larger structured JSON responses.

Use Returned Data Later in the Workflow

A Dynamic Reply can also make returned values available to later workflow steps when the selected Custom Action has Response Mapping configured.

For example, suppose an API returns a product name, price, and availability. The Custom Action can map those returned values, and Dynamic Reply can make them available to the current workflow run. A later Message, Condition, or Action can then use those values instead of calling the API again.

The optional Variable prefix helps keep these returned values organized. If the Custom Action maps a field called price and you enter product as the prefix, that value becomes available to later workflow steps as something like {{product_price}}. This is particularly useful when a workflow calls more than one external service and you want to avoid similarly named values becoming confusing.

The prefix does not change the API itself. It only controls how mapped values from this Dynamic Reply are named inside the current workflow run.

Add a Fallback Message

External services can sometimes be unavailable, return an unexpected response, or fail to provide the value your workflow expects. The Fallback message is what the customer receives in that situation.

For example, you might use:

“Sorry, I couldn't retrieve that information right now. Please try again shortly.”

BotLance uses the fallback instead of exposing a raw API error or technical response to the customer. It can be used when the selected Custom Action is unavailable or disabled, when the HTTP request fails, or when the returned response cannot be converted into the configured reply format.

Execution details are also recorded with the selected Custom Action, so failed or successful Dynamic Reply requests can be investigated from the Custom Action's logs rather than troubleshooting blindly inside the Message Node.

Dynamic Reply vs. External Request

Dynamic Reply and External Request can use the same Custom Action, but they serve different purposes.

Use Dynamic Reply when the API result should become part of the conversation immediately. The workflow reaches the block, runs the Custom Action, receives the result, and sends the appropriate reply to the customer.

Use External Request when the workflow needs to call an external service in the background without automatically sending the returned response as a customer message. In that case, mapped values can be stored in the current workflow run and used by later Message, Condition, or Action steps.

The AI Agent uses the same shared Custom Action in another way: rather than executing it because a fixed workflow step was reached, the Agent can choose the Action when the customer's request makes that capability relevant.

This shared architecture means you configure the external system once and then reuse it wherever it is needed, while BotLance controls whether the result is used by the AI Agent, sent directly through a Dynamic Reply, or processed silently by an External Request.