Webhooks let Crystallize notify your systems in real time when events happen in your tenant. Instead of polling APIs, you can react instantly to changes such as new orders, content updates, or state transitions in Flows.
A webhook sends an HTTP POST request to a URL you specify whenever a defined event occurs. The payload includes structured JSON data describing what changed and the related entity.
Common use cases:
When the selected event occurs, Crystallize sends a POST request to your endpoint with a JSON body like:
{
"order": {
"get": {
"id": "68e4fe1da9733a66efd88673",
"createdAt": "2025-10-07T11:48:45.000Z",
"updatedAt": "2025-10-07T11:48:45.000Z",
"customer": {
"identifier": "bard@crystallize.com",
"firstName": "Bård",
"lastName": "Farstad"
},
"cart": [
{
"name": "In Utero",
"sku": "4958411",
"quantity": 1,
"price": {
"currency": "EUR",
"gross": 35,
"net": 28
}
},
{
"name": "The Best Of The Doors",
"sku": "3795082",
"quantity": 1,
"price": {
"currency": "EUR",
"gross": 10.1125,
"net": 8.09
}
}
],
"total": {
"currency": "EUR",
"gross": 45.1125,
"net": 36.09
},
"pipelines": null
}
}
}{
"order": {
"get": {
"id": "68e4fe1da9733a66efd88673",
"createdAt": "2025-10-07T11:48:45.000Z",
"updatedAt": "2025-10-07T11:48:45.000Z",
"customer": {
"identifier": "bard@crystallize.com",
"firstName": "Bård",
"lastName": "Farstad"
},
"cart": [
{
"name": "In Utero",
"sku": "4958411",
"quantity": 1,
"price": {
"currency": "EUR",
"gross": 35,
"net": 28
}
},
{
"name": "The Best Of The Doors",
"sku": "3795082",
"quantity": 1,
"price": {
"currency": "EUR",
"gross": 10.1125,
"net": 8.09
}
}
],
"total": {
"currency": "EUR",
"gross": 45.1125,
"net": 36.09
},
"pipelines": null
}
}
}For added security, all webhook requests sent from Crystallize are signed. This allows you to confirm that the request genuinely comes from your Crystallize tenant and hasn’t been tampered with.
It’s your responsibility to verify this signature in your receiving endpoint before processing the event.
Each webhook request includes a x-crystallize-signature header containing the HMAC signature of the request body, generated using your tenant’s webhook secret and the SHA-256 algorithm.
When developing or testing your webhook implementation, you can use temporary endpoints to inspect and debug webhook calls before deploying to production.
These tools help ensure your webhook logic works correctly before you connect it to a live system.