Skip to main content
When an event you have subscribed to occurs in Steppd, Steppd sends an HTTP POST request to your webhook URL with a JSON body describing the event. This page documents every available event type, the request headers, a sample payload, and how delivery retries work.

Available events

EventTriggered when
document.createdA new document is created
document.publishedA document is published
document.archivedA document is archived
document.assignedA document’s owner or editor is reassigned
member.invitedA team invitation is sent
member.joinedAn invitee accepts and joins
member.role_changedA member’s role is changed
You can subscribe to any combination of these events when creating or editing a webhook.

Request headers

Every webhook request includes the following headers:
HeaderValue
Content-Typeapplication/json
X-Steppd-SignatureHMAC-SHA256 signature of the request body, computed using your webhook secret
Use X-Steppd-Signature to verify that a request originated from Steppd. See Verifying webhook signatures for implementation examples.

Example payload

The following shows the shape of a document.published event:
{
  "event": "document.published",
  "timestamp": "2024-01-15T10:30:00Z",
  "organization_id": "org_abc123",
  "data": {
    "document_id": "doc_xyz789",
    "title": "Employee Onboarding Process",
    "version": "1.0",
    "department": "HR",
    "published_by": "user_def456"
  }
}
All payloads share the same top-level structure:
FieldDescription
eventThe event type string (e.g., document.published)
timestampISO 8601 UTC timestamp of when the event was triggered
organization_idID of the organization in which the event occurred
dataEvent-specific object containing relevant identifiers and metadata

Delivery and retries

Steppd expects your endpoint to respond with a 2xx status code within a reasonable timeout. If the response is not 2xx or the request times out, the delivery is marked as failed and retried automatically.
Admins can view the full delivery history for all webhooks in the organization — including event type, status, number of attempts, and date — from Settings → Webhooks tab under Recent events.

Handling deliveries reliably

  • Respond quickly. Return a 200 OK as soon as you receive the request and process the payload asynchronously if your handler logic takes time.
  • Make your handler idempotent. The same event may be delivered more than once during retry cycles. Use the timestamp and the IDs in the data object to detect and safely ignore duplicates.
  • Verify the signature. Always check X-Steppd-Signature before processing a payload to ensure the request is authentic.

Webhook event log (Admin)

Admins can inspect recent webhook activity from Settings → Webhooks → Recent events. The table shows the last 10 events across the entire organization.
ColumnDescription
Event typeThe event name (e.g., document.published)
Statusdelivered, failed, or pending
AttemptsNumber of delivery attempts made so far
DateWhen the event was triggered