Workflow Steps

Resool Team · · 8 min read

Workflow steps are the actions a workflow runs after its trigger. Resool steps can talk to the customer (send messages, ask questions, send WhatsApp templates), control the path (branch, wait, jump, end), update the contact and the conversation, hand the conversation to an AI agent, call any HTTP endpoint, and work in the apps you've connected: add rows to Google Sheets, post to Slack, create invoices, tasks, tickets, meetings and store updates.

How to add a step

  1. Open a workflow and click + under the trigger or between two steps.
  2. In Add a step, pick a step. Steps are grouped into Messaging, Logic, Contact, Conversation, Apps, Stores, Accounting, Tasks & docs and Files.
  3. Fill in the step in the right panel. A step with missing fields shows a warning and blocks publishing until you fix it.
  4. To remove a step, select it and click Delete step.
Screenshot placeholder

Workflows › open a workflow › click + under a step

The "Add a step" menu with all groups visible: Messaging, Logic, Contact, Conversation, Apps, Stores, Accounting, Tasks & docs and Files, each step with its icon and one-line description.

File: screenshots/workflow-steps-add-menu.png

Steps are grouped by what they do.

Messaging steps

StepWhat it does
Send a messageSends a text to the customer in the conversation.
Send a WhatsApp templateSends an approved WhatsApp template. Works outside the 24-hour window and can open a conversation with a contact who has none yet.
Ask a questionSends a question, waits for the customer's reply and saves it.
AI agentHands the conversation to the AI agent on that channel and ends the workflow. See AI Agents.

Ask a question

  • Question: the text the customer sees.
  • Buttons: up to 10 quick replies the customer can tap (optional, up to 20 characters each).
  • Save the answer to: An internal note, Contact name, Contact email, Contact phone or A custom field (enter its Field key).
  • Give up after (minutes): how long to wait for an answer, up to 7 days. Leave it empty to wait indefinitely.
  • If nobody answers, go to: the path to take when time runs out.

On the canvas a question has two paths, Answered and No answer. Use {{answer}} in later steps to repeat what the customer said.

Screenshot placeholder

Workflows › open a workflow › select an Ask a question step

The step panel with a question, two buttons (Sales, Support), Save the answer to set to A custom field with a field key, and Give up after set to 60 minutes; on the canvas the Answered and No answer paths.

File: screenshots/workflow-steps-ask-question.png

Ask a question with buttons and save the answer to a contact field.

Send a WhatsApp template

  1. Pick a Template (only approved templates are sent), or click New to create one.
  2. Fill in each Variable ({{1}}, {{2}}…). You can use workflow variables such as {{contact.name}}.
  3. Turn on Wait for the reply to pause until the customer taps one of the template's quick-reply buttons (for example Confirm or Cancel), then add a Branch after it on the button.

If a template isn't approved by Meta yet, the step is skipped until it is. See WhatsApp Message Templates.

Logic steps

StepWhat it does
BranchSends the contact down the first branch whose conditions match, from top to bottom. When none match, the contact takes the Else path.
WaitPauses for a set number of minutes (up to 30 days) before the next step.
Jump toContinues from another step (Go to step). Useful to repeat a question.
EndStops the workflow here.

Branch

Each branch has a Branch name and works in one of two modes:

  • Button reply: when the branch comes right after a question with buttons or a template that waits for a reply, pick the buttons under Button reply is.
  • Conditions: add up to 10 conditions and choose Match all conditions or Match any condition.
ConditionOperators
Channel type, Channelis, is not
Message textcontains any of, contains none of, is exactly
Contact tag, Conversation labelhas, doesn't have
Lifecycle stageis, is not
Working hoursinside working hours, outside working hours
New contactthe contact is new
Languageis Arabic or English

You can have up to 8 branches plus Else. Drag branches to change their order.

Screenshot placeholder

Workflows › open a workflow › select a Branch step

The Branch panel with two branch cards (one in Button reply mode with "Sales" selected, one in Conditions mode with "Working hours outside working hours"), the Add branch button and the Else note; the coloured paths on the canvas.

File: screenshots/workflow-steps-branch.png

Branch by the button the customer tapped or by conditions.

Contact steps

StepWhat it does
Update contact fieldSets Name, Email, Phone, Language (ar / en) or a Custom field to a value. Values can include variables.
Add or remove tagAdds or removes a tag on the contact.
Update lifecycleMoves the contact to a lifecycle stage.

Conversation steps

StepWhat it does
Assign toAssigns the conversation to A team, A teammate, or Nobody (unassign).
Open or close conversationOpen the conversation, Mark as pending or Close the conversation.
Add commentAdds an internal note to the conversation. Customers never see it.

