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.