POST to the endpoints you’ve registered, carrying a
JSON payload that describes what changed.
The envelope
Every event, regardless of family, is delivered inside the sameWebhookEvent envelope:
eventId— a unique ID for this delivery. Use it to deduplicate: if the sameeventIdarrives twice (for example after a retry), treat the second delivery as a no-op.actorId— who triggered the event, as a prefixed ID (usr_<userId>for a Cargado user,api_<apiKeyId>for an action taken via the public API).type— the event type, e.g.bid.submitted. Route on it; it tells you the shape ofdata.timestamp— when the underlying change happened (ISO-8601), not when the webhook was delivered.data— the event-specific payload. Its shape depends ontype, so on the generic envelope it’s described but not typed — see the per-family event pages for the concrete payload.
type and data change between event families. The generic envelope stays
payload-agnostic on purpose; each family documents its own concrete shape on its
webhook page.
Bid events
Bid events cover a bid’s lifecycle: submitted, accepted, rejected, revoked, closed, and the counter-offer flow. On the Bid events webhook page,type
is one of the bid event literals and data is the concrete bid payload — the
bid that changed plus the posting, freight, and carrier it relates to.

