Webhook payload structure (Beta)
This topic describes the JSON payload format for event notification webhooks, including details about the fields. For more information about the Event Notifications (Beta) feature, see About event notifications (Beta).
Webhook payload structure
Webhooks deliver a JSON payload with the following structure:
{
"event": "customer.created",
"timestamp": "2026-01-25T22:48:32Z",
"text": "A new customer has been created.\n\nCustomer: Testy McTestface\nCustomer ID: 38ljzNKNZZSIp3bUQYSPzJUUBpd\nApplication: Demo\nChannel: Stable\nLicense Type: trial\nExpiration: 2026-02-24\nCreated at: 2026-01-25 22:48:32 UTC\n\nView customer: https://vendor.replicated.com/apps/demo-jaybird/customer/38ljzNKNZZSIp3bUQYSPzJUUBpd",
"data": {
"app_id": "34LgWqPkIlmhPDhvQVrbWcRwvLW",
"team_id": "CKUTNRX16FghU69v_RjZ1Q1EFXBcQBMZ",
"app_name": "Demo",
"app_slug": "demo-jaybird",
"eventType": "customer.created",
"channel_id": "34LgWuB1oCNbdLV6BbeepUSAEA6",
"created_at": "2026-01-25T22:48:32.391894468Z",
"event_type": "customer.created",
"expires_at": "2026-02-24T22:47:37Z",
"customer_id": "38ljzNKNZZSIp3bUQYSPzJUUBpd",
"channel_name": "Stable",
"license_type": "trial",
"customer_name": "Testy McTestface",
"subscription_name": "Trial Customer Alerts"
}
}
Top-level fields
The following describes the top-level fields in the webhook payload:
| Field | Type | Description |
|---|---|---|
event | string | Event type identifier such as "customer.created" or "instance.upgrade_started" |
timestamp | string | ISO 8601 timestamp when the event occurred |
text | string | Human-readable text description of the event, formatted for readability in Slack and other chat tools |
data | object | Event-specific data containing detailed information about the event. See |
data object fields
The data object contains detailed, event-specific information. There are common fields that apply to all event types as well as event-specific fields.
Common fields
The webhook payload includes the following common data object fields for all event types:
| Field | Type | Description |
|---|---|---|
app_id | string | Application identifier |
team_id | string | Team identifier |
app_name | string | Application name |
app_slug | string | Application slug (URL-safe identifier) |
event_type | string | Event type identifier |
subscription_name | string | Custom subscription name, if set. The subscription_name field is included in the data object only when a custom name is set on the subscription. |
Event-specific fields
This section describes the event-specific fields in the webhook payload data object.
Release Assets Downloaded events
The following fields apply to the Release Assets Downloaded event type:
| Field | Type | Description |
|---|---|---|
customer_id | string | Customer identifier |
customer_name | string | Customer display name |
channel_id | string | Channel identifier |
channel_name | string | Channel name |
license_type | string | License type: paid, trial, dev, or community |
asset_type | string | Type of asset pulled: helm_chart, embedded_cluster_bundle, or proxy_image |
asset_name | string | Name of the asset (chart name, app slug, or full proxy path) |
asset_version | string | Version or tag of the asset |
service_account_name | string | Enterprise Portal service account name, if a service account made the pull. Empty for direct license pulls. |
is_first_customer_pull | boolean | true if this is the first software pull by this customer across all asset types; false for all subsequent pulls. Forward-only: customers who pulled software before this feature shipped will always have false. The is_first_customer_pull field is useful for revenue recognition workflows. |
downloaded_at | string | Timestamp (International Organization for Standardization (ISO) 8601 format) of when the pull occurred |