Skip to main content
WEBHOOK
promotionalEntitlement.ends_soon
{
  "type": "promotionalEntitlement.ends_soon",
  "messageId": "a6ce...",
  "traceId": "549a...",
  "id": "promo-entitlement-id",
  "status": "Active",
  "feature": {
    "id": "feature-test-id",
    "name": "feature-test-name",
    "unit": "seat",
    "units": "seats",
    "description": "feature test description",
    "featureType": "NUMBER",
    "meterType": "INCREMENTAL",
    "status": "ACTIVE"
  },
  "customer": {
    "entityId": "customer-uuid",
    "id": "customer-test-id",
    "name": "customer-test",
    "email": "john@example.com",
    "billingId": "customer-test-billing-id",
    "crmId": "customer-test-crm-id"
  },
  "hasUnlimitedUsage": false,
  "usageLimit": 100,
  "resetPeriod": "MONTH",
  "resetPeriodConfiguration": {
    "accordingTo": "SubscriptionStart"
  },
  "isVisible": true,
  "period": "1 month",
  "endDate": "2025-11-10T00:00:00.001Z"
}

Body

application/json
type
string
required

Event type discriminator.

Allowed value: "promotionalEntitlement.ends_soon"
id
string
required

Promotional entitlement ID.

feature
object
required

Canonical representation of a feature that can be packaged in plans or add-ons.

customer
object
required

Minimal customer object embedded in events.

endDate
string<date-time>
required

Scheduled expiration time (ISO 8601).

messageId
string

Unique webhook message ID.

traceId
string

Correlation ID for tracing.

status
string

Current status of the entitlement.

hasUnlimitedUsage
boolean

Whether usage is unlimited.

usageLimit
number

Max usage if not unlimited.

resetPeriod
string

Period for usage resets (e.g.

resetPeriodConfiguration
object

Reset anchor configuration (e.g., according to subscription start).

isVisible
boolean

Whether the entitlement is visible to the user.

period
string

Human-readable period (e.g. "1 month").

notifyBeforeDays
number

Always 7 — the number of days before expiration this notification is fired.

I