> ## Documentation Index
> Fetch the complete documentation index at: https://demeterrr.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhooks

> Receive real-time notifications for events

<Info>
  **Coming Soon:** Webhook functionality is currently in development. Check back soon for updates.
</Info>

## Overview

Webhooks allow demeterrr to send real-time notifications to your application when events occur, such as:

* New survey response submitted
* Review received
* Contact updated
* Sequence completed

Instead of polling the API repeatedly, webhooks push data to your endpoint immediately.

## Webhook Events (Planned)

| Event                | Description                     |
| -------------------- | ------------------------------- |
| `response.created`   | New survey response submitted   |
| `response.updated`   | Survey response modified        |
| `review.created`     | New customer review received    |
| `review.replied`     | Reply posted to a review        |
| `contact.created`    | New contact added               |
| `contact.updated`    | Contact information changed     |
| `sequence.completed` | Sequence finished for a contact |
| `sending.failed`     | Message failed to send          |

## Webhook Payload Format (Planned)

```json theme={null}
{
  "id": "evt_1234567890",
  "type": "response.created",
  "createdAt": "2026-02-10T10:30:00.000Z",
  "data": {
    "id": "response-uuid",
    "surveyId": "survey-uuid",
    "contactId": "contact-uuid",
    "npsScore": 9,
    "isPromoter": true
  }
}
```

## Setting Up Webhooks (Coming Soon)

1. Navigate to **Settings** → **Webhooks** in your dashboard
2. Click **Add Webhook Endpoint**
3. Enter your endpoint URL (must use HTTPS)
4. Select which events to receive
5. (Optional) Configure a secret for signature verification
6. Save and test your endpoint

## Securing Webhooks (Coming Soon)

Verify webhook authenticity using signature validation:

```javascript theme={null}
const crypto = require('crypto');

function verifyWebhookSignature(payload, signature, secret) {
  const expectedSignature = crypto
    .createHmac('sha256', secret)
    .update(JSON.stringify(payload))
    .digest('hex');

  return signature === expectedSignature;
}
```

## Next Steps

<CardGroup cols={2}>
  <Card title="API Reference" icon="code" href="/api-reference/contacts/list">
    Explore available endpoints
  </Card>

  <Card title="Quick Start" icon="rocket" href="/guides/quickstart">
    Make your first API call
  </Card>
</CardGroup>
