Webhooks

Receive real-time notifications when workflow executions complete via HTTP webhooks.

Sola can send webhook notifications to your server when workflow executions complete. This allows you to build event-driven integrations without polling the status endpoint.


Overview

When a workflow execution reaches a terminal state (completed, failed, or cancelled), Sola sends an HTTP POST request to the webhook URL you configure on the workflow. The payload contains the execution results, including all output data.

Configuring Webhooks

Webhooks are configured per workflow in the Sola dashboard workflow editor. Each workflow can have multiple webhook endpoints. To do so:

  1. Open the workflow you want to configure the webhook for.
  2. Go to the editor (hit "Edit workflow").
  3. Click the gear ⚙️ icon at the top right corner to open the "Workflow Settings" page.
  4. Click "Events".

Each webhook has:

  • Name: A descriptive label for the webhook
  • Webhook URL: The endpoint that will receive the POST request
  • Headers: Optional custom headers to include in the request (e.g., for authentication)

Both the webhook URL and header values support variables.

Webhook Payload

When an execution finishes, Sola sends a POST request with a JSON payload following the schema below:

{
  "executionId": "uuid",
  "workflowId": "uuid",
  "workflowName": "My Workflow",
  "status": "SUCCESS",
  "statusDescription": "Optional details about the status",
  "createdAt": "2026-01-15T10:00:00.000Z",
  "lastUpdatedAt": "2026-01-15T10:05:00.000Z",
  "startedAt": "2026-01-15T10:00:30.000Z",
  "finishedAt": "2026-01-15T10:05:00.000Z",
  "variableData": {
    "inputVar1": "value1",
    "inputVar2": "value2"
  },
  "scrapeData": {
    "scrapedField1": "scraped value"
  },
  "emailData": {
    "From": "[email protected]",
    "Subject": "Email subject"
  },
  "documentData": {
    "extractedField": "extracted value"
  },
  "artifacts": [
    {
      "uri": "https://presigned-s3-url.example.com/artifact.pdf",
      "filename": "artifact.pdf"
    }
  ],
  "contextKey": "my-context-key"
}

Payload Fields

FieldTypeDescription
executionIdstring (UUID)Unique identifier for the execution
workflowIdstring (UUID)ID of the workflow that was executed
workflowNamestringName of the workflow
statusstringTerminal status: SUCCESS, FAILED, or CANCELLED
statusDescriptionstring | nullAdditional details about the execution status
createdAtstring (ISO 8601)When the execution was queued
lastUpdatedAtstring (ISO 8601)When the execution was last updated
startedAtstring (ISO 8601)When the execution began running
finishedAtstring (ISO 8601)When the execution completed
variableDataobjectInput variable name/value pairs (private variables excluded)
scrapeDataobjectScrape step outputs (private variables excluded)
emailDataobjectEmail trigger fields such as From, To, Subject (private excluded)
documentDataobjectDocument AI-extracted fields (private variables excluded)
artifactsarrayPresigned S3 URLs for execution artifacts (downloads, screenshots)
contextKeystring | nullBrowser context key used, if applicable
💡

Artifact URLs expire after 7 days. If you need to retain artifacts, download them promptly after receiving the webhook.

💡

Private variables are excluded from variableData, scrapeData, emailData, and documentData in the webhook payload for security.

Custom Headers

You can add custom headers to webhook requests for authentication or routing purposes. Each header is a key-value pair. Both the key and value support template variables.

Example use cases:

  • Authorization: Bearer your-token for authenticating with your server
  • X-Workflow-Id: {{workflowId}} for routing on your end

Retry Behavior

By default, webhook deliveries are not retried. If your endpoint returns a non-2xx status code or is unreachable, Sola records the failure and continues without attempting redelivery.

If you'd like Sola to retry failed webhook deliveries, ask your Customer Success Representative to enable webhook retries for your organization. When enabled, Sola automatically retries deliveries that fail with any of the following responses:

  • 408 Request Timeout
  • 429 Too Many Requests
  • 5xx server errors

See the attempts interval below:

AttemptInterval
1Immediate (initial delivery)
230 seconds after 1st attempt
360 seconds after 2nd attempt

💡

Retries do not cover other failure modes, including 4xx responses other than 429, invalid URLs, or network-level errors such as an unreachable host or a connection timeout. Even with retries enabled, your endpoint should still respond promptly with a 2xx status whenever possible.