ResytechResytech Docs
Workflows & Automation

Monitor Workflow Executions

How to track workflow execution history, inspect step-by-step logs, and troubleshoot failures.

Every time a workflow runs, Resytech creates a detailed execution record with step-by-step logs. This guide explains how to read execution data, understand statuses, and diagnose common problems.

Viewing execution history

  1. Navigate to Marketing > Workflows.
  2. The workflow list shows summary stats for each workflow:
ColumnDescription
NameThe workflow name.
EnabledWhether the workflow is currently active.
ExecutionsTotal number of times the workflow has run.
Last ExecutedTimestamp of the most recent execution.
  1. Click a workflow to open its detail page. The execution history tab lists every execution in reverse chronological order.

Execution record fields

Each execution record contains:

FieldDescription
Execution IDA unique GUID for this execution run.
Workflow IDThe workflow that was executed.
Trigger Event TypeThe event that fired the workflow (e.g., Booking Created, Booking Status Changed).
Trigger Event DataThe full JSON payload of the triggering event, including booking ID, customer ID, amounts, and timestamps.
StatusThe overall execution status (see below).
Started AtWhen execution began.
Completed AtWhen execution finished (null if still running or paused).
Error MessageThe error message if the execution failed.

Execution statuses

StatusMeaning
runningThe workflow is currently being processed.
completedAll nodes executed successfully.
pausedThe workflow hit a delay/wait action and is waiting to resume. A Hangfire job is scheduled to continue execution at the configured time.
failedAn action or condition threw an error. The error message is stored on the execution record.

Execution steps

Each node visited during execution creates a step record:

FieldDescription
Step IDUnique identifier for this step.
Node IDThe graph node that was executed.
Node Typeevent, condition, or action.
Statusrunning, completed, failed, paused, or skipped.
Input DataThe node's configuration (JSON) -- what was configured in the workflow builder.
Output DataResult data (JSON). For condition nodes, this includes the boolean result.
Error MessageThe error message if this specific step failed.
Started At / Completed AtTiming for this individual step.

Reading condition step output

A condition step's output data looks like:

{ "result": true }

This tells you which branch was taken. If result is true, execution followed the default (true) edge. If false, it followed the edge marked with type false.

Diagnosing failures

Step failed: action error

When an action step fails, the error message is saved on both the step and the execution. Common causes:

Error messageLikely causeFix
Failed to send email: ...Invalid recipient email, SMTP configuration issue, or M365 credential problem.Check that the recipient template variable resolves to a valid email. Verify company email settings.
Webhook failed with status 4xx/5xxThe external endpoint returned an error.Check the webhook URL and authentication headers. The response body is logged.
Webhook URL targets a blocked addressSSRF protection blocked the URL.Webhook URLs cannot target localhost, private IPs (10.x, 172.16.x, 192.168.x), or cloud metadata endpoints. Use a public URL.
Webhook request timed outThe external endpoint did not respond within 30 seconds.Ensure the target endpoint is reachable and responds quickly.
Failed to update booking status: ...Invalid status transition.The booking status change pipeline validates transitions. Check that the target status is a valid next state.
SMS service not initializedTwilio credentials are not configured.Set up Twilio integration in your company settings.
Template not found or inactiveThe referenced communication template was deleted or deactivated.Re-activate the template or select a different one.
Booking not foundThe booking UUID from the event does not exist in the database.This can happen with test events that use random UUIDs. For production, this indicates a data issue.

Execution paused but never resumed

If an execution stays in paused status indefinitely:

  1. Check the Hangfire dashboard for the scheduled resumption job.
  2. Verify that the Hangfire worker service is running.
  3. If the delay was relative to a booking time and the booking was rescheduled, the resumption job automatically recalculates the fire time. Check Hangfire logs for rescheduling messages.
  4. If the calculated resumption time is in the past (for example, a "24 hours before booking start" delay on a booking that starts in 12 hours), the workflow resumes immediately.

Workflow did not fire

If an event occurred but the workflow did not execute:

  1. Is the workflow enabled? Disabled workflows are skipped.
  2. Does the event node match? The event type in the workflow's event node must match the incoming event. A booking_status_changed event can match both booking_status_changed and booking_confirmed (or booking_canceled) workflow triggers.
  3. Is the location correct? Workflows only fire for events from their own location.
  4. Check the SQS queue. If the event was not published to EventBridge, no workflow can fire. Check that the IEventPublisher is configured and the EventBridge bus is reachable.

Execution limits and safety

  • Maximum 100 nodes per execution. If the graph is traversed beyond 100 nodes, execution aborts with an error. This prevents runaway workflows.
  • Cycle detection. Each node can only be visited once per execution. If the graph has a cycle, the second visit to a node is silently skipped.
  • Concurrent execution limit. The queue processor runs up to 10 workflow executions concurrently. Additional messages wait in SQS.
  • Visibility timeout. Each SQS message has a 5-minute processing window. If processing takes longer, the message returns to the queue and may be retried.
  • Non-blocking event publishing. If the event publisher fails when a booking is created, the booking is still saved. Workflow event publishing never blocks or rolls back the primary operation.

On this page