> For the complete documentation index, see [llms.txt](https://help.openloyalty.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.openloyalty.io/integrations-and-data-exchange/webhooks/configuration.md).

# How to Configure a Webhook

Create and manage webhook subscriptions in the Admin Panel or via API.

## Overview

Open Loyalty uses a subscription model for webhooks. You receive only the events that you enable.

You can create a subscription in two ways:

* In the Admin Panel
* Via API

To create a webhook, you typically define:

* The event to subscribe to
* The destination URL
* Optional request headers

***

### Open the webhook list

In the tenant side menu, go to **Configuration → Webhooks**.

<figure><img src="https://2658975168-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcNVX03KZzmrGwJihLiEx%2Fuploads%2Fgit-blob-38045039ffc28ca2ce79b074daeb78a9a4cf01c2%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

This view shows all configured subscriptions. Typical fields include:

* **Webhook name** – Internal name of the subscription
* **Active from** – Date when the webhook becomes active
* **Security** – Whether the webhook signs its requests (HMAC)
* **Integration type** – Where events are sent: an endpoint or a queue
* **URL** – Destination address for delivery

Use filters or the search box to find a specific subscription faster. The search matches the **start** of the webhook name, so search for `Customer` to find `CustomerRegistered`, `CustomerUpdated` and so on.

<figure><img src="https://2658975168-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcNVX03KZzmrGwJihLiEx%2Fuploads%2Fgit-blob-e2f0358f84e3b35ebe29068578c58197db0e5ce4%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

***

### Add a webhook in the Admin Panel

{% stepper %}
{% step %}

### Open the creation form

Go to **Webhooks** and click **Add webhook**.
{% endstep %}

{% step %}

### Fill in the subscription details

Choose the **Integration type**: **Send to endpoint** (an HTTPS request to an external system) or **Send to queue** (Amazon SQS). Then choose the event you want to subscribe to in **Webhook name** and enter the destination in **Webhook URL**.

To sign every request, turn on **Enable HMAC signature**. See [HMAC](/integrations-and-data-exchange/webhooks/hmac.md).

You can also add custom headers. Headers are optional.
{% endstep %}

{% step %}

### Save the webhook

Click **Add webhook** to save the subscription, or **Cancel** to discard it. When the event occurs, Open Loyalty sends the payload to the configured address.
{% endstep %}
{% endstepper %}

***

### Create a subscription via API

You can manage subscriptions through the API endpoint:

```
/api/{storeCode}/webhook/subscription
```

{% openapi src="/files/RhFkQkXd4ycFBTHH77K8" path="/api/{storeCode}/webhook/subscription" method="get" expanded="false" %}
[openapi-5.34.0.json](https://2658975168-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcNVX03KZzmrGwJihLiEx%2Fuploads%2Fgit-blob-245f160580010ce735f071e4e69239b16bfe93cc%2Fopenapi-5.34.0.json?alt=media)
{% endopenapi %}

{% openapi src="/files/RhFkQkXd4ycFBTHH77K8" path="/api/{storeCode}/webhook/subscription" method="post" %}
[openapi-5.34.0.json](https://2658975168-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcNVX03KZzmrGwJihLiEx%2Fuploads%2Fgit-blob-245f160580010ce735f071e4e69239b16bfe93cc%2Fopenapi-5.34.0.json?alt=media)
{% endopenapi %}

Set the webhook name in `eventName`. Set the destination address in `url`. Add headers if your integration requires them.

<figure><img src="https://2658975168-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcNVX03KZzmrGwJihLiEx%2Fuploads%2Fgit-blob-f0c5d235d5791432e17ec1ceda5c6ca38adb523c%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

***

### Example payload

The `account.available_points_amount_changed` webhook is sent when a member’s available units change. The payload contains event metadata and a `data` object with the affected entities.

```json
{
"eventName": "string",
"storeCode": "string",
"createdAt": "2019-08-24T14:15:22Z",
"data": {
  "customer": {},
  "accountId": "string",
  "amount": null,
  "amountChange": null,
  "amountChangeType": "string",
  "wallet": {}
}
}
```

Use webhook payloads to trigger downstream actions in your own systems. Typical examples include CRM updates, transactional messaging, and workflow automation.

<figure><img src="https://2658975168-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcNVX03KZzmrGwJihLiEx%2Fuploads%2Fgit-blob-63f34909f04eb2b8bf11532cb633945bfc08f5ad%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://help.openloyalty.io/integrations-and-data-exchange/webhooks/configuration.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
