# Webhook Event All webhook events are delivered to your configured endpoint URL. The event field in the payload determines which type of webhook was triggered. Your endpoint should handle all event types or gracefully ignore unknown events. Event Types: - Entity changes: CUSTOMER_, COMPANY_, CARRIER_, CUSTOMER_CONTACT_ - Shipment events: SHIPMENT_DELIVERED, SHIPMENT_BOOKED, SHIPMENT_DISPATCHED, etc. - Financial events: CARRIER_INVOICE_CREATED, CUSTOMER_PAYMENT_CREATED, etc. Security: All webhook requests include an x-api-key header containing your webhook token configured in the MVMNT UI. Best Practices: - Return 200 OK quickly and process asynchronously - Implement idempotency using event ID and timestamp - Handle unknown event types gracefully for forward compatibility Endpoint: POST your-endpoint Version: 1.0.0 Security: BearerAuth ## Request fields (application/json): - `sentAt` (string, required) ISO 8601 timestamp when the webhook was sent from MVMNT Example: "2025-01-15T14:30:00Z" - `events` (array, required) Array of webhook events (typically contains a single event) - `events.event` (string, required) The type of webhook event Enum: "CARRIER_ACTIVATED", "CARRIER_CONTACT_CREATED", "CARRIER_CONTACT_UPDATED", "CARRIER_CONTACT_DELETED", "CARRIER_CREATED", "CARRIER_DEACTIVATED", "CARRIER_DELETED", "CARRIER_FACTOR_CREATED", "CARRIER_FACTOR_UPDATED", "CARRIER_FACTOR_DELETED", "CARRIER_INVOICE_CREATED", "CARRIER_PAYMENT_CREATED", "CARRIER_PAYMENT_METHOD_CREATED", "CARRIER_PAYMENT_METHOD_UPDATED", "CARRIER_PAYMENT_METHOD_DELETED", "CARRIER_UPDATED", "COMMISSION_APPROVED", "COMMISSION_CREATED", "COMPANY_CREATED", "COMPANY_UPDATED", "COMPANY_DELETED", "CUSTOMER_CREATED", "CUSTOMER_UPDATED", "CUSTOMER_DELETED", "CUSTOMER_CONTACT_CREATED", "CUSTOMER_CONTACT_UPDATED", "CUSTOMER_CONTACT_DELETED", "CUSTOMER_INVOICE_CREATED", "CUSTOMER_PAYMENT_CREATED", "DOCUMENT_UPLOADED", "QUOTE_CREATED", "QUOTE_LOST", "QUOTE_QUOTED", "QUOTE_REQUESTED", "QUOTE_WON", "SHIPMENT_BOOKED", "SHIPMENT_CANCELED", "SHIPMENT_CHECK_CALL", "SHIPMENT_CREATED", "SHIPMENT_DELETED", "SHIPMENT_DELIVERED", "SHIPMENT_DISPATCHED", "SHIPMENT_DRAFT", "SHIPMENT_IN_TRANSIT", "SHIPMENT_LOADING", "SHIPMENT_NEXT_CHECK_CALL_DUE", "SHIPMENT_NEXT_CHECK_CALL_OVERDUE", "SHIPMENT_OPEN", "SHIPMENT_PICK_UP_NEAR_NOT_BOOKED", "SHIPMENT_PICK_UP_NEAR_NOT_DISPATCHED", "SHIPMENT_RATE_CON_EXPIRED", "SHIPMENT_RATE_CON_NOT_SIGNED", "SHIPMENT_RATE_CON_SIGNED", "SHIPMENT_TENDER_PENDING", "SHIPMENT_TENDER_REJECTED", "SHIPMENT_UNLOADING", "VENDOR_CREATED", "VENDOR_UPDATED", "VENDOR_DELETED", "VENDOR_CONTACT_CREATED", "VENDOR_CONTACT_UPDATED", "VENDOR_CONTACT_DELETED", "VENDOR_INVOICE_CREATED", "VENDOR_PAYMENT_CREATED", "VENDOR_PAYMENT_METHOD_CREATED", "VENDOR_PAYMENT_METHOD_UPDATED", "VENDOR_PAYMENT_METHOD_DELETED", "LOCATION_CREATED", "LOCATION_UPDATED", "LOCATION_DELETED", "LOCATION_CONTACT_CREATED", "LOCATION_CONTACT_UPDATED", "LOCATION_CONTACT_DELETED" - `events.timestamp` (string, required) ISO 8601 timestamp when the event occurred Example: "2025-01-15T14:30:00Z" - `events.data` (object, required) Event-specific data. Structure varies by event type. - `events.diff` (array,null) Array of changes made during an UPDATE operation using json-diff-ts. Only present for UPDATE events. Null for CREATE and DELETE events. Each change follows the IChange interface from json-diff-ts library. - `events.diff.type` (string, required) The type of diff operation from json-diff-ts Enum: "REMOVE", "ADD", "UPDATE" - `events.diff.key` (string, required) The property name that changed Example: "status" - `events.diff.embeddedKey` (string) Optional key used when comparing array elements by identifier Example: "id" - `events.diff.value` (any) The new value being set. - For ADD: The value being added - For UPDATE: The new value replacing the old one - For REMOVE: Not present Example: "INACTIVE" - `events.diff.oldValue` (any) The previous value (only present for UPDATE operations). Example: "ACTIVE" - `events.diff.changes` (array) Nested changes for complex objects ## Response 200 fields ## Response 401 fields