Skip to content

Every workflow step, and what it does

A workflow is one trigger and a chain of steps. This page is the reference for the steps. Press a step’s card on the canvas and its settings open in the drawer on the right; the heading in that drawer links back here.

  • Drag empty grid to move around, with a mouse or a finger. Centre fits the whole workflow on the screen. A click on empty grid closes the drawer.
  • Copy and Delete sit under each step’s name in the drawer, and on the card when you hover over it or have it open.
  • Deleting a step in a chain takes only that step, and the steps under it move up to take its place. The message that confirms it has Undo. A step with more than one road in use (an If / Else, or a question with steps on its Answer did not fit road) takes the steps on those roads with it, and asks first.
  • After Copy, press any + and pick Paste. The pasted step keeps its roads and their conditions, with nothing under them yet.
  • Cmd-Z undoes and Cmd-Shift-Z redoes. Cmd-S saves. Delete removes the step you have open, when the canvas has focus.
  • The top bar says Unsaved changes until you press Save. Leaving before that asks first.

Before the list: four limits that apply to all of them

Section titled “Before the list: four limits that apply to all of them”
  • A single run lives for at most 7 days. A Wait longer than that, or a question nobody answers, ends the run rather than sitting there.
  • A run sends at most 6 messages in one turn and 30 across its whole life. A chain that tries to send more stops sending, it does not loop.
  • Nothing runs at all until two switches are on: you publish the workflow, and your district admin has turned workflows on for the team. The list page says so when the second one is off.
  • A workflow runs only on conversations from your own businesses. One owned by your district admin can run on anybody’s, and having read access to a colleague’s inbox does not count.

When a message a workflow queued is held back

Section titled “When a message a workflow queued is held back”

A workflow’s messages wait a few seconds in a queue before they go. One is held back, and never sent, when:

  • you or a colleague wrote to that lead after it was queued. Your words came first, and an automatic line arriving after them would talk over you.
  • the lead asked not to be contacted.

Handing the chat to a person, or closing it, does not hold a message back on its own. A workflow started by Booked or by a closed chat still sends.

Tags, contact details, statuses and closed chats start workflows whoever changes them: you in the CRM or the Inbox, a colleague, or an AI agent. A change made by hand is picked up within a minute.

Shortcut is the one nothing in the app starts for you by itself. A workflow on that trigger becomes a button in the conversation itself: open a thread in Inbox, press Shortcuts in the header, and pick it. Give the trigger a form and you’re asked those questions first, and your answers are there to use in the steps below, which is how the Escalate and Log A Call templates are built.

Chat Starts fires on a contact’s first message ever. Switch on Also when they write again after a quiet spell and it fires again when somebody writes after the hours you set with nobody writing either way, or writes into a conversation that was closed. Anybody who opted out is never reopened this way.

Starts a workflow when another app sends details to a web link of your own: a website form, Zapier, Make, or a Lark automation.

To connect one:

  1. Set the trigger to Another App Sends a Contact.
  2. Add a Business condition and pick which of your businesses the contact belongs to.
  3. Press Save, then copy the Web link and the Secret key from the trigger.
  4. In the other app, POST JSON to that web link with the header Authorization: Bearer and your secret key.
  5. Publish the workflow.

The payload needs a phone number, sent as phone. Everything else you send is yours to use in the steps: "budget": "5k" becomes $trigger.budget in a message. A name arrives as name, and source sets what the lead’s source reads as.

A number the app has not seen gets a conversation on that business and a CRM card, the same as somebody who writes in.

Note that 120 calls an hour is the ceiling for one workflow. Note that nothing runs while the workflow is a draft, or while your district admin has workflows or texting new leads switched off.

Each call starts its own journey, so a form sent twice runs the workflow twice. Run only once for each contact, in More options, stops the second one.

Sends what you write to the contact on WhatsApp.

  • Up to 2,000 characters.
  • Put --- on its own line to split one step into two messages. The pause between them is 3 seconds by default, and you can set it from 0.5 to 60 under More options.
  • Switch Type to With a picture or file to attach one. A media message can go out with no words.
  • Send from is the number the message goes out on. The number they last talked to is right for almost every workflow.
  • Add a road for when it cannot be sent, under More options, gives the step a second road, Could not send, for when WhatsApp would not take the message. Without it, a failed send ends the run.

