تخطَّ إلى المحتوى

Webhooks

Webhooks send HTTP POST requests to your endpoint when content events occur. Go to Project Settings → Webhooks to manage them.

Creating a webhook

  1. Click + New Webhook
  2. Fill in the details:
FieldDescription
URLYour endpoint URL (e.g. https://your-site.com/api/revalidate)
EventsWhich events trigger this webhook
ActiveToggle on/off without deleting
  1. Click Save

Events

EventTriggered when
entry.createdA content entry is created
entry.updatedA content entry is updated
entry.deletedA content entry is soft-deleted
entry.publishedAn entry’s status changes to published
entry.unpublishedAn entry’s status changes to draft
media.uploadedA file is uploaded to the media library
media.deletedA file is deleted from the media library

Payload

Each webhook sends a JSON payload:

{
"event": "entry.updated",
"project": "f99cb038-...",
"collection": "posts",
"entry": {
"uuid": "550e8400-...",
"status": "published",
"locale": "en"
},
"timestamp": "2024-01-15T12:00:00+00:00"
}

Signature verification

Each request includes an X-Jambo-Signature header for security:

X-Jambo-Signature: sha256=abc123...

Verify it using the APP_WEBHOOK_SECRET_KEY from your .env:

const crypto = require('crypto');
const sig = 'sha256=' + crypto.createHmac('sha256', secret)
.update(rawBody).digest('hex');
if (sig !== req.headers['x-jambo-signature']) {
return res.status(401).send('Invalid signature');
}

Requirements

Webhooks are processed asynchronously via the Symfony Messenger queue. Make sure a worker is running — see Webhook Setup.