Skip to main content

Documentation Index

Fetch the complete documentation index at: https://storekit.com/docs/llms.txt

Use this file to discover all available pages before exploring further.

This page lists all webhook events available in storekit, grouped by category.

Order Events

Events related to order lifecycle and management.
EventDescription
order.createdTriggered when a new order is placed
order.acceptedTriggered when an order is accepted by the store
order.rejectedTriggered when an order is rejected by the store
order.canceledTriggered when an order is canceled
order.preparingTriggered when an order transitions to preparing status
order.ready_for_pickupTriggered when an order is marked ready for pickup
order.out_for_deliveryTriggered when an order is dispatched for delivery
order.pos.dispatch.failedTriggered when an order fails to dispatch to a POS system
order.rating.updatedTriggered when a customer updates their order rating
order.completedTriggered when an order is marked as completed
order.refund.createdTriggered when a refund is issued for an order

order.created

Triggered when a new order is placed by a customer.
{
  "event": "order.created",
  "data": {
    "id": "ord_abc123",
    "code": "A1B2",
    "asap": true,
    "total": 2500,
    "tip": 250,
    "deliveryFee": 299,
    "discountTotal": 0,
    "orderType": "Pickup",
    "createdAt": "2024-01-15T10:30:00Z",
    "deliveryTime": "2024-01-15T11:00:00Z",
    "notes": "Ring doorbell",
    "customer": {
      "firstName": "John",
      "lastName": "Doe",
      "email": "john@example.com",
      "phone": "+44123456789",
      "marketingConsent": true
    },
    "items": [
      {
        "name": "Margherita Pizza",
        "price": 1200,
        "quantity": 1,
        "plu": null,
        "posId": null,
        "taxRate": null,
        "modifiers": []
      }
    ],
    "venue": {
      "id": 1234,
      "name": "My Restaurant",
      "slug": "my-restaurant",
      "address": {
        "street1": "123 Main St",
        "street2": "",
        "city": "London",
        "postCode": "W1A 1AA",
        "country": "UK",
        "companyName": "My Restaurant Ltd",
        "coordinates": {
          "latitude": 51.5074,
          "longitude": -0.1278
        }
      }
    },
    "table": {
      "id": "tbl_123",
      "name": "Table 5",
      "covers": 4,
      "posId": "pos_tbl_5",
      "area": {
        "id": "area_1",
        "name": "Main Floor",
        "posId": null
      }
    },
    "deliveryAddress": {
      "street1": "456 Oak Ave",
      "street2": "Flat 2",
      "city": "London",
      "postCode": "E1 6AN",
      "country": "UK",
      "coordinates": {
        "latitude": 51.5155,
        "longitude": -0.0722
      }
    }
  }
}

order.accepted

Triggered when an order is accepted by the store. Has the same payload structure as order.created.

order.preparing

Triggered when an order transitions to the preparing status.
{
  "event": "order.preparing",
  "data": {
    "order": {
      "id": "ord_abc123",
      "code": "A1B2",
      "status": "preparing"
    },
    "venue": {
      "id": 1234,
      "name": "My Restaurant",
      "slug": "my-restaurant"
    }
  }
}

order.ready_for_pickup

Triggered when an order is marked as ready for customer pickup.
{
  "event": "order.ready_for_pickup",
  "data": {
    "order": {
      "id": "ord_abc123",
      "code": "A1B2",
      "status": "ready_for_pickup"
    },
    "venue": {
      "id": 1234,
      "name": "My Restaurant",
      "slug": "my-restaurant"
    }
  }
}

order.completed

Triggered when an order is marked as completed. This fires for individual order completions (via the dashboard, Deliverect, iKentoo, or auto-update) as well as bulk completions.
{
  "event": "order.completed",
  "data": {
    "order": {
      "id": "ord_abc123",
      "code": "A1B2",
      "status": "completed"
    },
    "venue": {
      "id": 1234,
      "name": "My Restaurant",
      "slug": "my-restaurant"
    }
  }
}

order.pos.dispatch.failed

Triggered when an order fails to dispatch to a POS system.
{
  "event": "order.pos.dispatch.failed",
  "data": {
    "order": {
      "id": "ord_abc123",
      "code": "A1B2",
      "total": 2500
    },
    "venue": {
      "id": 1234,
      "name": "My Restaurant",
      "slug": "my-restaurant"
    },
    "pos": {
      "name": "Zonal",
      "error": "Connection timeout: Unable to reach POS endpoint"
    },
    "retryCount": 3
  }
}

Store Events

Events related to store status and configuration.
EventDescription
store.openedTriggered when a store opens, a snooze ends early, or a timed snooze expires
store.closedTriggered when a store closes or is snoozed
store.opening_hours.updatedTriggered when opening hours are changed

store.opened

