---
title: "Incoming webhooks"
description: "Receive events from external providers such as Brink and Voyado."
sidebar:
  label: Incoming
---

Incoming webhooks let external providers send events into Enad. You register a
webhook under **System → Webhooks** in Enad Admin, point the provider at the
generated URL, and each incoming event is validated, mapped, and published into
the platform's event pipeline, where it updates orders, stock, and merchant
users like any other integration.

:::note
  This page covers incoming provider webhooks configured under **System → Webhooks**.
  Events Enad sends out to your own endpoints are documented on the
  [Webhooks](/integrations/webhooks) page.
:::

## Create a webhook

1. Select **Create webhook** and choose the provider type. The available types
   are Brink and Voyado.
2. Configure the secret. For Brink, Enad generates a secret for you. For Voyado,
   enter the secret the provider uses to sign its requests.
3. Save. A dialog shows the webhook type, URL, and — where applicable — the
   secret and encryption key. The secret is shown only once, so copy it before
   closing.

## Webhook URL

Each webhook gets a unique URL of the form:

```
https://<domain>/<app_id>/v1/<webhook_id>
```

The URL is shown when the webhook is created and on the webhook's detail view.
Configure it as the webhook destination in the provider's own admin.

## Providers

### Brink

Enad generates the secret when the webhook is created. The provider sends it as
a bearer token, and Enad rejects requests without a matching
`Authorization: Bearer <secret>` header.

Events carry a `detail-type` field. Stock and order events are mapped and
published into the platform; any other detail-type is acknowledged with `200 OK`
and ignored.

| Detail-type | What Enad does |
| --- | --- |
| `ProductVariantBackInStock` | Updates the variant's stock with the new quantity. |
| `ProductVariantOutOfStock` | Sets the variant's stock to zero. |
| `OrderCreated` | Publishes the order to the platform. |
| `OrderUpdated` | Publishes the updated order. |
| `OrderRefunded` | Publishes the order refund. |
| `OrderCompensated` | Publishes the order compensation. |
| `OrderReleased` | Publishes the order release. |
| `OrderDelivered` | Publishes the order delivery. |
| `OrderCancelled` | Publishes the order cancellation. |
| `OrderLinesModified` | Publishes the modified order lines. |
| `OrderDeleted` | Publishes the order deletion. |

The `Failed` variants of the refund, compensation, release, and delivery events
are published the same way. Successful requests receive an `OK` response.

### Voyado

The secret is provided when the webhook is created. Enad verifies each request
against the standard Svix webhook signature headers using that secret, so
unsigned or tampered requests are rejected with `401 Unauthorized`.

The webhook also supports encrypted payloads. When **Encrypted** is on, provide
the encryption key the provider encrypts payloads with; events marked encrypted
are decrypted before they are processed.

| Event | What Enad does |
| --- | --- |
| `contact.acceptsEmail.changed` | Updates the merchant user's email preference. |
| `contact.acceptsSms.changed` | Updates the merchant user's SMS preference. |
| `contact.acceptsPostal.changed` | Updates the merchant user's postal mail preference. |
| `contact.deleted` | Marks the merchant user deleted with the deletion reason. |

An unknown event type is rejected with `400 Bad Request`, so the provider should
only send the events listed above.

### Shopify

Incoming Shopify events such as orders, refunds, and fulfillments are handled as
part of the [Shopify integration](/integrations/shopify) and do not need a
webhook registered on this page.

## Managing webhooks

The webhook list shows each webhook's type, URL, version, encryption state, and
status. Select a webhook to view its details and copy its URL.

Deleting a webhook stops event delivery for that URL immediately. Remove the
endpoint in the provider as well, since its events will start failing there.

## Related

- [Webhooks](/integrations/webhooks)
- [Brink Commerce](/integrations/brink-commerce)
- [Voyado](/integrations/voyado)
- [Shopify](/integrations/shopify)
- [Merchant users](/merchant-users/merchant-users)
