Webhook events
partner.created
Receive this event when Grizzlee records partner.created.
Example payload
This illustrative payload follows the current event validator. Amounts use minor units.
json
{
"id": "00000000-0000-4000-8000-000000000001",
"companyId": "company-example",
"type": "partner.created",
"data": {
"externalId": "merchant-partner-001",
"customerIds": [
"customer-example"
],
"name": "Example referral program",
"email": "partner@example.com",
"programIds": [
"program-example"
],
"partnerId": "partner-example",
"partnerExternalId": "merchant-partner-001",
"id": "partner-example",
"companyId": "company-example",
"referralCode": "EXAMPLE",
"active": true,
"createdAt": "2026-10-11T12:00:00.000Z"
},
"createdAt": "2026-10-11T12:00:00.000Z"
}Payload fields
| Field | Type | Required | Details |
|---|---|---|---|
externalId | string | Yes | |
customerIds | array | No | |
name | string | Yes | |
email | union | Yes | |
programIds | array | Yes | |
labels | array | No | |
properties | object | No | |
stripeAccountId | union | No | |
locale | union | No | |
partnerId | string | Yes | |
partnerExternalId | string | Yes | |
id | string | Yes | |
companyId | string | Yes | |
referralCode | string | Yes | |
alias | string | No | |
active | boolean | Yes | |
createdAt | string | Yes | date-time |
Variant 1
Type: string.
Variant 2
Type: string.
stripeAccountId
Variant 1
Type: string.
Variant 2
Type: null.
locale
Variant 1
Type: string.
Variant 2
Type: null.
Payload schema
json
{
"type": "object",
"properties": {
"externalId": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"customerIds": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"maxItems": 100
},
"name": {
"type": "string",
"minLength": 2,
"maxLength": 100
},
"email": {
"anyOf": [
{
"type": "string",
"format": "email",
"maxLength": 254
},
{
"type": "string",
"const": ""
}
]
},
"programIds": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"maxItems": 100
},
"labels": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"maxItems": 10
},
"properties": {
"type": "object",
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number",
"minimum": -1000000000000,
"maximum": 1000000000000
},
{
"type": "boolean"
}
]
}
},
"stripeAccountId": {
"anyOf": [
{
"type": "string",
"maxLength": 255,
"pattern": "^acct_[A-Za-z0-9]+$"
},
{
"type": "null"
}
]
},
"locale": {
"anyOf": [
{
"type": "string",
"enum": [
"en",
"fr-CA",
"hy",
"ru"
]
},
{
"type": "null"
}
]
},
"partnerId": {
"type": "string",
"minLength": 1
},
"partnerExternalId": {
"type": "string",
"minLength": 1
},
"id": {
"type": "string",
"minLength": 1
},
"companyId": {
"type": "string",
"minLength": 1
},
"referralCode": {
"type": "string",
"minLength": 1
},
"alias": {
"type": "string",
"minLength": 1
},
"active": {
"type": "boolean"
},
"createdAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"externalId",
"name",
"email",
"programIds",
"partnerId",
"partnerExternalId",
"id",
"companyId",
"referralCode",
"active",
"createdAt"
],
"additionalProperties": true
}Handle delivery
Verify the signature over the raw body before parsing JSON. Check that the body ID matches Grizzlee-Event-Id. Process each ID once, since delivery can repeat.