Webhooks
One endpoint per concern. Every delivery is signed, ordered by aggregate_version and kept for 30 days, so a replay is a click rather than a support ticket.
Endpoints
Where we send your events
- wh_orders_euhttps://api.bissaufoods.example/palopgo/orders · 4 events · last delivery 4 min ago100%healthy
- wh_paymentshttps://api.bissaufoods.example/palopgo/payments · 5 events · last delivery 11 min ago62%failing
- wh_catalog_synchttps://pos.bissaufoods.example/hooks/palopgo · 2 events · last delivery on Mon 5 Oct97%paused
Paused endpoints keep their secret and their subscription. Nothing is lost for 72 hours.
New
Add an endpoint
Catalogue
Events you can subscribe to
Grouped by the aggregate they belong to. Subscribing to a context you do not handle costs you nothing but noise.
order.*3 eventsThe order aggregate. One event per accepted command, with `aggregate_version`.
- order.createdAccepted and queued for the store.
- order.state_changedAny move in the order machine, with the customer-facing phase.
- order.cancelledCancelled by customer, store, ops or the system, with the reason code.
payment.*5 eventsThe payment leg. Cash orders emit `promised` and `collected`, never `pushed`.
- payment.pushedA push request left for the rail; the customer has a window to confirm.
- payment.confirmedThe rail confirmed. Money is not yet captured on card markets.
- payment.failedDeclined, wrong PIN or cancelled on the handset.
- payment.expiredThe push window closed with no answer.
- payment.refundedFull or partial refund settled on the original rail.
fulfilment.*5 eventsThe delivery leg. Pickup orders skip every courier event.
- fulfilment.courier_assignedA courier accepted the offer; carries vehicle and masked phone.
- fulfilment.picked_upCollected at the store.
- fulfilment.arrivingInside the arrival geofence; a hint, never proof.
- fulfilment.deliveredProof accepted (customer OTP or photo).
- fulfilment.failedNot delivered; the order is returning to the store.
dispatch.*2 eventsSupply signals for the cell your order sits in. Useful for scheduling, not for retries.
- dispatch.no_courierNo courier took the offer inside the lease.
- dispatch.supply_lowThe cell is short of couriers for the next half hour.
catalog.*2 eventsAnswers to your catalogue pushes, per offer.
- catalog.offer_rejectedAn offer was refused, with the field and the reason.
- catalog.availability_changedThe store changed availability from its own app.
ticket.*4 eventsEvents you organise.
- ticket.issuedA ticket was issued against a tier.
- ticket.checked_inScanned at the door.
- ticket.voidedVoided by the organiser or on refund.
- ticket.transferredMoved to another phone number.