Triggered when a store is opened, when a snooze is ended early, or when a timed snooze expires automatically.
{
  "event": "store.opened",
  "data": {
    "venue": {
      "id": 1234,
      "name": "My Restaurant",
      "slug": "my-restaurant",
      "address": {
        "street1": "99-101 Regent St",
        "street2": "Victory House",
        "city": "London",
        "postCode": "W1B 4EZ",
        "companyName": "storekit",
        "coordinates": {
          "latitude": 51.5014,
          "longitude": 0.1419
        }
      }
    }
  }
}

store.closed

Triggered when a store is closed or snoozed.
{
  "event": "store.closed",
  "data": {
    "closedReason": "Kitchen closing early",
    "closedUntil": "2024-01-15T18:00:00Z",
    "venue": {
      "id": 1234,
      "name": "My Restaurant",
      "slug": "my-restaurant",
      "address": {
        "street1": "99-101 Regent St",
        "street2": "Victory House",
        "city": "London",
        "postCode": "W1B 4EZ",
        "companyName": "storekit",
        "coordinates": {
          "latitude": 51.5014,
          "longitude": 0.1419
        }
      }
    }
  }
}

store.opening_hours.updated

Triggered when opening hours are changed for a store.
{
  "event": "store.opening_hours.updated",
  "data": {
    "venue": {
      "id": 1234,
      "name": "My Restaurant",
      "slug": "my-restaurant",
      "address": {
        "street1": "99-101 Regent St",
        "street2": "Victory House",
        "city": "London",
        "postCode": "W1B 4EZ",
        "companyName": "storekit",
        "coordinates": {
          "latitude": 51.5014,
          "longitude": 0.1419
        }
      }
    }
  }
}

Item Events

Events related to menu item availability.
EventDescription
item.out_of_stockTriggered when a menu item goes out of stock

item.out_of_stock

Triggered when a menu item becomes unavailable. This can happen through several paths:
  • Manual snooze — an admin snoozes the item from the dashboard
  • Manual disable — an admin sets the item’s availability to off
  • Inventory depletion — the item’s inventory reaches zero after an order
  • Integration sync — a POS or integration (Deliverect, Lightspeed, Zonal) marks the item as unavailable
The reason field indicates why the item went out of stock, and source indicates what triggered it.
ReasonDescription
snoozedItem was temporarily snoozed
inventory_depletedItem inventory reached zero
disabledItem was explicitly disabled
SourceDescription
manualAction taken by an admin in the dashboard
orderInventory depleted by a customer order
deliverectSynced from Deliverect integration
lightspeedSynced from Lightspeed / iKentoo integration
zonalSynced from Zonal POS
pos_syncSynced from a generic POS availability push
{
  "event": "item.out_of_stock",
  "data": {
    "venue": {
      "id": 1234,
      "name": "My Restaurant"
    },
    "item": {
      "id": 5678,
      "name": "Margherita Pizza",
      "plu": "PLU-001",
      "posId": "pos_item_42",
      "sku": "SKU-MARG-001"
    },
    "reason": "snoozed",
    "source": "manual",
    "details": {
      "snoozeEnd": "2024-01-15T18:00:00Z"
    }
  }
}
The details object varies by reason:
  • snoozed — includes snoozeEnd (ISO 8601 timestamp, or null for indefinite snoozes)
  • inventory_depleted — empty {}
  • disabled — empty {}

Payments Events

Events related to payments and payouts.
EventDescription
payments.payout.createdTriggered when a payout is sent to your bank account
bill.payment.createdTriggered when a bill payment is created
payment_link.createdTriggered when a new payment link is created
payment_link.paidTriggered when a payment is successfully collected via a payment link
payment_link.refund.createdTriggered when a refund is initiated for a payment link payment
payment_link.refund.succeededTriggered when a payment link refund is confirmed as successful by the payment gateway
payment_link.refund.failedTriggered when a payment link refund is rejected by the payment gateway

payments.payout.created

