Skip to main content

Webhook event catalog

This is the reference list of the webhook triggers you can subscribe to in the Upwell dashboard. For how webhooks work — subscribing, the delivery envelope, auth, retries, and a receiver example — see Outbound webhooks.

Trigger naming

Triggers are dot-delimited strings. Most take one of these shapes:
  • action is create, update, or delete.
  • .status.{STATUS} fires only on a specific status transition.
  • .{event} is a named sub-event rather than a status — e.g. update.carrier_invoice.shipment_updated, which fires when the invoice is matched to a shipment.
Each change produces exactly one trigger — the most specific one that applies — and a subscription receives an event only if it subscribed to that exact trigger string. A generic update.{resource} is not also delivered alongside a .status.{STATUS} or .{event} trigger; update.{resource} fires for a change that is neither a tracked status transition nor a named sub-event. So to catch more than one case, subscribe to each trigger you care about. Match the string verbatim, including case — most status suffixes are upper-case (APPROVED, SENT), but the remittance ones are lower-case. The tables below are the source of truth.

Invoice (customer invoice) triggers

Carrier invoice triggers

To distinguish ingestion done from the later review lifecycle, see the guidance in Knowing when a carrier invoice is processed.

Carrier document triggers

Carrier-invoice approval request triggers

Shipment document triggers

Customer payment triggers

Breakthrough Fuel triggers

Exception triggers

Remittance triggers

There are no foundation-entity triggers

Webhooks fire on transactional records — invoices, carrier invoices, payments, documents, exceptions, remittances, approval requests, and BTF batches. They do not fire on the foundation entities you sync in: This matters when you’re planning a two-way sync: Upwell will not call you back when one of these records changes. Your TMS remains the system of record for them, and the flow is one-way — you push with POST/PUT, and you poll (GET, or POST /…/search where it exists) if you need to read state back. Subscribe to the transactional triggers above for the events Upwell does originate.
Triggers marked † exist in the dispatcher but are not exposed in the dashboard subscription form for self-service — create/update/delete.carrier_document and update.invoice.status.APPROVED. If you need one of those, contact support@upwell.com. Everything else in the tables above is self-service. For payload shapes and delivery details, see Outbound webhooks.