Use Add their name or details under the box to put the lead’s own details into the words. Pick from that list rather than typing: a placeholder you spell wrong is sent to the lead exactly as you wrote it.

Sends a question and then holds the thread open until the contact answers.

  • Kind of answer changes what counts as an answer: Text, Pick from options, Number, Date, Phone, Email, Website link, Rating or Location.
  • Pick from options needs at least 2 options and each one is at most 20 characters, because the options are sent as a list the contact reads on a phone.
  • Save their answer three ways, and you can use more than one: On their card, For later steps (to put in messages and checks further down), or As a tag.
  • Add a road for no reply, under More options, gives the step a No reply road for the contact who never answers. Anything from 1 second to 7 days.
  • Every type except Text can refuse an answer: an email that is not an email, a rating that is not 1 to 5, a reply that is none of the options. Switch on Add a road for an answer you cannot read and put something on its Answer did not fit road, usually a line saying you did not catch it and a jump back to the question. Without the road, a contact who answers the wrong way hears nothing back and the workflow stops, so it will not publish until the road is there.

Splits the road by what is true about the contact.

  • Up to 9 paths plus Everyone else. Contacts who match none of them go down Everyone else. Press Add a Path for another.
  • Paths are checked from the top and a contact takes the first one that matches. Use the arrows beside a path’s name to change the order.
  • Every path needs at least one condition or the workflow will not publish. A new path has none: press Add condition.
  • For an answer saved earlier in the workflow, pick Saved answer and choose the answer from the list. Each one is named by the question that saved it.
  • Conditions read contact details, tags, answers saved earlier, the business, the last message either way, and how long it has been since one.
  • contains means whole words, any one of a comma-separated list. yes, keen, sure matches “yes keen” and does not match “yesterday”.

Pauses before the next step. Minutes, hours or days.

The 7-day run limit is the one to watch. A Wait of more than 7 days will not publish, and a 5-day wait inside a workflow that already waited 3 days leaves nothing after it. For a follow-up a month out, close the conversation and use a separate workflow on a later trigger.

Checks the clock, and sends contacts down Inside your times or Outside your times.

  • Opening hours takes a row per day with its own open and close time. Monday to Friday, 09:00 to 18:00 to begin with.
  • Dates takes a start and an end date, for a campaign with a closing date.
  • The time zone is Singapore unless you change it.
  • At least one day has to be switched on, or the workflow will not publish.

Puts a named person on the conversation. Hand it to offers four answers:

  • You, the advisor the workflow belongs to.
  • Somebody in your team, then Who to pick them. The list is everybody in your district who has a lead sheet.
  • Share it out across the team, then How to share out: Take turns: whoever has waited longest, or Fewest chats: whoever has the fewest open.
  • Nobody: let it go, which takes the conversation off whoever was holding it and hands it back to automatic replies and AI without alerting anybody.

From this step no AI agent and no automatic reply answers over the person holding it, and your alert number is sent their name. Steps after it still run, messages included.

Whoever it goes to is told directly as well. Their bell rings, and the same message reaches their Telegram and WhatsApp assistant when either is connected, with the lead’s name and the last thing that lead said in it. That person can open and answer that one conversation, even though the lead sheet belongs to a colleague. See Work handed to you for their side of it.

Handing a conversation to the person already holding it changes nothing and tells nobody again.

Sets the contact’s status to New, Replied, Booked, Won or Lost: the five words the Inbox filters by, so the rest of the team sees where the lead stands.

Offers the next few times your Pick a Time page says you are free, and books the one they pick. Your page’s own hours, buffers, notice period and daily cap all apply, the appointment shows in your Pick a Time bookings and on the lead’s card, and they get your usual confirmation email with its cancel and reschedule links.

Pick which booking page, what to say above the times, how many times to offer (3 to 6) and how far ahead to look.

Their card needs an email address, because that is where the confirmation goes. Put an Ask a Question for it, saved to Email, before this step when your leads may not have one.

Two roads leave it. Booked carries on with the time in $var.appointment. Could not book is taken when nothing is free, the card has no email, the time went while they were choosing, or Pick a Time is not connected; the reason is in $var.appointment_problem. Switch on Add a road for nobody answering if you also want a No reply road.

An answer that matches none of the times is asked once more before the step gives up, so “the second one” and “Wed 3pm” both work.

