To add a step to your flow, click Add an action in the automation editor. This article uses the exact action names shown in that panel.
Actions marked (Scale) require the Scale plan or higher. An automation that contains one cannot be activated on a lower plan.
About the 24-hour window: free-form messages (Send Message, Send Image, Send Video, Send Audio, Send Message with button link, Ask text, Ask List Option) are only sent if a conversation is open, meaning the customer wrote to you or clicked a button within the last 24 hours. Otherwise, use Send Template. The editor flags a free-form message placed in the wrong spot.
Sends a WhatsApp template approved by Meta. It is the only message that can be sent outside the 24-hour window, so it is required as the first message after a Post-purchase, Abandoned cart, Shipment update, Incoming webhook or Recharge event trigger. Create your template directly from this node in the editor, and insert its variables with Add a variable. Each quick reply button of the template creates a branch.
Sends an approved carousel template: several cards with an image or video and buttons. Like Send Template, it can be sent outside the 24-hour window.
Sends a free-form message: up to 1,024 characters of text, with an optional image (JPG, PNG) or video (MP4) header and up to 3 quick reply buttons (20 characters each). Each button creates a branch. These buttons do not open links: for a link, use Send Message with button link.
Send a media file on its own, without text: an image (JPG, PNG), a video (MP4) or an audio file. For media with text, use Send Message with a header.
Sends a text with a button that opens a link. Fill in the button text (20 characters max) and the CTA link. The link can be a variable, for example the cart link {{variables.shopify_abandoned_checkout_url}}. Optional: an image or video header and a footer (60 characters). Kanal replaces the link with a tracked link to count clicks.
Asks a question and saves the customer's written answer in a contact variable (size, email, birthday...). The flow waits for the answer before moving on. The variable name contains letters, digits or _, with no spaces and no digit at the start. You can then reuse it as {{variables.variable_name}}.
Sends an interactive list of options. The customer opens the list with a button (20 characters) and picks a row. The list holds up to 10 rows in total, grouped in sections. Each row has a title (24 characters), an optional description (72 characters) and creates its own branch. Optional header and footer (60 characters).
Pauses the flow for a duration in days, hours, minutes or seconds. A wait of 24 hours or more closes the conversation window: the next message must then be a template.
Splits the flow into two branches: "Yes, conditions are met" and "No, conditions are not met". Every condition is described in Conditions available in an automation.
Splits contacts at random, 50% into branch A and 50% into branch B, to compare two messages. No settings needed.
Sends the contact to another node of the same automation, for example to go back to a menu. The trigger cannot be chosen as the destination.
Saves one or more variables on the contact record: a name, a type (Text, Number, Boolean, Date) and a value, which can contain other variables. For a Number variable, a value such as +5 or -3.2 adds or subtracts that amount from the current value. Contact variables can be reused in messages ({{variables.name}}) and in segments.
Adds the contact to a static list, or removes them from it. Lists are managed in Lists & Segments and can be used as a campaign audience. See Understanding and using lists.
Adds a note at this step of the flow.
Changes the contact's consent status: opted in, opted out or unknown. The change is recorded in the contact's history. Example: opt in a customer who signs up with a keyword. An opted-out contact no longer receives any automation message, transactional messages included.
These actions require a connected Shopify store. With several stores, pick the store in the node.
Adds or removes tags (up to 20 per node) on the Shopify customer linked to the contact. Useful to segment customers in Shopify or to trigger your other tools.
Creates a unique Shopify discount code for the contact. You set the prefix (KANAL by default, the hyphen is added automatically), the type (percentage from 1 to 100, or a fixed amount in EUR) and the validity (24 hours, 7 days, 30 days or unlimited). Insert the code in the next message with {{variables.voucher_code_ID}}. If generation fails, the rest of the flow does not run. See Generate Dynamic Shopify Discount Codes.
Calls an external https URL from the flow, for example to query your back-office tool or enrich your CRM.
Method: GET or POST.
Headers: up to 10, for example your tool's authentication key.
Parameters: up to 20, each set to the contact ID, the phone number, the timestamp, the automation ID, a trigger field or a custom value (which can contain variables).
Response mapping: enter the path of a field in the JSON response (for example data.status) and a variable name, up to 10 fields. The value becomes {{variables.api_response_ID_name}}, offered in the variable picker of the next nodes.
Test API call: runs the call from the panel so you can check the response before activating the flow.
If the call fails (any response other than 2xx), the flow follows the failure branch.
Acts on the customer's Recharge subscription. Requires the Recharge integration.
Add a product to the next order: only works after a Recharge event trigger related to a charge (Upcoming renewal, Payment failed, Payment permanently failed, Renewal paid).
Start a subscription: "On the next order (recommended)" or "From this order".
The price is optional: if left empty, the regular price applies.
If the action fails, the rest of the flow does not run.