Skip to content

Search is only available in production builds. Try building and previewing the site to test it out locally.

Transfer Events

Transfer events are triggered when internal transfers change status.

Copy these interfaces to type your webhook handlers:

/** Base event properties included in all webhook events */
interface BaseEvent {
/** Unique event identifier (UUID) */
id: string;
/** Event type */
kind: string;
/** ISO 8601 timestamp */
time: string;
/** Transaction identifier for grouping related events */
transactionId: string;
}
/** Transfer status values */
type TransferStatus =
| "pending"
| "in_progress"
| "completed"
| "cancelled";

Triggered when a transfer’s status is updated.

{
"id": "evt_abc123",
"kind": "transfer.status.changed",
"time": "2024-01-15T10:30:00Z",
"transactionId": "txn_xyz789",
"transferId": "tfr_456",
"transferShortId": "TFR-001",
"previousTransferStatus": "pending",
"currentTransferStatus": "in_progress"
}
StatusDescription
pendingTransfer created, awaiting processing
in_progressTransfer in progress
completedTransfer completed successfully
cancelledTransfer cancelled

Union type for handling any transfer event:

type TransferEvent = TransferStatusChangedEvent;
// Type guard for transfer events
function isTransferEvent(event: BaseEvent): event is TransferEvent {
return event.kind.startsWith("transfer.");
}
// Example webhook handler
async function handleTransferWebhook(event: TransferEvent) {
switch (event.kind) {
case "transfer.status.changed":
console.log(
`Transfer ${event.transferShortId} changed from ${event.previousTransferStatus} to ${event.currentTransferStatus}`
);
if (event.currentTransferStatus === "completed") {
// Update inventory locations
} else if (event.currentTransferStatus === "cancelled") {
// Revert any partial changes
}
break;
}
}