HTTP request

The HTTP request step (in the Apps group) calls any URL with the contact's data, for example to update your own system.

  • Method: GET, POST, PUT, PATCH or DELETE.
  • URL: must start with https://. Private and local addresses are refused.
  • Headers: up to 10, for example an authorization header for your API.
  • JSON body: variables like {{contact.name}} are filled in and escaped for JSON.

For the opposite direction (another system starting a workflow), use the Incoming Webhook trigger. See Workflow Triggers.

App steps

App steps appear once you connect the app in Settings › Apps. If an app isn't connected, the step shows a Connect hint with a link.

GroupStepApp
AppsGoogle Sheets row: adds a row with the contact's data, or updates the row matching a columnGoogle Sheets
AppsSend Slack messageSlack
AppsSend Discord messageDiscord
AppsCreate Zendesk ticket (optionally with the conversation in the description)Zendesk
AppsCreate Zoom meetingZoom
AppsCreate Webex meetingWebex
AppsAdd / update Mailchimp subscriberMailchimp
AppsAdd / update email subscriberKlaviyo, Constant Contact, GetResponse, Kit
StoresUpdate order status, Add order tag or note, Create or update customerShopify, WooCommerce, Salla, EasyOrders, Wix, BigCommerce, Square, Foodics, Gumroad
AccountingCreate invoice, Create customerWafeq, Odoo, QuickBooks, Xero, FreshBooks, Wave, Zoho Books
Tasks & docsCreate Notion database itemNotion
Tasks & docsCreate Asana taskAsana
Tasks & docsCreate Trello cardTrello
Tasks & docsCreate / update Airtable recordAirtable
Tasks & docsCreate Jira issueJira
Tasks & docsCreate GitHub issueGitHub
Tasks & docsCreate ClickUp taskClickUp
Tasks & docsCreate monday.com itemmonday.com
Tasks & docsCreate Linear issueLinear
Tasks & docsCreate Todoist taskTodoist
Tasks & docsCreate Basecamp to-doBasecamp
Tasks & docsAdd Smartsheet rowSmartsheet
Tasks & docsCreate Google TaskGoogle Tasks
FilesSave conversation to Dropbox (transcript, optionally with attachments)Dropbox
FilesSave conversation to BoxBox

Store steps depend on what each store allows. For example, Foodics and Gumroad don't let other apps change an order's status, and the step panel explains how each store maps the status you pick.

Variables from app steps

Some app steps leave values that later steps can send to the customer:

  • Create Zoom meeting: {{zoom.join_url}}, {{zoom.start_time}}, {{zoom.topic}}, {{zoom.password}}, {{zoom.meeting_id}}.
  • Create Webex meeting: the same fields as {{webex.…}}.
  • Create invoice: {{invoice.number}}, {{invoice.total}}, {{invoice.currency}}, {{invoice.due_date}}, {{invoice.status}}, {{invoice.id}}.

For example: Create invoice, then Send a message with "Your invoice {{invoice.number}} for {{invoice.total}} {{invoice.currency}} is ready."

Notes and limitations

  • A workflow can have up to 100 steps; a branch step up to 8 branches; a wait up to 30 days; a question timeout up to 7 days.
  • Messages, questions, assignments, status changes, comments and the AI agent step need a conversation. For contacts without one (for example from a store or form trigger), these steps are skipped.
  • Regular messages on WhatsApp can only reach a customer inside the 24-hour window. Use Send a WhatsApp template outside it. See Messaging Windows and Templates.

FAQ and troubleshooting

Publishing says "Step 3 is incomplete". What do I do?

The builder selects the step for you. Fill in the highlighted fields (for example the message text, the template, the team or the tag) and publish again.

My Branch always goes to Else.

What you can do:

  • Check that each branch has at least one condition, or at least one button picked in Button reply mode.
  • With Match all conditions, every condition must be true. Try Match any condition.
  • For Message text … is exactly, the reply must match the text exactly. Use contains any of for looser matching.

Can a workflow wait for a reply to a WhatsApp template?

Yes. Turn on Wait for the reply in the template step, then add a Branch in Button reply mode right after it.

What happens after the AI agent step?

The workflow ends, the conversation is unassigned from any teammate, and the active AI agent that answers on that channel takes over, following its own hand-off rules. If no active AI agent answers on the conversation's channel, the step fails and the conversation stays as it is. See AI Agent Hand-off and Testing.

What's next?

Can't find what you're looking for?

Our team replies by email, usually within one business day.