Skip to main content
Workflow analytics help you understand how well your automated sequences are running and where contacts are dropping off or engaging.

Execution-level metrics

Each workflow execution record tracks:
FieldDescription
status / status_textCurrent state of the execution (pending, running, completed, failed, cancelled).
scheduled_atWhen the execution was scheduled to run.
executed_atWhen the execution actually started.
completed_atWhen the execution finished.
retry_count / max_retriesHow many retries have occurred and the configured limit.
error_messageReason for failure when status is failed.

Email engagement per execution

When a workflow step dispatches an email, the execution record includes:
  • email_opened: whether the recipient opened the email.
  • email_opened_at: timestamp of the open event.
  • email_clicked: whether the recipient clicked a tracked link.
  • email_clicked_at: timestamp of the click event.
These fields are null when the email has not yet been delivered or engagement data is unavailable.

Workflow counts overview

Use the GET /client/workflows/counts endpoint to get aggregate execution counts across all workflows. Useful for a high-level performance dashboard.

Interpreting workflow performance

High failure rate on a workflow
  • Review entry criteria: contacts may be entering without required data.
  • Check template readiness: use GET /client/workflows/{id}/template-readiness to confirm the template is valid and published.
  • Review suppression rules and send window configuration.
Low open rate on workflow emails
  • Compare with campaign open rates for the same segment.
  • Review send timing via preferred_send_hour and send_time_mode in the workflow customization.
Execution stuck in pending
  • Verify the workflow is enabled.
  • Check that the triggering event is being received correctly: see Events.
  • Check send window settings: see Send windows and timezones.

Retry behavior

Failed executions are retried up to max_retries times. After exhausting retries, execution enters a terminal failed state. You can trigger a manual retry via the API with POST /client/executions/{id}/retry.