Webhooks โ€” build your own automations

Fire a webhook to any URL whenever a testimonial event happens โ€” for custom automations, Zapier, Make, n8n, or your own backend.

Webhooks let you react to testimonial events in any external system. We POST a JSON payload to a URL you choose whenever something happens โ€” a new testimonial arrives, one gets approved, one gets deleted. Wire it up to Zapier, Make, n8n, or your own backend.

Add a webhook

  1. Go to Dashboard โ†’ Integrations โ†’ Automations.
  2. Find the space you want to add a webhook to and click + Add Webhook.
  3. Fill in:
    • URL โ€” the endpoint that will receive the POST. Must be HTTPS.
    • Events โ€” tick the events you want to subscribe to (see below).
  4. Save. We'll show you the signing secret once โ€” copy it to verify incoming webhooks.

Supported events

  • testimonial.created โ€” a new testimonial submitted or imported
  • testimonial.approved โ€” a testimonial moved to approved status
  • testimonial.updated โ€” any edit to a testimonial
  • testimonial.deleted โ€” a testimonial was removed
  • form.submitted โ€” a collection form was filled out (fires before approval)
  • import.completed โ€” a scrape or bulk import finished

Verifying the signature

Every request includes an X-VT-Signature header โ€” a SHA-256 HMAC of the request body signed with your webhook secret. Verify it server-side to ensure the request actually came from us:

const expected = crypto
  .createHmac('sha256', WEBHOOK_SECRET)
  .update(rawBody)
  .digest('hex')
if (signature !== expected) return res.status(401).end()

Delivery logs

Click View logs on any webhook to see the last 100 delivery attempts โ€” request body, response code, response body, timestamp. Failed deliveries (non-2xx status) are retried 5 times with exponential backoff.

Pause or delete

Toggle Enabled off to pause a webhook without losing the config. Click Delete to remove permanently.

Related articles

Was this article helpful?