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
- Go to Dashboard → Integrations → Automations.
- Find the space you want to add a webhook to and click + Add Webhook.
- Fill in:
- URL — the endpoint that will receive the POST. Must be HTTPS.
- Events — tick the events you want to subscribe to (see below).
- Save. We'll show you the signing secret once — copy it to verify incoming webhooks.
Supported events
testimonial.created— a new testimonial submitted or importedtestimonial.approved— a testimonial moved to approved statustestimonial.updated— any edit to a testimonialtestimonial.deleted— a testimonial was removedform.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.