An execution is one instance of a flow running for one contact. Every time a trigger fires (whether it's an order, a keyword, a comment, or any other event), a new execution starts.
This guide explains how executions work, where to find them, and how to troubleshoot issues.
What Is an Execution?
An execution represents one run of a flow for one contact. It starts when the trigger condition is met and continues through all the steps in the flow until it's complete, fails, or stops waiting for user input.
Key Points:
One trigger event = One execution
If a customer places an order, that's one execution. If they place another order, that's a second execution.Multiple executions can happen for the same event
For example, if you're using a Delivery Update trigger and your delivery provider sends multiple updates (picked up, in transit, out for delivery, delivered), each update will create a separate execution.Executions are independent
Each execution is isolated. Data saved in one execution (like workflow variables) does not carry over to the next execution.
How Executions Work
When a trigger fires, here's what happens:
Trigger payload arrives – Spur receives data from Shopify, Meta, or another platform/integration (like order details, comment text, or delivery status etc).
Execution starts – A new execution is created with a unique Execution ID.
Flow steps run – The flow processes each step: sending messages, checking conditions, saving variables, etc.
Execution ends – The flow finishes when it reaches the last step, fails, or stops waiting for user input. When there is nothing more left for the flow to do.
Where to View Executions
You can view all executions for a specific flow in the Workflow Table.
Steps:
Go to Automations in Spur.
Click on the flow name you want to view.
The Workflow Table (also called the Execution Table) will appear, showing all executions for that flow.
What You'll See:
Profile – Contact's name and profile picture
Status – Current state of the execution (In Progress, Flow Complete, Failed, Exited)
Last Step – The most recent step the execution reached
Messages Sent / Delivered / Opened – Message delivery stats
Order – Order number (if applicable)
Followers – Follower count (for Instagram/Facebook)
Engagement Rate – Engagement metrics
Username – Instagram/Facebook username
Execution Time – When the execution started
Trigger Data – View the raw JSON payload that triggered the flow
Options – Copy Execution ID, Retry Execution (for failed executions)
Execution Statuses
Every execution has one of three statuses:
Status | What It Means |
In Progress | The flow is currently running and waiting for the next step (e.g., waiting for user input or a delay to complete). |
Flow Complete | The execution finished successfully and reached the end of the flow. |
Failed | Something went wrong, and the execution stopped. You can retry failed executions. |
Exited | When the flow stops when an exit condition is met. |
Filtering and Searching Executions
You can filter executions to find specific ones:
By Date Range:
Click the date filter dropdown and select:
Today
Yesterday
Last 7 days
Last 30 days
Custom date range
By Status:
Click Select a status dropdown and choose:
In Progress
Completed
Failed
Exited
By Contact:
Use the Search for name or number bar to find executions for a specific person.
Viewing Execution Details
To see what happened in a specific execution:
Click on the contact's name or profile picture in the Workflow Table.
This opens the chat inbox for that contact.
Scroll through the conversation to see:
Which messages were sent
What the customer replied
Which templates were triggered
When each message was sent
Viewing Trigger Data:
Click View Trigger next to an execution to see the raw JSON payload that triggered the flow. This is useful for:
Checking variable values
Troubleshooting why a condition passed or failed
Understanding what data was available during the execution
Copying an Execution ID
Every execution has a unique Execution ID. This is helpful when reporting issues to Spur support.
Steps:
In the Workflow Table, click the three dots (⋮) on the right side of an execution.
Click Copy Execution ID.
The ID is now copied to your clipboard.
Retrying a Failed Execution
If an execution fails, you can retry it.
Steps:
In the Workflow Table, find the failed execution (it will have a Failed status).
Click the three dots (⋮) on the right side.
Click Retry Execution.
The flow will restart from the point it got stuck on earlier.
Note: You can only retry failed executions. You cannot retry executions that are In Progress or Flow Complete.
How Long Are Executions Stored?
Execution data is stored forever (as long as you don't delete the flow).
You can view executions from weeks, months, or even a year ago by adjusting the date filter.
Workflow Variables and Executions
Workflow variables are scoped to a single execution. This means:
If you save a workflow variable (like
{{properties['Customer's name']}}) during an execution, it only exists for that execution.If the same person goes through the flow again, the workflow variable from the first execution will not be available.
Example:
Execution 1:
Customer replies with their name → Saved as {{properties['Customer's name']}} → Flow continues
Execution 2:
Customer triggers the flow again → {{properties['Customer's name']}} is empty (it doesn't remember the previous execution)
How to Persist Data Across Executions
If you want data to persist across multiple executions, use:
Contact Tags – Tag the contact so you can reference it in future flows
Order Tags – Tag the order so the tag appears in future order-related triggers
Custom Contact Fields – Save data in a custom field in the Database section
Troubleshooting Failed Executions
If an execution fails, here's how to figure out why:
Step 1: Check the Execution Status
Failed executions will show a Failed status in the Workflow Table.
Step 2: View the Chat
Click on the contact's name to open the inbox and see:
Which messages were sent successfully
Where the flow stopped
Step 3: View the Trigger Data
Click View Trigger to see the JSON payload. Check if:
The expected variables have values
Any required data is missing
Step 4: Check for Common Issues
Issue | What Happened | How to Fix |
Empty variable in message | A variable had no value, so the message failed | See if in the space of a variable you filled a value or not. And if a value is filled, whether it exists or not for that trigger. |
Condition logic error | A condition was set up incorrectly | Review the condition and make sure the variable and the logic operator are correct |
API rate limit hit | Too many API calls to Shopify or another platform | Retry the execution after a few seconds |
Template not approved | Tried to send a WhatsApp template that wasn't approved by Meta | Check your templates in Meta Business Manager |
Step 5: Retry the Execution
Once you've identified and fixed the issue, retry the execution:
Click the three dots (⋮) next to the failed execution
Click Retry Execution
Common Questions About Executions
Q: Can multiple executions run at the same time for the same contact?
A: Yes. If a contact triggers the same flow multiple times (e.g., they place two orders), both executions will run independently.
Q: What happens if a customer goes through the same flow twice?
A: A new execution starts each time. Workflow variables from the first execution do not carry over to the second.
If you want different behavior based on past activity, use:
Contact tags
Custom contact fields
Conditional logic based on order history
Q: Can I stop an execution that's in progress?
A: No. Once an execution starts, you cannot manually stop it. However, executions will automatically stop if:
The flow reaches the end
A "Wait for user input" step times out (after 24 hours)
The execution fails
Q: Why did my execution stop at "Wait for user input"?
A: If you use a "Text With User Input" block, the execution will pause and wait for the customer to respond.
If the customer doesn't respond within 24 hours, the execution will stop automatically. They'll need to trigger the flow again from the beginning if they want to continue.
Q: Can I export execution data?
A: Not directly, but you can:
View and copy the Execution ID
View the Trigger Data (JSON payload)
Screenshot or manually log execution details for your records
Q: Are there any limits on how many executions can run?
A: No limits from Spur. However, external platforms (like Shopify) have API rate limits. For example, Shopify allows 2 API calls per second. If you exceed this, you may see errors.
Q: Why do I see multiple executions for one order?
A: If you're using a Delivery Update trigger and your delivery provider sends multiple updates (picked up, in transit, out for delivery, delivered), each update creates a separate execution.
This is expected behavior. You can control which messages get sent for each status using conditional logic in your flow.
Best Practices for Managing Executions
✅ Regularly check failed executions and retry them after fixing the issue
✅ Use the Trigger Data view to debug issues with variables or conditions
✅ Don't rely on workflow variables persisting across executions. Use tags or custom fields instead.
✅ Filter by date range to review recent execution performance
✅ Copy Execution IDs when reporting issues to Spur support
Summary
Concept | Explanation |
Execution | One instance of a flow running for one contact |
Execution ID | Unique identifier for each execution |
Workflow Table | Where you view all executions for a flow |
Statuses | In Progress, Flow Complete, Failed |
Workflow Variables | Only exist for one execution, don't persist |
Retry Execution | Restart a failed execution from the point it failed at |
Trigger Data | Raw JSON payload that triggered the flow |
Need help? Reach out to our support team anytime :)

