Contact Variables
Contact Variables @contact - references the contact receiving the message. This is the active contact - the person whose responses are being handled by the workflow. When using the Send a Message to Someone Else action, @contact refers to the contact or group of contacts to which the message is being sent. Each extension, e.g. @contact.name or @contact.fields.fieldname, references a specific contact field. @contact -PopularCalling a Webhook
In the example above, we're asking contacts to send their name, which will look up their PID using a webhook with Airtable. Webhooks simply POST flow data structured as JSON to an external service every time a contact reaches a Call Webhook action. When a contact reaches this node, we'll call the URL you've configurePopularConfiguring a Webhook with Airtable
Airtable enables you to build and organize databases for just about any project you could imagine. The basic version is totally free to use and allows for real time collaboration with team members, making it an ideal data organization tool. In the example below, we're using the Call Webhook action in a flow to look up sales agents by zip code as stored in an Airtable database that we've created. Build your AirtablePopularIntroduction to Flows
A flow is a visual representation of conditional branch logic that's applied to your contacts once they enter it. Once a contact has entered a flow, they interact directly with its nodes. Nodes are composed of actions and Split Actions, and determine the length of a flow, which can be as short as a single node or as long as you want. Actions An action (/en/article/actioPopularSending Messages with a Flow
In the example below, we've asked an initial question, received a response, and created a new Send Message action that will send automatically when a contact reaches that node in the flow: We'd then go on to create Send Message actions for each of the possibleSome readersGlobal Variables
Globals are shared values that can be referenced in flows, as well as broadcasts and campaigns, within your account referenced by @globals.valuename. They allow you to create a value once and use it repeatedly without having to reenter the value. Likewise, globals make updating a shared value much easier. Rather than manually changingSome readersAdding Timeouts to a Flow
When your contacts don't respond to a message in a flow, you can add a timeout to send an automatic message. This feature allows you remind your contacts to respond, to let them know they can restart the flow at a later time, or to place other actions on non-responsive contacts, such as adding or removing them in a group, sending an email, and more.Some readersFlow Types
We provide four flow types that are made available depending on the capabilities of the channel you've connected to your account. Messaging flows are applied to SMS and social media channels while Phone Call, or Interactive Voice Response (IVR), flows differ in structure. Background flows will allow you to run the flow without interruptiSome readersStarting another Flow
Use the Enter another Flow action to move your contacts from one flow to another from within a flow. Once a contact passes through this node, they will be removed from the current flow and start another. In the example below, we're directing contacts from a "Registration" flow to a different flow titled "Create New Patient" where we will create a new patient contact.Some readersBackground Flows
Contacts can only be active in one Messaging flow at a time, but what if you want to send a flow that can perform actions that do not require a response from the contact? You can do this with a Background flow. Using Background flows comes in handy when you need to perform additional actions upon a contact or group but you don't want to interrupt any active flows. Building a Background Flow First, you'll click on the Flows tab at the top of the browserSome readersSplit by Flow Result
Use this Split Action to evaluate a sequence of values separated by a space ( ), period (.) or plus sign (+). As an example, you might record the birth of a child by soliciting messages in the following format: "birth gender + name + mother's birth year ," which could yield the result "birth f+Noel+1985". In the case above, the term "birth" acts as a keyword trigger, initiating the flow. In the following examplFew readersStarting a Flow
A flow can be started in one of many ways: You can manually start a flow at any time via the "Start Flow" box in the flow editor. Keep reading below to learn more! A flow can be started by a campaign event. A flow can be started by a number of triggers:Few readersSending Airtime with DT One
The action Send Airtime enables you to transfer airtime to prepaid phones on over 550 mobile operators across 160 countries through one single API connection with DT One, formerly TransferTo. See how to create your DT Shop account at the end of this article. Enabling Airtime Transfer After setting up yourFew readersExporting Flow Results
Exporting results from a single flow To export your flow results, simply choose the flow you'd like to view under the Flows tab, then click the ☰ menu icon in the upper right-hand corner: Next, choose "Results": You'll be brought to the results page for yFew readersFixing Missing Dependencies
In some cases, you might find that a flow depends on something that no longer exists. When this happens, you will see the action title in red (as seen above) to let you know that a flow issue is present. For example, you might be looking at a flow that references a contact field by using an expression like @fields.age. However, at some point you may have deleted the contact fieFew readersStart Somebody Else in a Flow
Use the Start somebody else in a flow action to place a separate contact or group in a flow when a contact reaches this step. In the example below, we're starting fathers, referenced using the contact variable @fields.spouse, in the "Questions for Dads" flow when the expecting mothers reach the second step of a registration flow. Create that step by adding a new node aFew readersResponse Rules
Response rules evaluate the operand designated by the Split Action type. In the example below, we see that a Wait for Response action evaluates the incoming message, or the @input.text operand. Response rules provide a series of tests that you can run against the selected operand. For example, the "has only the phrase" response rule tests the operand for any of the words you designate. Response rules are executed from top to bottom–the first rule that matches takes effectFew readersSetting your Contacts' Language Preferences
Using a Flow Use the Update the Contact action to update your contacts' language preferences from within a flow. Contacts will then receive messages in their preferred languages if the flow they're interacting with has been translated. In the example below, we'Few readersCreating a Multi-Language Flow
Once you've set your account's primary and secondary languages, you can edit your flows to toggle between multiple languages depending on your contacts' language preferences. Once you have selected the languages for your workspace, you can create multi language flows by following these steps: Navigate to the Flows tab and create a flow. Select the flow's primary language. This will be the language you'll see when designing youFew readersIntroduction to Flow Variables
By default, a flow containing Split Actions contains a collection of variables resulting from each Split Action evaluation. For example, the Wait for Response action below will produce the flow variable @results.phone when a contact responds and passes through it to the next node. Each variable starts with the @ symbol, which triggers an auto-complete drop-down menu conFew readersSend Somebody Else a Message
Note: @contact inside the Send somebody else a message action refers to the active contact in the run, not the recipient for the message. To reference the details for the recipient, instead start that contact in a flow and use the normal Send message action with @contact . Place this action at any node in a flow to send a message to someone other than the active contact that reaches that point. For example, this action can be used to: alert others of a contact's progress in aFew readersViewing Results
Viewing Results When your contacts interact with a flow, their responses are stored as flow results which you can access by selecting "Results" from the ☰ menu icon in the flow editor: The results page will provide a 'Download' button in addition to an 'Overview', 'Analytics', and 'Runs' tab. Overview Tab In the 'Overview' tab, you'll see the number of responses in totaFew readersAdding Labels to Responses
Use the Label the Incoming Message action to label incoming messages handled by your workflow. Whereas sorting contacts into groups allows you to segment contacts based on their responses, labeling incoming messages allows you to isolate responses to a specific question. Message labels can be viewed - and also created - in the Messages tab. To create a new label, click on the menu icon on your right-side: (https://storage.crisp.chat/users/helpdesk/website/7a9fc4558a9de000/screen-Few readersExporting a Flow
Use this action to export flows. You can export a flow to share with other accounts, or to save a specific version of your flow for later use. To export a flow: Navigate to the flows tab. Click the flow you want to export. Once in the flow editor, click the ☰ menu icon: Select the "Export Definition" option within the ☰ menu dropdown: Choose the flows youFew readersChanging the Default Flow Language
When you create a new flow, you have the option to choose the default language. This means that if a contact does not have a language preference set, then they will automatically receive the flow's messages in the default language. Remember that to be able to translate a flow into multiple languages, you'll need to mFew readersAdding Classifiers to a Flow
Classifiers let you interpret words and phrases into intents you can act on. Various services let you train your own classifier which you can then use in your flows to draw meaning from the unstructured text contacts send you. We support the following classifier platforms: Wit.ai is a Facebook owned natural language platform that supports up to 132 languages. The service is free and easy to use and a great choice for small to medium sized bots. LUIS (https://luFew readersCreating an Image Attachment URL
To collect images from your contacts and generate a URL, you'll need to create two nodes: A Wait for Response action to collect the your contact's image using an open-ended response rule: 2. A Split by Expression action to save the image in your flowFew readersActions
A flow is a visual representation of conditional branch logic that's applied to your contacts once they enter it. Once a contact has entered a flow, they interact directly with its nodes. Nodes are composed of actions and Split Actions, and determine the length of a flow, which can be as short as a single node or as long as you want. Actions (https://storage.crisp.chat/Few readersAdding a Topic to your Facebook Messenger Flow
Facebook has updated their API to require that all messages sent to a contact after 24 hours have an appropriate 'tag', or what we call a 'topic'. Message tags allow you to send important and relevant 1:1 updates to contacts outside the standard messaging window of 24 hours after a contact's last message. You can select the topic to use when sending broadcast messages by clicking on the first message of yFew readersRouting Contacts with Splits
Split Actions are the pivot points in a flow, "splitting" it into new branches. They're conditional statements that enable you to direct your contacts after evaluating: an incoming message or recording a request to a webhook a Zapier flow event an airtime transfer the contact's activity in a subflowFew readersNavigating the Flow Editor
The flow editor is where you'll build & edit your flows. Each time you create or click on a flow, you'll enter the flow editor: Anatomy of the Flow Editor 1. Name The name you gave the flow when you created it. 2. Create Message This button brings up a new node. We generally recommend beginning a flow with a Send Message action, though you may find a dFew readersStarting Somebody Else in a Flow from a Query
The Start Somebody Else in a Flow action allows you to place a separate contact or group in a flow when a contact reaches this step. But what if you want to start contacts who are the result of a search? We've added this new feature to allow you to easily start contacts who fit your query in another flow. In the example flow below, we've asked a school guidance counselor to send the first three letters of a student group's school ID. We alsoFew readersAssigning Keywords to a Flow
You can assign keywords to a flow to allow your contacts to start it at their discretion. A keyword is the first word in an incoming message. To assign a keyword to a flow from the flow editor: (1) Navigate to the flows tab and choose a flow. (2) Select "Edit" from the ☰ menu icon in the top right portion of the flow editor. (3) Add your keyword(s). Note thaFew readersImporting a Flow
Use this action to import flows into your account. To import a flow: Go to either the Flows section in your workspace or the workspace settings page. Click on the ☰ menu at the top right to access the drop-down menu and then click on Import to begin the import process. Choose the file you wish to import and click the 'Import' button. (https://sFew readersUse a 'Split Randomly' Action to Create Evenly-Distributed Buckets
The Split Randomly action can be used for randomly passing your contacts through equally-distributed pathways in your flow. In the example below, we're immediately splitting contacts who enter a flow into two different groups named "A Flow" and "B Flow". We'Few readersOrganizing Flows with Labels
Labels are intended to help you manage a large number of flows. By applying the same label to more than one flow, you can better organize them. To label your flows, first check the boxes next to the flows you want to group together. By clicking on the label button at the top of the list, you'll have the option to apply an existing label or create a new label for the selected flows. (https://storage.crisp.chat/users/helpdesk/website/7a9fc4558a9de000/screen-shot-2023-06-19-at-1237jyep.Few readersSplit by Contact Field
This action is useful to check that your contacts have particular contact fields completed or not. This avoids having to ask your contacts for the same information repeatedly while ensuring empty contact fields are updated. In the example below, we want to see if our contact already has a name saved in their contact information. If they do, we'll route the contact through Has Name. If there is no existing text in the Name contact field, they will be asked to send their name and we'll beFew readersSplitting by Group Membership
Route a contact through a flow's logic using a Split by Group Membership node. This will allow you to send customized messages to a contact depending on their groups. For example, you could stop contacts who've already completed a previous registration flow where they've already been added to a group from restarting all over again: By splitting on the group membership, only cFew readersSetting an Expiration for a Flow
When contacts are inactive in a flow, you may want to automatically remove them after a certain time period. You can do this by setting an expiration. First, enter your flow's editor and click the ☰ menu icon and choose "Edit". Next, choose an expiration time from the dropdown menu. (https://storage.crisp.chat/users/helpdesk/website/aaa0598338783000/4ae026d6-b249-47b7Few readersInvalid Regular Expressions
A Regular Expression, commonly referred to as regexes, can be used to build custom rules that are more advanced. Regexes need to conform to a strict syntax to ensure that they are well understood when they are evaluated. If you find yourself using this advanced form of rule matching, make sure you are familiar with how they are constructed. We use perl style rules for pattern matching. If you are interested, you can read more on the basic syntax we support, here (https://golang.org/pkg/regexFew readersStart Flow Sending Options
When you manually start a flow, you'll notice that there are checkboxes within the dialog box. These are the sending options that: Active contacts: Checking this box means the flow start will only include contacts who have sent a message in the last 90, 180, or 365 days. Skip contacts currently in a flow: To avoid interrupting aFew readersCopying a Flow
Copying a flow is useful when you'd like to create an exact duplicate of your flow or build off of an existing flow's structure. Create a Copy Go to your "Flows" tab. Click the flow you'd like to copy. Click on the ☰ menu icon in the top right-hand corner in the flow editor and choose "Copy": That's it! You will automatically find yourself in the flow editor ofFew readersSending a Message to a Group
Sending a message to a group of contacts is as easy as creating a flow. Once you've created your flow, add an action containing the message you'd like to send and then select your target group from the contacts dropdown in the flow start dialog. Let's walk through the steps. First click on the Flows tab in the navigation bar. From the Flows page, click on "Create Flow". Name your flow and leave the other settings as their defaults, clicking "CrFew readersUsing a Flow to Set a Contact's Language
Need to set a contact's preferred language? You can use a flow to easily automate this. Here's how: Use the Set language for contact action to update your contacts' language preferences from within a flow. Contacts will then receive messages in their preferred languages if the flow they're interacting with has been translated. In the example below, we're asking our contacts which language they prefer - English, French or Arabic. Once the action evaluates their responses for languageFew readersUsing 'Wait for Response' in a Flow
A wait for response split action analyses the response given by your contact and provides you with tools to prepare for your next move. You can set a response rule to evaluate the contact's input and, optionally, continue forward in your flow even when no response is given. Read on to learn more. Setting a Response Rule To evaluate a contact's response, you can set a response rule in your wait for response node. You miFew readersContacts to include when Starting Flows
Before starting a flow, you might not want to start all your contacts and instead target contacts who are: Active Contacts who have sent you a message in the past 90, 180, or 365 days (click the drop-down to change the period). Contacts not currently in another flow - Since a contact can't be in two Messaging flows at the same time, check this box to avoid interrupting them. See more about Background Flows to avoid interFew readersCreating a Flow
To create a flow, navigate to the Flows tab and click the "Create Flow" button: Click the "New flow" on the top right side of your screen. The New Flow dialogue will appear, where you can: Give the flow a name Assign it keyword triggers Select the type of fFew readersUsing the Context Explorer
The Context Explorer feature found in the simulator within each flow's editor allows you to view and better understand all the variables available in your flow. The explorer gives a detailed breakdown of values and their expressions, which can be copied for use elsewhere. To use the Context Explorer, first navigate to the flow's editor. In our example, we want to see all the available variables for a fFew readersViewing the Flow Start Log
Viewing your Flow Start Log is helpful in understanding your account's activity. You'll see a list of all the flows that have been started, the account login that started them, and more. To view the log, first navigate to the Flows tab. Find the "Flow Starts" option on the lefthand side: Here, you'll see the list of flows started. (https://storage.crisp.chat/users/helpdFew readersAdding Notes to a Flow
Adding a yellow sticky note to a flow is as simple as double-tapping within the white space of your flow editor. A blank note will appear: You can then edit the note to write whatever you'd like, such as a note to your teammates: To delete a note, just clickFew readersStarting a Contact in a Flow from the Contact's Information Page
You can now start a contact in a flow directly from their individual information page. After navigating to the Contacts tab, click on the contact you'd like to start from your list: On the contact's unique information and message history page, you'll then click the menu button at the top right: (https://storage.crisp.chat/users/helpdesk/website/7a9fc4558a9de000/screen-shoFew readersSearching for Contacts Currently in Flows
You've always been able to search for contacts with a query based on the contact's field. Now, you can also search for contacts currently in a particular flow, or those not in any flow, by using the same query method. Contacts currently in a flow Once you know the flow, you can search for active contacts: Go to your Contacts tab. (https://storage.crisp.chat/users/helpdesk/website/7a9fc4558a9de000/screen-shot-2023-06-19-at-13271bmw3ovFew readersTargeting Recent Users When Starting a Flow
Want to improve your flow's response rate? Try targeting only recent users. When starting a flow, you'll notice inclusion options for your contacts: Checking the first box means that any contacts who haven't sent you a message in the past 90, 180, or 365 days (adjust the time to your preferencFew readersInterrupting a Flow from the Contact View
After starting a flow with your group of contacts, you may want to exit or interrupt a specific contact from that flow without disrupting other contacts in the flow. You can achieve this from that contact's page. First, head to the Contacts tab on the left-hand side of your workspace: Select the contact you want to interrupt. Then, click the menu icon ☰ at the top right and selFew readersCancelling Flow Starts
New and Improved Ways to Manage Your Flows and Broadcasts When you start a flow or send a broadcast messages, –especially to a large volume of contacts– you might notice that not all the contacts will receive the message at the same time. Messages can get queued up waiting to be sent, depending on how many messages your chFew readers