# Notifications & Webhooks

The Notifications & Webhooks tab in Administrator Settings allows you to configure email and webhook notifications for key platform events. The primary contact designated in the Company tab receives all event notifications automatically, regardless of additional email addresses configured.

## Configuration

### Webhook Configuration

A single webhook URL is shared across all notification types. Enter a valid URL in the **Webhook URL** field to enable webhook delivery. Once a valid URL is provided, a **Send Webhook** toggle becomes active for each event, allowing you to selectively enable webhook notifications per event type.

{% hint style="info" %}

* The URL must be a valid HTTP/HTTPS endpoint
* Webhooks are sent as `POST` requests with `Content-Type: application/json`
* Your endpoint should return a 2xx status code to indicate successful receipt
  {% endhint %}

### Email Subscribers

Each event type supports a comma-separated list of email addresses. These subscribers receive email notifications in addition to the primary contact.

### Event Types

| Event                       | Key                           | Descripti                                               |
| --------------------------- | ----------------------------- | ------------------------------------------------------- |
| Integration Created         | integration\_created          | Fired when a new integration is created on the platform |
| Tenant Created              | tenant\_created               | Fired when a new tenant is created for an integration   |
| Tenant Archived             | tenant\_archived              | Fired when a tenant is archived                         |
| Partner Integration Updated | partner\_integration\_updated | Fired when a partner modifies an existing integration   |
| Run Failed                  | run\_failed                   | Fired when an integration run fails                     |

## Webhook Payload Shapes

All webhook payloads share a set of common fields, with additional fields specific to each event type.

### Common Fields

Every webhook payload includes:

```json
{
  "event_type": "<event_key>",
  "environment": "<namespace>",
  "account_id": 12345,
  "account_name": "Acme Corp",
  "timestamp": "2026-05-04T12:00:00Z"
}
```

| Field         | Type    | Description                                                          |
| ------------- | ------- | -------------------------------------------------------------------- |
| event\_type   | string  | The event key (e.g. `"new_integration_created"`, `"tenant_created"`) |
| environment   | string  | The namespace/environment where the event occurred                   |
| account\_id   | integer | The ID of the organization that owns the resource                    |
| account\_name | string  | The name of the organization                                         |
| timestamp     | string  | ISO 8601 / RFC 3339 timestamp in UTC                                 |

### Integration Created

Fired when a new integration is created.

```json
{
  "event_type": "new_integration_created",
  "environment": "prod-acme",
  "account_id": 100,
  "account_name": "Acme Corp",
  "timestamp": "2026-05-04T12:00:00Z",
  "integration_id": 42,
  "integration_name": "Shopify Integration"
}
```

| Field             | Type    | Description                             |
| ----------------- | ------- | --------------------------------------- |
| integration\_id   | integer | The ID of the newly created integration |
| integration\_name | string  | The display name of the integration     |

### Tenant Created

Fired when a new tenant is created for an integration.

```json
{
  "event_type": "new_tenant_created",
  "environment": "prod-acme",
  "account_id": 100,
  "account_name": "Acme Corp",
  "timestamp": "2026-05-04T12:00:00Z",
  "tenant_id": 789,
  "tenant_name": "Widget Co",
  "integration_id": 42,
  "integration_name": "Shopify Integration"
}
```

| Field             | Type    | Description                                     |
| ----------------- | ------- | ----------------------------------------------- |
| tenant\_id        | integer | The ID of the newly created tenant              |
| tenant\_name      | string  | The name of the tenant                          |
| integration\_id   | integer | The ID of the integration the tenant belongs to |
| integration\_name | string  | The display name of the integration             |

### Tenant Archived

Fired when a tenant is archived.

```json
{
  "event_type": "tenant_archived",
  "environment": "prod-acme",
  "account_id": 100,
  "account_name": "Acme Corp",
  "timestamp": "2026-05-04T12:00:00Z",
  "tenant_id": 789,
  "tenant_name": "Widget Co",
  "integration_id": 42,
  "integration_name": "Shopify Integration"
}
```

| Field             | Type    | Description                                      |
| ----------------- | ------- | ------------------------------------------------ |
| tenant\_id        | integer | The ID of the archived tenant                    |
| tenant\_name      | string  | The name of the tenant                           |
| integration\_id   | integer | The ID of the integration the tenant belonged to |
| integration\_name | string  | The display name of the integration              |

### Partner Integration Updated

Fired when a partner modifies an existing integration.

```json
{
  "event_type": "partner_integration_updated",
  "environment": "prod-acme",
  "account_id": 100,
  "account_name": "Acme Corp",
  "timestamp": "2026-05-04T12:00:00Z",
  "integration_id": 42,
  "integration_name": "Shopify Integration",
  "partner_id": 55,
  "partner_name": "Partner Inc"
}
```

| Field             | Type    | Description                                             |
| ----------------- | ------- | ------------------------------------------------------- |
| integration\_id   | integer | The ID of the updated integration                       |
| integration\_name | string  | The display name of the integration                     |
| partner\_id       | integer | The ID of the partner organization that made the change |
| partner\_name     | string  | The name of the partner organization                    |

### Run Failed

Fired when an integration run fails. Includes direct links to the run in both the admin dashboard and the API.

```json
{
  "event_type": "run_failed",
  "environment": "prod-acme",
  "account_id": 100,
  "account_name": "Acme Corp",
  "timestamp": "2026-05-04T12:00:00Z",
  "run_id": 9876,
  "run_status": "failed",
  "admin_link": "https://admin.prod-acme.pandium.com/runs/9876/show",
  "api_link": "https://api.prod-acme.pandium.com/v2/runs/9876",
  "api_status_link": "https://api.prod-acme.pandium.com/v2/runs/9876/status",
  "api_triggers_link": "https://api.prod-acme.pandium.com/v2/runs/9876/triggers",
  "tenant_id": 789,
  "tenant_name": "Widget Co",
  "integration_id": 42,
  "integration_name": "Shopify Integration"
}
```

| Field               | Type    | Description                                   |
| ------------------- | ------- | --------------------------------------------- |
| run\_id             | integer | The ID of the failed run                      |
| run\_status         | string  | The status of the run (e.g. `"failed"`)       |
| admin\_link         | string  | Direct link to the run in the admin dashboard |
| api\_link           | string  | API endpoint for the run resource             |
| api\_status\_link   | string  | API endpoint for the run's status             |
| api\_triggers\_link | string  | API endpoint for the run's triggers           |
| tenant\_id          | integer | The ID of the tenant the run belongs to       |
| tenant\_name        | string  | The name of the tenant                        |
| integration\_id     | integer | The ID of the integration                     |
| integration\_name   | string  | The display name of the integration           |

## Delivery Details

* **Method**: `POST`
* **Content-Type**: `application/json`
* **Retries**: Webhooks are sent once with no automatic retry on failure
* **Timeout**: Standard HTTP timeout applies
* **Authentication**: No authentication headers are sent with webhook requests... if you need to verify the source, validate by IP or use the webhook URL as a shared secret (e.g. include a token as a query parameter)&#x20;


---

# Agent Instructions: 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:

```
GET https://docs.pandium.com/integration-hub/notifications-and-webhooks.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