Triggered when storekit sends a payout to your bank account.
{
  "event": "payments.payout.created",
  "data": {
    "amounts": [
      {
        "currency": "GBP",
        "value": "3210.50"
      },
      {
        "currency": "GBP",
        "value": "1030.00"
      }
    ],
    "bankAccount": {
      "id": "db97e205-105c-42ff-8460-d06c25cb6830",
      "IBAN": "GB15HBUK40127612345678",
      "accountNumber": "0001234",
      "branchCode": "001234",
      "currency": "GBP"
    },
    "estimatedArrivalDate": "2024-01-17"
  }
}
Triggered when a new payment link is created. Only fired for accounts with webhooks enabled.
{
  "event": "payment_link.created",
  "data": {
    "paymentLink": {
      "id": "plink_019dbc4d828174419d9ff9fae24aea7b",
      "title": "Invoice #001",
      "type": "one_off",
      "amountType": "fixed",
      "amount": 2500,
      "currency": "GBP",
      "reference": "INV-001"
    },
    "venue": {
      "id": 1234,
      "name": "My Restaurant",
      "slug": "my-restaurant"
    }
  }
}
FieldDescription
paymentLink.idThe payment link ID in plink_ format
paymentLink.typeone_off or reusable
paymentLink.amountTypefixed or variable
paymentLink.amountFixed amount in minor currency units, or null for variable links
paymentLink.currencyISO 4217 currency code
paymentLink.referenceYour internal reference, if set
venue.slugThe venue’s URL slug
Triggered when a payment is successfully collected via a payment link. Only fired for accounts with webhooks enabled.
{
  "event": "payment_link.paid",
  "data": {
    "paymentLink": {
      "id": "plink_019dbc4d828174419d9ff9fae24aea7b",
      "title": "Invoice #001",
      "type": "one_off",
      "amountType": "fixed",
      "reference": "INV-001"
    },
    "payment": {
      "transactionId": "txn_abc123",
      "amount": 2500,
      "currency": "GBP",
      "pspReference": "ABCD1234EFGH5678"
    },
    "venue": {
      "id": 1234,
      "name": "My Restaurant",
      "slug": "my-restaurant"
    }
  }
}
FieldDescription
paymentLink.idThe payment link ID in plink_ format
paymentLink.typeone_off or reusable
paymentLink.amountTypefixed or variable
paymentLink.referenceYour internal reference, if set
payment.amountAmount collected in minor currency units (e.g. pence)
payment.pspReferenceAdyen payment reference
venue.slugThe venue’s URL slug
Triggered when a refund is initiated for a payment link payment. The refund is pending at this point — confirmation arrives via payment_link.refund.succeeded or payment_link.refund.failed once the payment gateway processes it asynchronously.
{
  "event": "payment_link.refund.created",
  "data": {
    "paymentLink": {
      "id": "plink_019dbc4d828174419d9ff9fae24aea7b",
      "title": "Invoice #001",
      "reference": "INV-001"
    },
    "refund": {
      "id": "ref_xyz789",
      "transactionId": "txn_abc123",
      "amount": 1000,
      "currency": "GBP",
      "reason": "Item damaged"
    },
    "venue": {
      "id": 1234,
      "name": "My Restaurant",
      "slug": "my-restaurant"
    }
  }
}
FieldDescription
refund.idThe refund ID
refund.transactionIdThe transaction ID of the original payment
refund.amountRefund amount in minor currency units (e.g. pence)
refund.currencyISO 4217 currency code
refund.reasonReason for the refund, if provided
Triggered when the payment gateway confirms a refund has been successfully processed. This fires asynchronously after payment_link.refund.created.
{
  "event": "payment_link.refund.succeeded",
  "data": {
    "paymentLink": {
      "id": "plink_019dbc4d828174419d9ff9fae24aea7b",
      "title": "Invoice #001",
      "reference": "INV-001"
    },
    "refund": {
      "id": "ref_xyz789",
      "transactionId": "txn_abc123",
      "amount": 1000,
      "currency": "GBP",
      "reason": "Item damaged"
    },
    "venue": {
      "id": 1234,
      "name": "My Restaurant",
      "slug": "my-restaurant"
    }
  }
}
Triggered when the payment gateway rejects a refund. This fires asynchronously after payment_link.refund.created.
{
  "event": "payment_link.refund.failed",
  "data": {
    "paymentLink": {
      "id": "plink_019dbc4d828174419d9ff9fae24aea7b",
      "title": "Invoice #001",
      "reference": "INV-001"
    },
    "refund": {
      "id": "ref_xyz789",
      "transactionId": "txn_abc123",
      "amount": 1000,
      "currency": "GBP",
      "reason": "Item damaged"
    },
    "venue": {
      "id": 1234,
      "name": "My Restaurant",
      "slug": "my-restaurant"
    }
  }
}

Printer Events

Events related to cloud printer status.
EventDescription
printer.status.offlineTriggered when a printer goes offline
printer.status.onlineTriggered when a printer comes back online

printer.status.offline

Triggered when a connected cloud printer fails to check in to the storekit server for 5 minutes. An email notification is also sent to the venue’s configured email address.
{
  "event": "printer.status.offline",
  "data": {
    "id": "6041b7c2-d402-4ff1-9adf-2863c65b61b1",
    "mac": "00-B0-D0-63-C2-26",
    "model": "StarMCPrint3",
    "name": "Kitchen Printer",
    "status": "offline"
  }
}

printer.status.online

Triggered when a cloud printer reconnects to our servers after being offline for at least 5 minutes. An email notification is also sent to confirm the printer is back online.
{
  "event": "printer.status.online",
  "data": {
    "id": "6041b7c2-d402-4ff1-9adf-2863c65b61b1",
    "mac": "00-B0-D0-63-C2-26",
    "model": "StarMCPrint3",
    "name": "Kitchen Printer",
    "status": "online"
  }
}