Webhooks
Webhooks let you receive real-time notifications when specific events occur in your Wunderite account. Use webhooks to automate workflows, keep external systems in sync, and react to changes as they happen.
About Webhooks
Wunderite sends webhooks as HTTP POST requests to a URL you provide when a subscribed event occurs. Each request includes headers and a payload that describe the event and delivery.
Retry Behavior
If a webhook delivery fails, Wunderite will retry up to three times using exponential backoff:
- 10 seconds
- 100 seconds
- 1000 seconds
A delivery is considered failed if:
- Your endpoint returns a non-2xx response, or
- Your endpoint takes longer than 5 seconds to respond.
To acknowledge receipt, respond with a 200 OK status as quickly as possible.
Webhook Request Headers
Each webhook request includes the following headers:
Wunderite-Event: The type of event that triggered the webhook (e.g.,form.completed).Wunderite-Delivery: A unique identifier for the webhook that is useful for tracking and logging purposes, to make sure you only handle an event once.Wunderite-Signature: An HMAC SHA256 signature used to verify the authenticity of the webhook request, signed using your Wunderite webhook signing secret. Learn more about verifying webhook signatures.Wunderite-Webhook: Theuuidof the webhook that triggered the request.
Verifying Webhook Signatures
To verify that a webhook request was sent by Wunderite and has not been tampered with, validate the Wunderite-Signature header.
To verify the signature:
- Retrieve your webhook signing secret by writing into Wunderite support, if you don't have it already.
- Compute the HMAC SHA256 hash of the entire request body using your signing secret.
- Compare the computed hash with the value in the
Wunderite-Signatureheader. - If the values match, the request is authentic. If they do not match, reject the request.
Headers are not included in the signature calculation and therefore should not be trusted for verification. Always validate the signature using the request body.
The Webhook object
Webhook objects represent a single webhook subscription in your Wunderite account. They contain the following properties:
Properties
- Name
type- Type
- enum
- Filterable
- Description
The type of webhook
- Name
custom- Description
- custom
- Name
zapier- Description
- zapier
- Name
description- Type
- nullable string
- Description
A description for the webhook subscription
- Name
url- Type
- string
- Description
The URL the webhook should send events to
- Name
events- Type
- enum[]
- Filterable
- Description
The list of events the webhook is subscribed to
Meta
- Name
created- Type
- timestamp
- Filterable
- Sortable
- Description
An ISO-8601 timestamp (UTC) indicating when the webhook was created
- Name
updated- Type
- timestamp
- Filterable
- Sortable
- Description
An ISO-8601 timestamp (UTC) indicating when the webhook was last updated
- Name
disabled- Type
- nullable timestamp
- Filterable
- Description
The ISO-8601 timestamp (UTC) indicating when the webhook was disabled, or
nullif it is active
Webhook Events
For a list of available webhook events, see the webhook events documentation.
List webhooks
Returns a paginated list of all webhooks in your Wunderite account. Each item is returned as a webhook object.
Filters and sorting
See the webhook object documentation for supported filters and sort options.
Additional filters
In addition to the filters available on the webhook object, you can also filter webhooks by the following properties:
- Name
uuid- Type
- string
- Filterable
- Description
Filter by webhook UUID. You can provide multiple UUIDs as comma-separated list.
- Name
events- Type
- enum[]
- Filterable
- Description
Filter webhooks subscribed to one or more events. Accepts a comma-separated list or an array of event names.
- Name
is_disabled- Type
- bool
- Filterable
- Description
Include disabled webhooks with
true, or exclude them withfalse.
Searchable
Use filter[search] to search webhooks by type, url, or description.
Request
curl -X GET -G "https://app.wunderite.com/api/v1/webhooks" \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json"
Response
{ "data": [ { "object": "webhook", "uuid": "71e589be-ba7a-4385-b373-8c656fc30963", "data": { "type": "zapier", "description": null, "url": "https:\/\/hkdk.events\/your-hookdeck-id", "events": [
Create webhooks
Creates one or more webhooks in your Wunderite account.
At least one webhook object must be provided in the request body.
Required properties
- Name
type- Type
- enum
- Description
The type of webhook subscription.
- Name
url- Type
- string
- Description
The URL that webhook requests are sent to.
- Name
events- Type
- enum[]
- Description
An array of event names that the webhook should listen for. At least one event is required. See webhook events documentation for a list of available events.
Notes
- The
urlmust be a valid URL starting withhttps://. It cannot be an IP address. - The
eventsarray must contain at least one event value. - Agencies have a limit on the number of active webhooks based on their plan. If the limit is exceeded, the request returns a
400 Bad Request.
Request
curl -X POST "https://app.wunderite.com/api/v1/webhooks" \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"data": [
{
"object": "webhook",
"data": {
"type": "custom",
"description": "Example webhook subscription",
"url": "https:\/\/example.com\/webhooks",
"events": [
"form.completed",
"signature_packet.completed"
]
}
}
]
}'
Response
{ "data": [ { "object": "webhook", "uuid": "f2cfb101-e0c2-4d2c-a710-790342690ac5", "data": { "type": "custom", "description": "Example webhook subscription", "url": "https:\/\/example.com\/webhooks", "events": [
Update webhooks
Persforms bulk updates on existin webhooks.
At least one webhook object must be provided in the request body. Each object must contain at least one property from the webhook properties section.
Properties that are not provided will not be updated.
Property Notes
- Name
events- Type
- enum[]
- Description
An array of event names that the webhook should listen for. At least one event must be specified. See webhook events documentation for a list of available events.
The type property cannot be updated. To change the type of a webhook, you must delete the existing webhook and create a new one with the desired type.
Request
curl -X PATCH "https://app.wunderite.com/api/v1/webhooks" \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"data": [
{
"object": "webhook",
"uuid": "a37433f6-fb7a-4c5b-9516-d7f0a2f12e41",
"data": {
"type": "custom",
"description": "Example webhook subscription",
"url": "https:\/\/example.com\/webhooks",
"events": [
"form.completed",
"signature_packet.completed"
]
}
}
]
}'
Response
{ "data": [ { "object": "webhook", "uuid": "a37433f6-fb7a-4c5b-9516-d7f0a2f12e41", "data": { "type": "custom", "description": "Example webhook subscription", "url": "https:\/\/example.com\/webhooks", "events": [
Delete webhooks
This endpoint allows you to bulk delete webhooks.
At least one webhook object must be provided in the request body to delete the corresponding webhook.
Required properties
- Name
object- Type
- string
- Description
The object type of the data to delete. Must be
webhookin this case.
- Name
uuid- Type
- string
- Description
The UUID of the webhook to delete
Request
curl -X DELETE "https://app.wunderite.com/api/v1/webhooks" \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"data": [
{
"object": "webhook",
"uuid": "a37433f6-fb7a-4c5b-9516-d7f0a2f12e41"
}
]
}'
Response
{
"data": [
{
"object": "webhook",
"uuid": "a37433f6-fb7a-4c5b-9516-d7f0a2f12e41"
}
]
}