Skip to main content
Run sends shipment events to the HTTPS endpoint on your Business. This page is only those events. Address checks are a different webhook: Address webhook. shipment.status_changed does not deliver an address check. You register one HTTPS endpoint per Business. Run POSTs a signed JSON envelope to that URL.

Configure

Set your webhook URL, subscribed event types, and signing secret from the Business Dashboard → Developers → Setup (dashboard session — not via API key).
Run Business Manage Webhook settings

Developers → Setup — webhook URL, signing secret, and event subscriptions

  • On first save, the signing secret is returned once (looks like whsec_•••••••••••••••• when masked) — store the full value securely.
  • A delivery company starts with shipment.status_changed.
  • Use Rotate secret if the secret may be compromised. The previous secret remains valid for about 24 hours.
Inspect attempts under Developers → Webhook deliveries.
Webhook delivery attempts table

Developers → Webhook deliveries

Event types

data.object is shipment. data.order_id is the order id you sign. One durable event is stored per transition. type is the most specific mapped type. Subscribing to shipment.status_changed receives shipment status transitions, including create. See Shipment statuses for how lifecycle statuses map to these events.

Event envelope

Every delivery is a JSON POST with this shape. Headers:

Delivery and retries

Return a 2xx status to acknowledge receipt. Delivery is at-least-once. Retries reuse the same event id (evt_…) — make your handler idempotent. Run does not promise global ordering; use occurred_at, previous_status, and status. In production, webhook URLs must use HTTPS. Run blocks private/reserved destinations and disables redirects when delivering.

Verify signatures

HMAC-SHA256 of orderId + status + timestamp, keyed with your whsec_… secret. Compare the hex digest to X-Run-Webhook-Signature. The signature is not a hash of the JSON body. Reject timestamps older than about 5 minutes. Always verify before trusting the body.