What is flow variables?
Flow variables are dynamic fields you can use to reference real-time data in your flows. They allow you to pull in information from triggers and actions (e.g., messages, contacts, or conversations) and use that data for routing, personalization, and automation.
You can use flow variables to:
- Personalize outgoing messages
- Create conditions based on incoming data
- Route customers to different branches dynamically
How does flow variables works?
Most flow variables in SleekFlow are tied to a contact. This means whenever you select a variable, whether it comes from a message, a conversation, or a property, the value is always associated with the contact enrolled in that flow.
For example in this case, {contact_name} is a variable that automatically inserts the customer’s name based on the contact record. This ensures each customer receives a personalized message without manual editing.
This contact-centric structure ensures consistency. When a flow runs, the variable values always resolve in relation to the contact involved.
The only exception is integration variables. These variables pull data directly from external systems you’ve connected (e.g., CRM platforms, Shopify, Stripe, APIs). Because the data originates outside SleekFlow, it is not automatically tied to a specific contact by default.
However, some integration variables can be mapped to a contact if your trigger or webhook configuration includes contact identification. For example if you use the Webhook received trigger and the webhook payload contains a field like a phone number or customer ID that matches an existing contact in SleekFlow, the system will link the incoming data to that contact automatically.
In these cases, the integration variable will be linked to that contact during the flow.
This gives you flexibility when working with data such as:
- Order details retrieved from Shopify
- Payment status from Stripe
- Custom API responses values mapped from webhooks
There are 3 types of flow variables:
- Common property: General values available in most flows (e.g., message content, last channel, label)
- Contact property: Fields stored on a contact record (e.g., name, phone number, tags, email address).
-
Mid-flow variables: Values that are captured or generated while the flow is running. These are variables that change or get updated as the conversation progresses, such as:
- Message content captured from the contact’s reply
- Labels added to a contact during the flow
The variables available in your flow depend on the trigger and action nodes you’ve added.
Why use flow variables?
Flow variables help you automate smarter, more personalized experiences. Some common use cases include:
1.Filter who gets enrolled into a flow
For example, you can choose to only enroll contacts when the incoming message contains a specific keyword by using the following steps:
- In the node form of the trigger, switch to the Filter tab
- Toggle on “Enrollment condition”
- Under If, select Message content from the variable list
- Set the “Operator” to Contains
- Enter the keyword you want to match
- Click Add value to add more than one keyword

Once set up, only messages containing your specified keyword(s), in this case is “Pricing” will trigger the flow.
2. Personalize message with dynamic values
Use flow variables to insert real-time data into your message templates — like contact names, phone numbers, or message content.
- Add a Send message node to your flow
- In the message input box, start typing your content
- Click the {X} variable icon

-
Choose from available variables, for example you can choose “Customer name”
- The selected variable will appear in curly braces in the message input box (e.g. {{Customer name}})
- Close the node form
Your messages will now auto-personalize based on the contact or trigger context.
3. Route or branch based on data
Use variables in condition nodes to control how customers move through your flow — perfect for tailoring experiences based on message content, customer attributes, or channel.
- Add a Condition branching node after your trigger or any action
- Open the node form and select a variable under the Field tab
- Choose an Operator
- Enter the value to match against
- Add additional conditions if needed
- Close the node form
The system will check these values and route contacts down the matching path in real time.
Example use case
1. Send follow-ups based on message status
You can use variables to automate follow-ups. For example, you can automatically send a reminder if a customer has an upcoming appointment time:
- In the node form of the trigger, switch to the Filter tab
- Under If, select Appointment time from the variable list
- Set the operator to Is not empty
- Add a Send message action node to remind the customer
-
Or use a Condition node to handle different statuses differently
2. Keep records with Conversation ID
You can use the Conversation ID variable to leave a clear record for teammates whenever a conversation changes status. This makes it easier for everyone to trace updates and find the right conversation later.
- Select the Conversation status updated trigger
- In the node form, switch to the Filter tab
- Under If, choose New conversation status, set the operator to Equals → Resolved
- Add an Add internal note action node
- In the message note field, insert the variable Conversation ID along with a short message. For example: Conversation {{conversation_id}} was marked as Resolved.
- Save the flow.
Now, whenever a conversation is closed, SleekFlow will automatically leave a note with its unique ID. This helps teammates quickly reference the right conversation in case they need to review or reopen it later.