---
title: "Run history and troubleshooting - Workflow Suite"
description: "See every workflow run with each step's result, error and tries, and work through the common reasons a workflow does not start or a step fails."
canonical: "https://docs.workflow-suite.app/run-history-and-troubleshooting"
---

# Run history and troubleshooting

Every run is recorded. **Run history** in the app menu lists the runs of all workflows; the **Run history** button in a workflow's editor lists only that workflow's runs.

## The list

Each row shows the workflow, the status, the trigger and the time. Filter by workflow and by status. Test runs are marked as tests.

| Status | Meaning |
| --- | --- |
| Queued | Accepted, starts in a moment |
| Running | Steps are being executed |
| Waiting | At a Wait step, or started with a delay |
| Completed | Every step on the path finished |
| Failed | A step failed, or a Fail the run step ended the run |
| Not started | Loop protection or the plan limit stopped it before any step ran |
| Cancelled | A debug session you stopped, or a run cancelled over the API |

## One run

A run's page shows:

- **Workflow**, **Status**, **Trigger**, **Started**, **Finished** and **Duration**.
- **Steps** - every step that ran, in order, with its status and duration. Open a step for what it returned and, when it failed, its error. A step that was retried shows each try, for example **Succeeded on try 3** or **Failed after 4 tries**. Steps inside a Repeat for each are grouped by item. In a preview, a step that was not run is marked **Preview - not run** and shows what it would have run with.
- **Trigger event** - the event the run started with. It may contain personal data and is stored encrypted.
- **Started by a chain of workflows** - when other workflows led to this run.
- For a run that was not started: the reason.

**Run again** starts a new, real run with the same event. **Open workflow** takes you to the editor.

The filled-in fields of a step are not stored with a real run, because they can hold secrets. What a step returned is stored, with secret values masked. Code steps keep their own record, with input and logs, under **Function runs**.

## How long runs are kept

| Plan | Run history |
| --- | --- |
| Free | 30 days |
| Starter | 60 days |
| Grow | 90 days |
| Unlimited | 180 days |

## The workflow does not start

Work down this list:

1. **Is it on?** The badge next to the name reads **On**. A banner **This workflow was turned off automatically** names the reason. See [Loop protection](https://docs.workflow-suite.app/loop-protection.md).
2. **Is a permission missing?** The editor shows **This workflow needs permissions**. A trigger only receives events for data you granted. See [Permissions and store data access](https://docs.workflow-suite.app/permissions-and-store-data-access.md).
3. **Does the trigger filter reject the event?** Rejected events leave no trace. Compare the rule with a real event's values; mind numbers sent as text and upper and lower case. See [Trigger filters](https://docs.workflow-suite.app/trigger-filters.md).
4. **Is it a change trigger and the first sighting?** The first time the app sees a resource it only remembers it. See [Change triggers with before and after values](https://docs.workflow-suite.app/change-triggers.md).
5. **Is it an order, customer, draft order or checkout trigger?** Those need Shopify's approval for protected customer data. See [Permissions and store data access](https://docs.workflow-suite.app/permissions-and-store-data-access.md).
6. **Is there a run with the status Not started?** Open it and read the reason: loop protection, or the plan's run limit for the last 30 days is reached. See [Plans, runs and extra runs](https://docs.workflow-suite.app/plans-runs-and-extra-runs.md).
7. **Is it a storefront trigger?** Those only arrive with the visitor's consent and are best effort. See [Storefront behaviour triggers](https://docs.workflow-suite.app/storefront-behaviour-triggers.md).
8. **Is it a trigger that is checked every 5 minutes?** Give it a few minutes.

## A step fails

| Message or symptom | Usual cause | What to do |
| --- | --- | --- |
| A Shopify step names a missing access or permission | The permission is not granted, or was revoked | Grant it on the Permissions page |
| Shopify says the app is not approved to access customer data | Protected customer data | See [Permissions and store data access](https://docs.workflow-suite.app/permissions-and-store-data-access.md) |
| `userErrors` from Shopify | Shopify refused the change: a wrong id, an invalid value | Read the message. Run a preview with the run's event to see the values the step would use |
| The variables or the body are not valid JSON | Text with quotes or line breaks inside JSON | Add the `json` filter. See [Liquid in every field](https://docs.workflow-suite.app/liquid-in-fields.md) |
| An HTTP request answers 401 or 403 | Wrong or missing key | Check the secret's name and value, and the header |
| A value is empty | The variable does not exist for this event, or its step did not run on this path | Use the `default` filter or a Condition. A Log step before it shows what the value was |
| A list is too long for Repeat for each | More items than **Maximum items** | Raise it up to 500, or work in portions |
| Code timed out | More than 5 seconds | Do less per run; move waiting on other systems into HTTP request steps |
| The sending limit is reached | Too many recipients in an hour or a day | See [Send email and email senders](https://docs.workflow-suite.app/send-email.md) |
| The run was interrupted | The run lost its worker while running | It is not run again automatically, because steps may already have run. Check what was done, then use **Run again** if it is safe |

## Find the cause faster

- **Test with the real event.** Copy the **Trigger event** of the failed run into **Event (JSON)** of the Test panel and run a preview. Previewed steps show what they would have run with. See [Test, preview and debug](https://docs.workflow-suite.app/test-preview-and-debug.md).
- **Step through it** with the debugger and a breakpoint before the failing step.
- **Add a Log step** before the step that fails, with the values it reads.

## Still stuck?

See [Support](https://docs.workflow-suite.app/help/support.md). Tell us the workflow's name and the time of the run. Never send a secret's value.
