Skip to main content

Event Types

Shoppex sends webhooks for order and subscription events. Event names use colons as separators (e.g., order:paid).

Order Events

order:paid

Triggered when an order/invoice is successfully paid.
{
  "event": "order:paid",
  "data": {
    "uniqid": "abc123def456",
    "type": "PRODUCT",
    "status": "COMPLETED",
    "gateway": "STRIPE",
    "total": 49.99,
    "total_display": 49.99,
    "currency": "USD",
    "customer_email": "[email protected]",
    "country": "US",
    "quantity": 1,
    "product_id": "prod_xyz",
    "product_title": "Pro License",
    "is_developer_invoice": false,
    "created_at": 1705314600,
    "updated_at": 1705318200
  },
  "created_at": 1705318200
}

order:cancelled

Triggered when an order is cancelled or expires.
{
  "event": "order:cancelled",
  "data": {
    "uniqid": "abc123def456",
    "type": "PRODUCT",
    "status": "VOIDED",
    "gateway": null,
    "total": 49.99,
    "total_display": 49.99,
    "currency": "USD",
    "customer_email": "[email protected]",
    "product_id": "prod_xyz",
    "product_title": "Pro License",
    "created_at": 1705314600,
    "updated_at": 1705400600
  },
  "created_at": 1705400600
}

order:paid:product

Same as order:paid but includes full product details in the payload.
{
  "event": "order:paid:product",
  "data": {
    "uniqid": "abc123def456",
    "type": "PRODUCT",
    "status": "COMPLETED",
    "gateway": "STRIPE",
    "total": 49.99,
    "currency": "USD",
    "customer_email": "[email protected]",
    "product_id": "prod_xyz",
    "product_title": "Pro License",
    "products": [
      {
        "uniqid": "prod_xyz",
        "title": "Pro License",
        "description": "Full access to all features",
        "price": 49.99,
        "price_display": 49.99,
        "currency": "USD",
        "type": "SERVICE"
      }
    ],
    "created_at": 1705314600,
    "updated_at": 1705318200
  },
  "created_at": 1705318200
}

order:cancelled:product

Same as order:cancelled but includes full product details.

Subscription Events

subscription:created

Triggered when a new subscription starts.
{
  "event": "subscription:created",
  "data": {
    "id": "sub_abc123",
    "status": "ACTIVE",
    "gateway": "STRIPE",
    "customer_id": "cust_xyz789",
    "current_period_start": "2026-01-15T00:00:00.000Z",
    "current_period_end": "2026-02-15T00:00:00.000Z",
    "created_at": "2026-01-15T00:00:00.000Z"
  },
  "created_at": 1705314600
}

subscription:cancelled

Triggered when a subscription is cancelled.
{
  "event": "subscription:cancelled",
  "data": {
    "id": "sub_abc123",
    "status": "CANCELLED",
    "gateway": "STRIPE",
    "customer_id": "cust_xyz789",
    "current_period_start": "2026-01-15T00:00:00.000Z",
    "current_period_end": "2026-02-15T00:00:00.000Z",
    "created_at": "2026-01-15T00:00:00.000Z"
  },
  "created_at": 1705918200
}

Common Fields

All webhook payloads include these top-level fields:
FieldTypeDescription
eventstringEvent type (e.g., order:paid)
dataobjectEvent-specific payload
created_atnumberUnix timestamp when event was created
All timestamps are Unix timestamps (seconds since epoch), not ISO 8601 strings.