Moves the lead’s card to a column on your Contacts board, for example from New lead to Appointment set. The column is matched by name when the step runs, so a workflow that also runs for a colleague’s leads moves each card on that person’s own board. A board with no column of that name is left alone, and the sheet’s log says so.

This is different from Set Their Status above: the status is the five words the Inbox filters by, and this is the column you drag cards between.

Adds or removes tags. Type them comma separated; tags already in use are offered as you type.

Writes a value onto the contact’s card. The value can be an answer saved earlier in the workflow: press Add their name or details under the box and pick it.

Writes an internal note on the conversation, stamped with this workflow’s name. The contact never sees it. Use it to tell whoever picks the thread up what the workflow already found out.

Reopens a closed conversation so the thread is back in the Inbox. Nothing to set up.

Closes the conversation, with a note about how it ended and an optional reason. Both are written to the thread, so the next person to open it can see why it ended.

Sends the contact back, or forward, to a step you name.

  • At most this many times is between 1 and 10, and defaults to 3. It is what stops a circle running for ever.
  • A jump that goes round a loop with no Ask a Question, Wait or Hand to an AI Agent on the way is refused at publish: the builder says the steps go round in a circle. Something on the circle has to pause for the contact or the clock.

Hands the contact to a second workflow. This workflow ends at this step, so the builder offers no + under it.

The workflow you name has to be published and has to use the Started by Another Workflow trigger. You can send the contact to its beginning or to a step part way down it.

Hands the conversation to one of your AI agents, which answers from there on.

This workflow ends at this step, so the builder offers no + under it. Use it when the script has taken the lead as far as a script can.

The agent has to be published, and your district’s AI replies switch has to be on, or nothing answers.

Borrows an agent for a single answer, in its knowledge and its voice, and then the workflow carries on to the next step.

Under What it should do this time, say what it should do in this one turn. The brief is required. Leave Wait for their reply on if the answer is a question.

Use this where a script cannot cover what somebody said, but you still want the rest of your steps to happen. Use Hand to an AI Agent instead when you want to hand the whole conversation over.

Sends the contact’s details to another app: a Lark or Slack group, Zapier, Make, or a Google Apps Script.

To send a message to a Lark group:

  1. In Lark, add a custom bot to the group and copy its webhook address.
  2. Paste the address into Web link to send to. It has to start with https://.
  3. Under What to send, press Lark message. It already has the contact’s name and number in it.
  4. Press Send a test. The group gets a message about Test Contact.

The step has two roads. Sent means the other app accepted it, answering with a code in the 200s, within 10 seconds. Anything else takes Did not go through, and the reason goes in your activity log.

An app that wants a key, or a request type other than POST, is set under More options.

Anything you put inside quotes in a JSON body is escaped for you. A first message with quotes or line breaks in it can’t break the body.

Open Save parts of the app's reply to keep the reply code, or a value from a JSON reply, under a short name. The steps under it can put it in a message with Add their name or details, and an If / Else can check it.

Note that Lark answers 200 even when it turns a message down. Send a test shows its reply, which reads "code":0 when the message went through.

Note that one turn makes 5 requests at most, and one conversation sets off 10 a minute across all its workflows. A request past that takes Did not go through. Addresses on a private network and http:// addresses are refused.

Holds the contact until the next day and time you pick, in Singapore time, so a follow-up lands at 9am on a working day rather than at 3am.

Pick the days under On these days, and the time. If that time today has already gone, it waits for the next day you picked.

Note that a workflow runs for 7 days at most. One day a week can use all of it, and the builder says so on any step below that could then be missed.

Sends your own words to your team about this contact. The contact is not messaged, and the workflow carries on to the next step.

It goes to the Lark group set under Workflows > Handovers when the business has one, and to your alert number on WhatsApp when it does not. You can also pick one or the other.

Use Add their name or details to say who it is about.

Adds a task to the list of whoever owns the business, linked to the contact, so opening the task opens the person.

Give it a title, notes if you want them, a due date (No date, In 4 hours, Tomorrow, In 3 days or In a week) and a priority.

Records an activity against the contact for whoever owns the business, the way logging one by hand does, so it reaches the same stats and streaks.

Pick the activity, and add notes if they help.

Note that it carries no points unless you switch Count its points on. The workflow logged it, not you, and points that award themselves make the league table meaningless.