Workflow provides two levels of proof: a dry run verifies routing without side effects, and real-run dashboards verify production behavior after publication.

## Start a dry run

Open the workflow editor, select **Test run**, and choose one subscriber.

![Test-run panel for selecting one subscriber and opening the dry-run timeline](/docs/workflows/test-run.png)

A dry run:

- Uses an isolated run marked **Dry run**
- Evaluates trigger-independent graph routing for the selected subscriber
- Evaluates conditions, splits, waits, goals, and exits
- Records email and action steps as skipped
- Does not send email, mutate tags or fields, unsubscribe, call webhooks, or enroll another workflow
- Does not count in production active-run or A/B metrics

Use subscribers whose tags, fields, and revenue represent each important path.

## Read the timeline

After starting the test, Lumail opens the run timeline.

![Workflow run timeline with status, version, current step, and trace events](/docs/workflows/run-timeline.png)

The left card identifies the subscriber, run number, workflow version, status, current step, and next action. The trace records:

- Step started and completed
- Condition and split decisions
- Wait scheduling and timeout behavior
- Dry-run email and action skips
- Goal reached
- Exit reason
- Failure details

Click a step in the trace to inspect its events in execution order.

## What a dry run cannot prove

A dry run does not prove:

- Email rendering or inbox delivery
- Real webhook responses
- Tag, field, unsubscribe, or cross-workflow side effects
- External success-goal events arriving later
- Queue latency or organization sending limits

Test-render every email separately, then monitor the first real runs after activation.

## Workflow dashboard

The dashboard combines the published graph with current production data:

- Total, active, waiting, completed, canceled, and failed runs
- Current subscribers by step
- Recent enrollment trend
- Delivered and opened email totals
- Recent runs
- A/B assignments and success rates

![Workflow dashboard with graph, current subscribers, and result summaries](/docs/workflows/workflow-dashboard.png)

Dashboard counts should always be interpreted with the published version and selected time window in mind.

## A/B results

The **A/B success results** card counts one assignment per run and split step. Success means that run recorded a top-level success goal.

See [A/B Testing](/docs/workflows/workflow-ab-testing) before comparing rates.

## Run statuses

| Status    | Meaning                                                                     |
| --------- | --------------------------------------------------------------------------- |
| Active    | Executing or ready for its next step                                        |
| Waiting   | Waiting for time, an event, subscriber state, or sending access             |
| Completed | Reached the end, a goal, or an explicit Exit step                           |
| Canceled  | Stopped by a global exit rule, group conflict, removal, or lifecycle action |
| Failed    | Stopped by an unrecoverable error                                           |

Use the timeline event—not status alone—to distinguish normal completion, goal conversion, and explicit exit.

## Production verification checklist

1. Confirm the intended version is published and status is active.
2. Inspect the first real enrollment.
3. Verify its version, first route decision, and next action time.
4. Confirm workflow email render, sender, and unsubscribe link.
5. Confirm each external side effect by read-back.
6. Inspect goal or exit events when expected.
7. Check failures and runs waiting longer than their configured timeout.
8. For A/B tests, confirm both assignment counts increase before interpreting rates.

## Troubleshooting

| Symptom                    | Check                                                                                     |
| -------------------------- | ----------------------------------------------------------------------------------------- |
| No new runs                | Workflow status, published version, trigger filters, repeat cooldown, and group conflicts |
| Run stuck waiting          | Next action time, timeout route, audience-change flag, and sending suspension             |
| A/B success is always zero | A top-level success goal exists and can match real events                                 |
| Unexpected exit            | Matched rule and version in the timeline                                                  |
| Dry run skipped an email   | Expected behavior; render or send a dedicated email test instead                          |
| Real run uses old logic    | It enrolled on an older immutable version                                                 |

## Related documentation

- [Publishing and Versions](/docs/workflows/workflow-publishing)
- [A/B Testing](/docs/workflows/workflow-ab-testing)
- [Goals](/docs/workflows/workflow-goals)
- [Exit Rules](/docs/workflows/workflow-exit-rules)
