> For the complete documentation index, see [llms.txt](https://help.peoplevine.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.peoplevine.com/products/integrations-overview/configure-webhooks.md).

# How to Configure Webhooks

Peoplevine webhooks push data to external systems in real time whenever a specified activity occurs — a member checks in, a form is completed, a payment is processed, etc. You configure what triggers the webhook, where the data goes, and what the payload contains.

### Before you begin (Prerequisites)

* **Admin access**: You must be an Administrator or Supervisor. See: [How to Manage Users and Permissions](/products/control-panel-overview/admin-overview/manage-roles-permissions.md).
* **Endpoint URL**: You need a publicly accessible URL where Peoplevine will send the webhook payload.
* **Authentication credentials** (if required): If your endpoint requires OAuth, a bearer token, or an API key, have those ready. You'll configure them separately in **Manage Webhook Auths**.

### Instructions

#### 1. Select the activity that triggers the webhook

1. Click the **Settings** gear icon (top right).
2. Click **Manage Webhooks**.

> **Note (Pro Dash):** Navigate to **AUTOMATE > Manage Webhooks**.

3. Click **CREATE A WEBHOOK**.
4. The system shows the full activity list. Select the activity that should trigger this webhook.

Each webhook monitors a single activity. To receive notifications for multiple activities, create separate webhooks for each.

#### 2. Configure the webhook

After selecting the activity, fill in the webhook form:

| Field                             | What to enter                                                                                                                          |
| --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| **Webhook System**                | Name of the external system (e.g., "Slack")                                                                                            |
| **WebHook Name**                  | A name for this webhook                                                                                                                |
| **Request Method**                | POST (default), PUT, PATCH, GET, or DELETE                                                                                             |
| **URL this WebHook will Request** | The endpoint URL where Peoplevine will send the data                                                                                   |
| **WebHook Description**           | Optional description                                                                                                                   |
| **Use Credentials**               | Select a pre-configured authentication account (defaults to "Attach an Authenticated Account" — leave as default if no auth is needed) |
| **Webhook Status**                | Active or Inactive                                                                                                                     |
| **Order Sequence**                | Numeric order for webhook execution when multiple webhooks fire on the same activity                                                   |
| **Defer Processing**              | Delay before firing (default 0). Use this when the activity needs additional processing time before the full data is available         |
| **Setup Header Object**           | Optional — add custom headers to the request                                                                                           |
| **Body/Message of WebHook**       | The payload template. Use dynamic variables to include dynamic data (see below)                                                        |
| **Content Type**                  | JSON (default) or Form Data                                                                                                            |

Click **UPDATE WEB HOOK** to save.

#### 3. Build the payload with dynamic variables

The Body/Message field accepts dynamic variables — placeholders that Peoplevine replaces with real data when the webhook fires. Wrap field names in `{@ @}` brackets:

**Default variables available in every webhook:**

| Variable                 | What it returns                                                                   |
| ------------------------ | --------------------------------------------------------------------------------- |
| `{@reference_type@}`     | The type of object that triggered the webhook (e.g., customer, membership, event) |
| `{@reference_no@}`       | The unique ID of that object                                                      |
| `{@reference_value@}`    | A human-readable label for the object (not always available)                      |
| `{@customer_no@}`        | The customer record involved                                                      |
| `{@company_no@}`         | Your Peoplevine tenant/account ID                                                 |
| `{@user_no@}`            | The staff user who performed the action (if applicable)                           |
| `{@reference_type_alt@}` | Secondary object type when relevant                                               |
| `{@reference_no_alt@}`   | Secondary object ID when relevant                                                 |
| `{@data@}`               | The full data object for the activity                                             |
| `{@controlLink@}`        | A link to the Control Panel to view the details                                   |
| `{@component_link@}`     | A link to what the member sees (e.g., the form page)                              |

You can also include **activity-specific variables** — for example, `{@event_title@}` for event webhooks, `{@survey_name@}` for form webhooks, `{@first_name@}` and `{@last_name@}` for customer data. Field names follow the [Peoplevine API documentation](https://docs.peoplevine.dev).

**Form field variables:** If the trigger is a form/survey completion, you can include individual form field values. Each form question has a unique ID (e.g., `field_12345_67890`) shown in the form editor. Use `{@field_12345_67890@}` in your payload to include that answer.

When the webhook fires, Peoplevine replaces variables in this order: activity fields first, then form response fields, then customer profile fields.

#### 4. Set up webhook authentication (optional)

If your endpoint requires authentication:

1. Click the **Settings** gear icon > **Manage Webhook Auths**.

> **Note (Pro Dash):** Navigate to **AUTOMATE > Manage Webhook Auths**.

2. Click **CREATE A WEBHOOK AUTH**.
3. Enter the OAuth details. Not all fields are required — if you provide an **Initiate OAuth** link, Peoplevine routes the user to log in. Otherwise, provide the token and refresh token endpoints. If you pass a **client ID and secret**, Peoplevine uses Basic Authentication to get the token.
4. Save.
5. Return to your webhook and select the saved authentication profile from the **Use Credentials** dropdown.

Once assigned, Peoplevine includes the generated token in future webhook calls.

#### 5. Use the local attribute-tagging function (optional)

To automatically tag a person with an attribute when a webhook fires, set the URL to `local/attribute` and the body to:

```json
{"customer_no": , "attribute_type": "Member Flag", "attribute_value": "Wine Club"}
```

Replace `Member Flag` with the attribute group and `Wine Club` with the value. The system processes this locally and applies the attribute to the CRM record that triggered the webhook.

### Activities that can trigger a webhook

Peoplevine supports 120+ webhook activities. Common triggers include:

* When someone books an appointment / a specific appointment slot
* When a new customer registers or is added
* When someone registers for / attends / purchases tickets to an event
* When someone joins a membership / loyalty program
* When a membership payment is made / fails / is reactivated / is renewed
* When someone checks in with their membership
* When someone completes a form or survey
* When someone places an order / purchases a specific product
* When a transaction is successfully processed
* When a subscription payment is made / fails / is renewed
* When someone is tagged with a specific attribute
* When someone sends you a text message

The full list is available as radio buttons on the activity selection page when creating a webhook.

### Slack webhook example

To post activity notifications to a Slack channel, use a Slack Incoming Webhook URL as the endpoint. Example body for an event registration notification:

```json
{"username":"Peoplevine","icon_url":"http://cdn.peoplevine.com/media/232/email-signature/pv_email_leaves.png","attachments":[{"fallback":"{@first_name@} {@last_name@} registered for {@event_title@}! Click here for details – {@controlLink@}","color":"#99DC33","title":"{@first_name@} {@last_name@} registered for {@event_title@}!","title_link":"{@controlLink@}","text":" for details!"}]}
```

The same pattern works for appointment bookings (`{@slot_subject@}`), membership activations (`{@membership_title@}`), order placements (`${@order_total@}`), form completions (`{@survey_name@}`), and other activities — replace the dynamic variables to match the trigger type.

### Best Practice

* **Start with one webhook.** Configure and test a single webhook end-to-end before creating multiple.
* **Use Defer Processing for heavy data.** Some activities (like customer updates or large memberships) need additional processing time. Deferring ensures the full data is available before Peoplevine fires the webhook.

### What Happens Next

* When the configured activity occurs, Peoplevine sends the HTTP request to your endpoint with the dynamic variables replaced by real values.
* Your endpoint processes the payload and returns an HTTP 200 to acknowledge receipt.
* Webhook activity can be reviewed per person on their CRM profile.
* **Next step**: [How to Set Up Alerts and Notifications](/products/control-panel-overview/admin-overview/manage-alerts.md).

*Last updated: 2026-05-24*


---

# 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.peoplevine.com/products/integrations-overview/configure-webhooks.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
