Event Catalog
All events Tower Crown can deliver to your webhook endpoint. The payload body is the full JSON representation of the resource that triggered the event. you get the same data structure you'd receive from the corresponding REST endpoint.
Available Events
| Event | Trigger |
|---|---|
shipment.created | A new shipment was booked. |
shipment.rescheduled | A shipment was moved back to PENDING after being canceled. |
shipment.canceled | A shipment was canceled. |
shipment.delivered | A shipment was marked as delivered. |
wallet.funded | A wallet top-up was processed successfully. |
shipment.created
Fired immediately after a shipment is booked and the wallet has been debited.
{
"id": "SHP_Z8F9A2B3C4",
"trackingCode": "TCL-SB-3891829",
"senderName": "Grace Adegoke",
"senderPhone": "+2348031234567",
"receiverName": "John Doe",
"receiverPhone": "+2348123456789",
"originAddress": "12 Allen Avenue, Ikeja, Lagos",
"destinationAddress": "Ring Road, Ibadan, Oyo",
"packageTitle": "Laptop & Charger",
"packageCategory": "MEDIUM",
"totalCost": 33040,
"status": "PENDING",
"events": [
{
"title": "Shipment Created",
"description": "Shipment order received.",
"createdAt": "2026-07-01T17:42:00Z"
}
],
"createdAt": "2026-07-01T17:42:00Z"
}
shipment.rescheduled
Fired when a previously canceled shipment is moved back to PENDING. This re-deducts the shipping fee from the wallet.
{
"id": "SHP_Z8F9A2B3C4",
"trackingCode": "TCL-SB-3891829",
"status": "PENDING",
"events": [
{
"title": "Shipment Created",
"description": "Shipment order received.",
"createdAt": "2026-07-01T17:42:00Z"
},
{
"title": "Shipment Rescheduled",
"description": "The shipment was rescheduled",
"createdAt": "2026-07-01T19:30:00Z"
}
],
"createdAt": "2026-07-01T17:42:00Z"
}
shipment.canceled
Fired when a shipment is canceled. The shipping fee is refunded to the wallet automatically.
{
"id": "SHP_Z8F9A2B3C4",
"trackingCode": "TCL-SB-3891829",
"status": "CANCELED",
"events": [
{
"title": "Shipment Created",
"description": "Shipment order received.",
"createdAt": "2026-07-01T17:42:00Z"
},
{
"title": "Shipment Canceled",
"description": "The shipment was canceled by the user.",
"createdAt": "2026-07-01T19:00:00Z"
}
],
"createdAt": "2026-07-01T17:42:00Z"
}
shipment.delivered
Fired when the logistics system marks a shipment as delivered. This transition is handled by the Tower Crown operations team. it cannot be set manually via the API.
{
"id": "SHP_Z8F9A2B3C4",
"trackingCode": "TCL-SB-3891829",
"status": "DELIVERED",
"events": [
{
"title": "Shipment Created",
"description": "Shipment order received.",
"createdAt": "2026-07-01T17:42:00Z"
},
{
"title": "Simulated transition to DELIVERED",
"description": "Triggered via Developer Console Sandbox.",
"createdAt": "2026-07-01T21:10:00Z"
}
],
"createdAt": "2026-07-01T17:42:00Z"
}
wallet.funded
Fired after a successful wallet top-up. The payload is the created transaction ledger entry.
{
"id": "TNX_A1B2C3D4E5",
"date": "2026-07-01T18:00:00Z",
"type": "TOPUP",
"description": "Prepaid Deposit via GTBank",
"amount": 50000,
"balanceAfter": 150000,
"reference": "GTB2026070100987"
}
The payload for shipment events is the full ShipmentRecord as it exists at the time the event fires. including all events in the events array up to that point. Use the status field to determine the trigger.