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: The uuid of 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:

  1. Retrieve your webhook signing secret by writing into Wunderite support, if you don't have it already.
  2. Compute the HMAC SHA256 hash of the entire request body using your signing secret.
  3. Compare the computed hash with the value in the Wunderite-Signature header.
  4. If the values match, the request is authentic. If they do not match, reject the request.

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 null if it is active

Webhook Events

For a list of available webhook events, see the webhook events documentation.


GET/api/v1/webhooks

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 with false.

Searchable

Use filter[search] to search webhooks by type, url, or description.

Request

GET
/api/v1/webhooks
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": [
"form.completed", "signature_packet.completed" ] }, "meta": { "disabled": null, "created": "2026-01-13T20:19:09+00:00", "updated": "2026-01-14T16:19:18+00:00" } }, { "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" ] }, "meta": { "disabled": null, "created": "2026-01-16T15:03:58+00:00", "updated": "2026-01-16T15:03:58+00:00" } } ], "path": "https:\/\/app.wunderite.com\/api\/v1\/webhooks", "per_page": 50, "next_cursor": null, "next_page_url": null, "prev_cursor": null, "prev_page_url": null }

POST/api/v1/webhooks

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 url must be a valid URL starting with https://. It cannot be an IP address.
  • The events array 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

POST
/api/v1/webhooks
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": [
"form.completed", "signature_packet.completed" ] }, "meta": { "disabled": null, "created": "2026-01-16T15:06:59+00:00", "updated": "2026-01-16T15:06:59+00:00" } } ] }

PATCH/api/v1/webhooks

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.

Request

PATCH
/api/v1/webhooks
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": [
"form.completed", "signature_packet.completed" ] } } ] }

DELETE/api/v1/webhooks

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 webhook in this case.

  • Name
    uuid
    Type
    string
    Description

    The UUID of the webhook to delete

Request

DELETE
/api/v1/webhooks
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"
        }
    ]
}