Webhooks

Webhooks Overview

Webhooks let you receive real-time HTTP notifications when events happen on your Sotion site like members signing up, logging in, access group changes, and more. Instead of polling the API, you register a URL and Sotion pushes events to you as they occur.

Setting up a webhook

  1. Go to Site Settings > Integrations

  2. Click Create Webhook

  3. Enter a name, your HTTPS endpoint URL, and select the events you want to receive

  4. Optionally provide your own signing secret, or let Sotion generate one for you

  5. Copy the signing secret --- it is shown only once

Your endpoint must be publicly accessible over HTTPS.

Events

Event

Description

member.created

A new member was added to the site

member.updated

A member's details were changed (email, name, status, etc.)

member.auth

A member logged in or logged out

member.deleted

A member was removed from the site

access-group.created

A new access group was created

access-group.updated

An access group's name or description was changed

access-group.deleted

An access group was deleted

access-group.member.added

A member was added to an access group

access-group.member.removed

A member was removed from an access group

Payload format

Every webhook delivery sends a JSON payload wrapped in a standard envelope:

{
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "type": "member.created",
  "timestamp": "2026-03-28T12:00:00.000Z",
  "version": "1",
  "siteId": "site-uuid-here",
  "data": {
    ...
  }
}

Field

Type

Description

id

string

Unique event ID (UUIDv4). Use this as an idempotency key to avoid processing the same event twice.

type

string

The event type, e.g. member.created

timestamp

string

ISO-8601 timestamp of when the event occurred

version

string

Envelope schema version. Currently "1".

siteId

string

The ID of the site that generated the event

data

object

Event-specific payload (see below)

HTTP headers

Every webhook delivery includes the following headers:

Header

Description

Content-Type

application/json

X-Webhook-Signature

sha256={hex-digest} --- HMAC-SHA256 signature of the request body

X-Webhook-Event

The event type, e.g. member.created

X-Webhook-Delivery

Unique ID for this delivery attempt

X-Webhook-Id

The event ID (same as id in the payload)

User-Agent

Sotion-Webhooks/1.0

Was this helpful?