{"templateId":"markdown","versions":[{"version":"v1","label":"v1","link":"/developer-resources/ingrid-api/v1/webhooks/events","default":true,"active":false,"folderId":"570314d1"},{"version":"v1.preview","label":"v1.preview","link":"/developer-resources/ingrid-api/v1.preview/webhooks/events","default":false,"active":true,"folderId":"570314d1"}],"sharedDataIds":{"sidebar":"sidebar-developer-resources/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["json-schema"]},"type":"markdown"},"seo":{"title":"Webhook events catalog"},"dynamicMarkdocComponents":["openapi"],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"webhook-events-catalog","__idx":0},"children":["Webhook events catalog"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Two fields describe a delivery:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type"]}," identifies the payload family returned in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["triggeringEvent"]}," identifies the public business event that caused the webhook"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["triggerName"]}," is related but distinct: it identifies the configured trigger"," ","scenario that matched and caused the delivery. Multiple configured triggers may"," ","produce deliveries for the same ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["triggeringEvent"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"public-events-catalog","__idx":1},"children":["Public events catalog"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The following public events are currently supported for webhook deliveries."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"order-events","__idx":2},"children":["Order events"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Event"},"children":["Event"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Meaning"},"children":["Meaning"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["order.confirmed.v1"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Published when an order is confirmed."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["order.withdrawal_submitted.v1"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Published when a withdrawal of one or more order items is submitted by the customer."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"parcel-events","__idx":3},"children":["Parcel events"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Event"},"children":["Event"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Meaning"},"children":["Meaning"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["parcel.prepared_by_merchant.v1"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Published when parcel progress changes to Prepared by Merchant."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["parcel.submitted_to_carrier.v1"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Published when parcel progress changes to Submitted to Carrier."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["parcel.delivered_to_pickup_point.v1"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Published when parcel progress changes to Delivered to Pickup Point."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["parcel.delivered_to_consumer.v1"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Published when parcel progress changes to Delivered to Consumer."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["parcel.terminated.v1"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Published when parcel progress changes to Terminated because delivery can no longer be completed."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["parcel.sent_back.v1"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Published when parcel progress changes to Sent Back and the parcel is returning to the sender."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["parcel.on_route.v1"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Published when parcel progress changes to On Route."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["parcel.out_for_delivery.v1"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Published when the carrier marks the parcel as out for final-mile delivery."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["parcel.delivery_attempt_failed.v1"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Published when a delivery attempt fails."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["parcel.delivery_delayed.v1"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Published when the carrier reports that delivery is delayed."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["parcel.estimated_delivery_time_updated.v1"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Published when the parcel ETA is updated."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["parcel.estimated_delivery_time_exceeded.v1"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Published when the current parcel ETA is exceeded."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"payload-families","__idx":4},"children":["Payload families"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"ecom_order","__idx":5},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ECOM_ORDER"]}]},{"$$mdtype":"Tag","name":"JsonSchema","attributes":{"schema":{"$ref":"../openapi.yaml#/components/schemas/Webhooks.EcomOrderEvent"},"options":{},"schemaResolved":{"openapi":"3.1.0","components":{"schemas":{"__root":{"$ref":"#/components/schemas/Webhooks.EcomOrderEvent"},"Webhooks.BaseEvent":{"type":"object","description":"Common webhook delivery fields","required":["id","createdAt","triggerName","triggeringEvent"],"properties":{"id":{"type":"string","description":"Unique delivery identifier. Use this for idempotency and deduplication."},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the webhook delivery was created."},"triggerName":{"type":"string","description":"Name of the configured trigger that generated the delivery."},"triggeringEvent":{"type":"string","description":"Public business event that caused the webhook delivery."}}},"Webhooks.OrderPublicEventType":{"type":"string","description":"Event type that caused the webhook.","oneOf":[{"const":"order.confirmed.v1","description":"Published when an order is confirmed."},{"const":"order.withdrawal_submitted.v1","description":"Published when a withdrawal of one or more order items is submitted by the customer."}]},"Webhooks.EcomOrderMeta":{"type":"object","description":"E-commerce order metadata with counts and versioning","required":["version","fulfillments_count","parcels_count"],"properties":{"version":{"type":"integer","format":"int64","description":"E-commerce order version number"},"fulfillments_count":{"type":"integer","format":"int32","description":"Number of fulfillments"},"parcels_count":{"type":"integer","format":"int32","description":"Number of parcels"}}},"Webhooks.DisplayAttribute":{"type":"object","description":"Display-oriented key/value attribute for a cart item","required":["key","value"],"properties":{"key":{"type":"string","description":"Stable identifier for the attribute"},"value":{"type":"string","description":"Displayable value"},"label":{"type":"string","description":"Human-readable label"}}},"Webhooks.CartItem":{"type":"object","description":"Individual item in a shopping cart","properties":{"sku":{"type":"string","description":"Stock Keeping Unit identifier"},"name":{"type":"string","description":"Product name or title"},"quantity":{"type":"integer","format":"int32","minimum":0,"description":"Number of non-cancelled items"},"price":{"type":"integer","format":"int32","description":"Price per item with discounts applied in cents"},"discount":{"type":"integer","format":"int32","description":"Discount per item in cents"},"total_price":{"type":"integer","format":"int32","description":"Total price for all non-cancelled items in cents"},"image":{"type":"string","format":"uri","description":"URL of the product image"},"cancelled_quantity":{"type":"integer","format":"int32","minimum":0,"description":"Number of cancelled items"},"cancelled_total_price":{"type":"integer","format":"int32","description":"Total price for cancelled items in cents"},"attributes":{"type":"object","additionalProperties":{"type":"string"},"description":"Additional item properties as key-value pairs"},"display_attributes":{"type":"array","items":{"$ref":"#/components/schemas/Webhooks.DisplayAttribute"},"description":"Display-oriented attributes for the item (key/value/label)"}}},"Webhooks.Cart":{"type":"object","description":"Shopping cart with items and pricing","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Webhooks.CartItem"},"description":"List of items in the cart"},"order_discount":{"type":"integer","format":"int32","description":"Order discount in cents"},"shipping_price":{"type":"integer","format":"int32","description":"Shipping price in cents"},"currency":{"type":"string","pattern":"^[A-Z]{3}$","description":"Currency code (ISO-4217)"},"total_discount":{"type":"integer","format":"int32","description":"Total discount amount in cents"},"tax":{"type":"integer","format":"int32","description":"Tax amount in cents"},"subtotal":{"type":"integer","format":"int32","description":"Subtotal before additional charges in cents"},"grand_total":{"type":"integer","format":"int32","description":"Final amount to pay in cents"},"attributes":{"type":"array","items":{"type":"string"},"description":"Custom attributes for the cart"}}},"Webhooks.PaymentEntry":{"type":"object","description":"Individual payment entry with method and amount","required":["method","amount","currency"],"properties":{"method":{"type":"string","description":"Payment method used"},"amount":{"type":"integer","format":"int32","description":"Payment amount in cents"},"currency":{"type":"string","pattern":"^[A-Z]{3}$","description":"Currency code (ISO-4217)"},"attributes":{"type":"object","additionalProperties":true,"description":"Additional payment attributes"},"timestamp":{"type":"string","format":"date-time","description":"Payment timestamp"}}},"Webhooks.PaymentStatus":{"type":"string","description":"Status of payment transaction","enum":["SUCCESS","FAILURE"]},"Webhooks.Payment":{"type":"object","description":"Payment information with entries and status","required":["status"],"properties":{"entries":{"type":"array","items":{"$ref":"#/components/schemas/Webhooks.PaymentEntry"},"description":"List of payment entries"},"status":{"$ref":"#/components/schemas/Webhooks.PaymentStatus"}}},"Webhooks.Coordinates":{"type":"object","description":"Geographical coordinates","required":["lat","lng"],"properties":{"lat":{"type":"number","format":"double","minimum":-90,"maximum":90,"description":"Latitude"},"lng":{"type":"number","format":"double","minimum":-180,"maximum":180,"description":"Longitude"}}},"Webhooks.Address":{"type":"object","description":"Complete address information with geolocation","properties":{"name":{"type":"string","description":"Customer or company name"},"care_of":{"type":"string","description":"Care of part of address (c/o)"},"attn":{"type":"string","description":"Attention field for company addresses"},"address_lines":{"type":"array","items":{"type":"string"},"description":"Address lines including street and building number"},"city":{"type":"string","description":"City name"},"region":{"type":"string","description":"State or province"},"postal_code":{"type":"string","description":"Postal code or zipcode"},"country":{"type":"string","pattern":"^[A-Z]{2}$","description":"Country code (ISO Alpha-2)"},"coordinates":{"$ref":"#/components/schemas/Webhooks.Coordinates"},"door_code":{"type":"string","description":"Door code for building entrance"},"street":{"type":"string","description":"Street name"},"street_number":{"type":"string","description":"Street number"},"apartment_number":{"type":"string","description":"Apartment number"},"floor_number":{"type":"string","description":"Floor number"},"subregion":{"type":"string","description":"County or other subdivision"},"building_name":{"type":"string","description":"Building name (for UK addresses without numbers)"},"po_box_id":{"type":"string","description":"PO Box identifier"}}},"Webhooks.CancellingParty":{"type":"string","description":"Party that cancelled the order","enum":["UNKNOWN","MERCHANT","CUSTOMER"]},"Webhooks.EcomOrderData":{"type":"object","description":"Core e-commerce order data without fulfillments and parcels arrays","required":["id","tos_id","created_at","meta"],"properties":{"meta":{"$ref":"#/components/schemas/Webhooks.EcomOrderMeta"},"tos_id":{"type":"string","description":"TOS identifier"},"id":{"type":"string","description":"External order ID"},"created_at":{"type":"string","format":"date-time","description":"Order creation timestamp"},"cart":{"$ref":"#/components/schemas/Webhooks.Cart"},"payment":{"$ref":"#/components/schemas/Webhooks.Payment"},"locale":{"type":"string","description":"Order locale"},"attributes":{"type":"object","additionalProperties":true,"description":"Additional order attributes"},"billing_address":{"$ref":"#/components/schemas/Webhooks.Address"},"tracking_link":{"type":"string","format":"uri","description":"Order tracking link"},"is_cancelled":{"type":"boolean","description":"Indicates if the order has been cancelled"},"is_estimated_preparation_time_exceeded":{"type":"boolean","description":"Indicates if the estimated preparation time has been exceeded"},"cancelled_by":{"$ref":"#/components/schemas/Webhooks.CancellingParty"}}},"Webhooks.ContactInfo":{"type":"object","description":"Contact details including address, phone, and email","properties":{"address":{"$ref":"#/components/schemas/Webhooks.Address"},"phone":{"type":"string","description":"Phone number"},"email":{"type":"string","format":"email","description":"Email address"},"name":{"type":"string","description":"Full name"}}},"Webhooks.Receiver":{"type":"object","description":"Buyer information with contact and billing details","required":["contact_info","billing"],"properties":{"contact_info":{"$ref":"#/components/schemas/Webhooks.ContactInfo"},"billing":{"$ref":"#/components/schemas/Webhooks.ContactInfo"}}},"Webhooks.ShippingPickupLocationType":{"type":"string","description":"Type of pickup location for shipping","enum":["UNKNOWN","LOCKER","STORE","POSTOFFICE","MANNED"]},"Webhooks.OperationalHours":{"type":"object","description":"Weekly operational hours for each day","properties":{"mon":{"type":"string","description":"Monday operational hours"},"tue":{"type":"string","description":"Tuesday operational hours"},"wed":{"type":"string","description":"Wednesday operational hours"},"thu":{"type":"string","description":"Thursday operational hours"},"fri":{"type":"string","description":"Friday operational hours"},"sat":{"type":"string","description":"Saturday operational hours"},"sun":{"type":"string","description":"Sunday operational hours"},"free_text":{"type":"array","items":{"type":"string"},"description":"Free text operational hours as fallback"}}},"Webhooks.PickupPointDetails":{"type":"object","description":"Details about pickup point location","properties":{"location_ref":{"type":"string","description":"Reference identifier for the location"},"location_type":{"$ref":"#/components/schemas/Webhooks.ShippingPickupLocationType"},"operational_hours":{"$ref":"#/components/schemas/Webhooks.OperationalHours"}}},"Webhooks.Location":{"type":"object","description":"Location information with address and pickup details","properties":{"address":{"$ref":"#/components/schemas/Webhooks.Address"},"courier_instructions":{"type":"string","description":"Special instructions for courier"},"pickup_point_details":{"$ref":"#/components/schemas/Webhooks.PickupPointDetails"}}},"Webhooks.CarrierInfo":{"type":"object","description":"Information about shipping carrier","properties":{"carrier_name":{"type":"string","description":"Name of the carrier company"},"carrier_product_id":{"type":"string","description":"Carrier's product identifier"},"carrier_product_ref":{"type":"string","description":"Carrier's product reference"},"carrier_logo_pattern":{"type":"string","description":"Pattern for carrier logo URL"}}},"Webhooks.DateTimeRange":{"type":"object","description":"Time range with start and end timestamps","properties":{"start":{"type":"string","format":"date-time","description":"Start time of the range"},"end":{"type":"string","format":"date-time","description":"End time of the range"}}},"Webhooks.DeliveryPromise":{"type":"object","description":"Delivery time promises and ranges","properties":{"pickup_from_merchant":{"$ref":"#/components/schemas/Webhooks.DateTimeRange"},"customer_delivery_promise":{"$ref":"#/components/schemas/Webhooks.DateTimeRange"},"carrier_delivery_promise":{"$ref":"#/components/schemas/Webhooks.DateTimeRange"}}},"Webhooks.Shipping":{"type":"object","description":"Shipping information including carrier and delivery promise","properties":{"carrier_info":{"$ref":"#/components/schemas/Webhooks.CarrierInfo"},"delivery_promise":{"$ref":"#/components/schemas/Webhooks.DeliveryPromise"}}},"Webhooks.DeliveryType":{"type":"string","description":"Type of delivery method","enum":["UNKNOWN","DELIVERY","PICKUP","MAILBOX","INSTORE","INWAREHOUSE"]},"Webhooks.TrackingStep":{"type":"string","description":"Current step in the tracking process","enum":["STEP_UNKNOWN","STEP_CONFIRMED_BY_MERCHANT","STEP_PREPARED_BY_MERCHANT","STEP_SUBMITTED_TO_CARRIER","STEP_ON_ROUTE","STEP_DELIVERED_TO_PICKUP_POINT","STEP_DELIVERED_TO_CONSUMER","STEP_TERMINATED","STEP_SENT_BACK","STEP_RETURN_REQUESTED","STEP_DELIVERED_TO_MERCHANT","STEP_AWAITING_SUPPLIER","STEP_LINEHAUL_TO_CARRIER"]},"Webhooks.Fulfillment":{"type":"object","description":"Order fulfillment with shipping and delivery details","required":["tos_id","sender","receiver","destination","delivery_type","current_step"],"properties":{"attributes":{"type":"object","additionalProperties":true,"description":"Additional fulfillment attributes"},"tos_id":{"type":"string","description":"TOS identifier"},"sender":{"$ref":"#/components/schemas/Webhooks.ContactInfo"},"receiver":{"$ref":"#/components/schemas/Webhooks.Receiver"},"destination":{"$ref":"#/components/schemas/Webhooks.Location"},"shipping":{"$ref":"#/components/schemas/Webhooks.Shipping"},"items":{"type":"array","items":{"$ref":"#/components/schemas/Webhooks.CartItem"},"description":"Items in this fulfillment"},"shipping_method":{"type":"string","description":"Shipping method name"},"delivery_type":{"$ref":"#/components/schemas/Webhooks.DeliveryType"},"current_step":{"$ref":"#/components/schemas/Webhooks.TrackingStep"},"is_submission_time_exceeded":{"type":"boolean","description":"Indicates if the submission time has been exceeded"},"is_cancelled":{"type":"boolean","description":"Indicates if the fulfillment has been cancelled"},"is_delivery_time_exceeded":{"type":"boolean","description":"Indicates if the delivery time has been exceeded"}}},"Webhooks.RefusalReason":{"type":"string","description":"Reason for parcel refusal","enum":["UNKNOWN","NO_REASON","NOT_ORDERED","GOODS_DAMAGED","PACKAGING_DAMAGED"]},"Webhooks.ParcelData":{"type":"object","description":"Core parcel data without associated order","required":["tos_id","tracking_number"],"properties":{"tos_id":{"type":"string","description":"TOS identifier"},"carrier_info":{"$ref":"#/components/schemas/Webhooks.CarrierInfo"},"delivery_promise":{"$ref":"#/components/schemas/Webhooks.DeliveryPromise"},"delivery_type":{"$ref":"#/components/schemas/Webhooks.DeliveryType"},"sender_address":{"$ref":"#/components/schemas/Webhooks.Address"},"sender_name":{"type":"string","description":"Sender name"},"customer":{"$ref":"#/components/schemas/Webhooks.ContactInfo"},"destination":{"$ref":"#/components/schemas/Webhooks.Location"},"tracking_number":{"type":"string","description":"Parcel tracking number"},"tracking_link":{"type":"string","format":"uri","description":"Parcel tracking link"},"items":{"type":"array","items":{"$ref":"#/components/schemas/Webhooks.CartItem"},"description":"List of items in the parcel"},"current_step":{"$ref":"#/components/schemas/Webhooks.TrackingStep"},"attributes":{"type":"object","additionalProperties":true,"description":"Additional parcel attributes"},"is_estimated_delivery_time_exceeded":{"type":"boolean","description":"Indicates if the estimated delivery time has been exceeded"},"is_delayed":{"type":"boolean","description":"Indicates if the delivery is delayed"},"is_out_for_delivery":{"type":"boolean","description":"Indicates if the parcel is out for delivery"},"out_for_delivery_at":{"type":"string","format":"date-time","description":"Timestamp when the parcel was marked as out for delivery"},"failed_delivery_attempts_count":{"type":"integer","format":"int32","description":"Number of failed delivery attempts"},"last_failed_delivery_attempt_at":{"type":"string","format":"date-time","description":"Timestamp of the last failed delivery attempt"},"is_refused":{"type":"boolean","description":"Indicates if the parcel was refused by the recipient"},"refusal_reason":{"$ref":"#/components/schemas/Webhooks.RefusalReason"},"is_overdue":{"type":"boolean","description":"When true, parcel is confirmed overdue for pickup. False doesn't guarantee it's not overdue."}}},"Webhooks.EcomOrder":{"type":"object","description":"Complete e-commerce order model with fulfillments and parcels","allOf":[{"$ref":"#/components/schemas/Webhooks.EcomOrderData"},{"type":"object","properties":{"fulfillments":{"type":"array","items":{"$ref":"#/components/schemas/Webhooks.Fulfillment"}},"parcels":{"type":"array","items":{"$ref":"#/components/schemas/Webhooks.ParcelData"}}}}]},"Webhooks.EcomOrderEvent":{"type":"object","description":"Webhook delivery containing the e-commerce order payload model.","allOf":[{"$ref":"#/components/schemas/Webhooks.BaseEvent"},{"type":"object","description":"Webhook delivery where `data` uses the `EcomOrder` schema.","required":["type","triggeringEvent","data"],"properties":{"type":{"type":"string","enum":["ECOM_ORDER"],"description":"Payload model type for the `data` object."},"triggeringEvent":{"$ref":"#/components/schemas/Webhooks.OrderPublicEventType"},"data":{"$ref":"#/components/schemas/Webhooks.EcomOrder"}}}]}}}},"schemaResolvedErrors":[]},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"parcel","__idx":6},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PARCEL"]}]},{"$$mdtype":"Tag","name":"JsonSchema","attributes":{"schema":{"$ref":"../openapi.yaml#/components/schemas/Webhooks.ParcelEvent"},"options":{},"schemaResolved":{"openapi":"3.1.0","components":{"schemas":{"__root":{"$ref":"#/components/schemas/Webhooks.ParcelEvent"},"Webhooks.BaseEvent":{"type":"object","description":"Common webhook delivery fields","required":["id","createdAt","triggerName","triggeringEvent"],"properties":{"id":{"type":"string","description":"Unique delivery identifier. Use this for idempotency and deduplication."},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the webhook delivery was created."},"triggerName":{"type":"string","description":"Name of the configured trigger that generated the delivery."},"triggeringEvent":{"type":"string","description":"Public business event that caused the webhook delivery."}}},"Webhooks.ParcelPublicEventType":{"type":"string","description":"Event type that caused the webhook.","oneOf":[{"const":"parcel.prepared_by_merchant.v1","description":"Published when parcel progress changes to Prepared by Merchant."},{"const":"parcel.submitted_to_carrier.v1","description":"Published when parcel progress changes to Submitted to Carrier."},{"const":"parcel.delivered_to_pickup_point.v1","description":"Published when parcel progress changes to Delivered to Pickup Point."},{"const":"parcel.delivered_to_consumer.v1","description":"Published when parcel progress changes to Delivered to Consumer."},{"const":"parcel.terminated.v1","description":"Published when parcel progress changes to Terminated because delivery can no longer be completed."},{"const":"parcel.sent_back.v1","description":"Published when parcel progress changes to Sent Back and the parcel is returning to the sender."},{"const":"parcel.on_route.v1","description":"Published when parcel progress changes to On Route."},{"const":"parcel.out_for_delivery.v1","description":"Published when the carrier marks the parcel as out for final-mile delivery."},{"const":"parcel.delivery_attempt_failed.v1","description":"Published when a delivery attempt fails."},{"const":"parcel.delivery_delayed.v1","description":"Published when the carrier reports that delivery is delayed."},{"const":"parcel.estimated_delivery_time_updated.v1","description":"Published when the parcel ETA is updated."},{"const":"parcel.estimated_delivery_time_exceeded.v1","description":"Published when the current parcel ETA is exceeded."}]},"Webhooks.CarrierInfo":{"type":"object","description":"Information about shipping carrier","properties":{"carrier_name":{"type":"string","description":"Name of the carrier company"},"carrier_product_id":{"type":"string","description":"Carrier's product identifier"},"carrier_product_ref":{"type":"string","description":"Carrier's product reference"},"carrier_logo_pattern":{"type":"string","description":"Pattern for carrier logo URL"}}},"Webhooks.DateTimeRange":{"type":"object","description":"Time range with start and end timestamps","properties":{"start":{"type":"string","format":"date-time","description":"Start time of the range"},"end":{"type":"string","format":"date-time","description":"End time of the range"}}},"Webhooks.DeliveryPromise":{"type":"object","description":"Delivery time promises and ranges","properties":{"pickup_from_merchant":{"$ref":"#/components/schemas/Webhooks.DateTimeRange"},"customer_delivery_promise":{"$ref":"#/components/schemas/Webhooks.DateTimeRange"},"carrier_delivery_promise":{"$ref":"#/components/schemas/Webhooks.DateTimeRange"}}},"Webhooks.DeliveryType":{"type":"string","description":"Type of delivery method","enum":["UNKNOWN","DELIVERY","PICKUP","MAILBOX","INSTORE","INWAREHOUSE"]},"Webhooks.Coordinates":{"type":"object","description":"Geographical coordinates","required":["lat","lng"],"properties":{"lat":{"type":"number","format":"double","minimum":-90,"maximum":90,"description":"Latitude"},"lng":{"type":"number","format":"double","minimum":-180,"maximum":180,"description":"Longitude"}}},"Webhooks.Address":{"type":"object","description":"Complete address information with geolocation","properties":{"name":{"type":"string","description":"Customer or company name"},"care_of":{"type":"string","description":"Care of part of address (c/o)"},"attn":{"type":"string","description":"Attention field for company addresses"},"address_lines":{"type":"array","items":{"type":"string"},"description":"Address lines including street and building number"},"city":{"type":"string","description":"City name"},"region":{"type":"string","description":"State or province"},"postal_code":{"type":"string","description":"Postal code or zipcode"},"country":{"type":"string","pattern":"^[A-Z]{2}$","description":"Country code (ISO Alpha-2)"},"coordinates":{"$ref":"#/components/schemas/Webhooks.Coordinates"},"door_code":{"type":"string","description":"Door code for building entrance"},"street":{"type":"string","description":"Street name"},"street_number":{"type":"string","description":"Street number"},"apartment_number":{"type":"string","description":"Apartment number"},"floor_number":{"type":"string","description":"Floor number"},"subregion":{"type":"string","description":"County or other subdivision"},"building_name":{"type":"string","description":"Building name (for UK addresses without numbers)"},"po_box_id":{"type":"string","description":"PO Box identifier"}}},"Webhooks.ContactInfo":{"type":"object","description":"Contact details including address, phone, and email","properties":{"address":{"$ref":"#/components/schemas/Webhooks.Address"},"phone":{"type":"string","description":"Phone number"},"email":{"type":"string","format":"email","description":"Email address"},"name":{"type":"string","description":"Full name"}}},"Webhooks.ShippingPickupLocationType":{"type":"string","description":"Type of pickup location for shipping","enum":["UNKNOWN","LOCKER","STORE","POSTOFFICE","MANNED"]},"Webhooks.OperationalHours":{"type":"object","description":"Weekly operational hours for each day","properties":{"mon":{"type":"string","description":"Monday operational hours"},"tue":{"type":"string","description":"Tuesday operational hours"},"wed":{"type":"string","description":"Wednesday operational hours"},"thu":{"type":"string","description":"Thursday operational hours"},"fri":{"type":"string","description":"Friday operational hours"},"sat":{"type":"string","description":"Saturday operational hours"},"sun":{"type":"string","description":"Sunday operational hours"},"free_text":{"type":"array","items":{"type":"string"},"description":"Free text operational hours as fallback"}}},"Webhooks.PickupPointDetails":{"type":"object","description":"Details about pickup point location","properties":{"location_ref":{"type":"string","description":"Reference identifier for the location"},"location_type":{"$ref":"#/components/schemas/Webhooks.ShippingPickupLocationType"},"operational_hours":{"$ref":"#/components/schemas/Webhooks.OperationalHours"}}},"Webhooks.Location":{"type":"object","description":"Location information with address and pickup details","properties":{"address":{"$ref":"#/components/schemas/Webhooks.Address"},"courier_instructions":{"type":"string","description":"Special instructions for courier"},"pickup_point_details":{"$ref":"#/components/schemas/Webhooks.PickupPointDetails"}}},"Webhooks.DisplayAttribute":{"type":"object","description":"Display-oriented key/value attribute for a cart item","required":["key","value"],"properties":{"key":{"type":"string","description":"Stable identifier for the attribute"},"value":{"type":"string","description":"Displayable value"},"label":{"type":"string","description":"Human-readable label"}}},"Webhooks.CartItem":{"type":"object","description":"Individual item in a shopping cart","properties":{"sku":{"type":"string","description":"Stock Keeping Unit identifier"},"name":{"type":"string","description":"Product name or title"},"quantity":{"type":"integer","format":"int32","minimum":0,"description":"Number of non-cancelled items"},"price":{"type":"integer","format":"int32","description":"Price per item with discounts applied in cents"},"discount":{"type":"integer","format":"int32","description":"Discount per item in cents"},"total_price":{"type":"integer","format":"int32","description":"Total price for all non-cancelled items in cents"},"image":{"type":"string","format":"uri","description":"URL of the product image"},"cancelled_quantity":{"type":"integer","format":"int32","minimum":0,"description":"Number of cancelled items"},"cancelled_total_price":{"type":"integer","format":"int32","description":"Total price for cancelled items in cents"},"attributes":{"type":"object","additionalProperties":{"type":"string"},"description":"Additional item properties as key-value pairs"},"display_attributes":{"type":"array","items":{"$ref":"#/components/schemas/Webhooks.DisplayAttribute"},"description":"Display-oriented attributes for the item (key/value/label)"}}},"Webhooks.TrackingStep":{"type":"string","description":"Current step in the tracking process","enum":["STEP_UNKNOWN","STEP_CONFIRMED_BY_MERCHANT","STEP_PREPARED_BY_MERCHANT","STEP_SUBMITTED_TO_CARRIER","STEP_ON_ROUTE","STEP_DELIVERED_TO_PICKUP_POINT","STEP_DELIVERED_TO_CONSUMER","STEP_TERMINATED","STEP_SENT_BACK","STEP_RETURN_REQUESTED","STEP_DELIVERED_TO_MERCHANT","STEP_AWAITING_SUPPLIER","STEP_LINEHAUL_TO_CARRIER"]},"Webhooks.RefusalReason":{"type":"string","description":"Reason for parcel refusal","enum":["UNKNOWN","NO_REASON","NOT_ORDERED","GOODS_DAMAGED","PACKAGING_DAMAGED"]},"Webhooks.ParcelData":{"type":"object","description":"Core parcel data without associated order","required":["tos_id","tracking_number"],"properties":{"tos_id":{"type":"string","description":"TOS identifier"},"carrier_info":{"$ref":"#/components/schemas/Webhooks.CarrierInfo"},"delivery_promise":{"$ref":"#/components/schemas/Webhooks.DeliveryPromise"},"delivery_type":{"$ref":"#/components/schemas/Webhooks.DeliveryType"},"sender_address":{"$ref":"#/components/schemas/Webhooks.Address"},"sender_name":{"type":"string","description":"Sender name"},"customer":{"$ref":"#/components/schemas/Webhooks.ContactInfo"},"destination":{"$ref":"#/components/schemas/Webhooks.Location"},"tracking_number":{"type":"string","description":"Parcel tracking number"},"tracking_link":{"type":"string","format":"uri","description":"Parcel tracking link"},"items":{"type":"array","items":{"$ref":"#/components/schemas/Webhooks.CartItem"},"description":"List of items in the parcel"},"current_step":{"$ref":"#/components/schemas/Webhooks.TrackingStep"},"attributes":{"type":"object","additionalProperties":true,"description":"Additional parcel attributes"},"is_estimated_delivery_time_exceeded":{"type":"boolean","description":"Indicates if the estimated delivery time has been exceeded"},"is_delayed":{"type":"boolean","description":"Indicates if the delivery is delayed"},"is_out_for_delivery":{"type":"boolean","description":"Indicates if the parcel is out for delivery"},"out_for_delivery_at":{"type":"string","format":"date-time","description":"Timestamp when the parcel was marked as out for delivery"},"failed_delivery_attempts_count":{"type":"integer","format":"int32","description":"Number of failed delivery attempts"},"last_failed_delivery_attempt_at":{"type":"string","format":"date-time","description":"Timestamp of the last failed delivery attempt"},"is_refused":{"type":"boolean","description":"Indicates if the parcel was refused by the recipient"},"refusal_reason":{"$ref":"#/components/schemas/Webhooks.RefusalReason"},"is_overdue":{"type":"boolean","description":"When true, parcel is confirmed overdue for pickup. False doesn't guarantee it's not overdue."}}},"Webhooks.EcomOrderMeta":{"type":"object","description":"E-commerce order metadata with counts and versioning","required":["version","fulfillments_count","parcels_count"],"properties":{"version":{"type":"integer","format":"int64","description":"E-commerce order version number"},"fulfillments_count":{"type":"integer","format":"int32","description":"Number of fulfillments"},"parcels_count":{"type":"integer","format":"int32","description":"Number of parcels"}}},"Webhooks.Cart":{"type":"object","description":"Shopping cart with items and pricing","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Webhooks.CartItem"},"description":"List of items in the cart"},"order_discount":{"type":"integer","format":"int32","description":"Order discount in cents"},"shipping_price":{"type":"integer","format":"int32","description":"Shipping price in cents"},"currency":{"type":"string","pattern":"^[A-Z]{3}$","description":"Currency code (ISO-4217)"},"total_discount":{"type":"integer","format":"int32","description":"Total discount amount in cents"},"tax":{"type":"integer","format":"int32","description":"Tax amount in cents"},"subtotal":{"type":"integer","format":"int32","description":"Subtotal before additional charges in cents"},"grand_total":{"type":"integer","format":"int32","description":"Final amount to pay in cents"},"attributes":{"type":"array","items":{"type":"string"},"description":"Custom attributes for the cart"}}},"Webhooks.PaymentEntry":{"type":"object","description":"Individual payment entry with method and amount","required":["method","amount","currency"],"properties":{"method":{"type":"string","description":"Payment method used"},"amount":{"type":"integer","format":"int32","description":"Payment amount in cents"},"currency":{"type":"string","pattern":"^[A-Z]{3}$","description":"Currency code (ISO-4217)"},"attributes":{"type":"object","additionalProperties":true,"description":"Additional payment attributes"},"timestamp":{"type":"string","format":"date-time","description":"Payment timestamp"}}},"Webhooks.PaymentStatus":{"type":"string","description":"Status of payment transaction","enum":["SUCCESS","FAILURE"]},"Webhooks.Payment":{"type":"object","description":"Payment information with entries and status","required":["status"],"properties":{"entries":{"type":"array","items":{"$ref":"#/components/schemas/Webhooks.PaymentEntry"},"description":"List of payment entries"},"status":{"$ref":"#/components/schemas/Webhooks.PaymentStatus"}}},"Webhooks.CancellingParty":{"type":"string","description":"Party that cancelled the order","enum":["UNKNOWN","MERCHANT","CUSTOMER"]},"Webhooks.EcomOrderData":{"type":"object","description":"Core e-commerce order data without fulfillments and parcels arrays","required":["id","tos_id","created_at","meta"],"properties":{"meta":{"$ref":"#/components/schemas/Webhooks.EcomOrderMeta"},"tos_id":{"type":"string","description":"TOS identifier"},"id":{"type":"string","description":"External order ID"},"created_at":{"type":"string","format":"date-time","description":"Order creation timestamp"},"cart":{"$ref":"#/components/schemas/Webhooks.Cart"},"payment":{"$ref":"#/components/schemas/Webhooks.Payment"},"locale":{"type":"string","description":"Order locale"},"attributes":{"type":"object","additionalProperties":true,"description":"Additional order attributes"},"billing_address":{"$ref":"#/components/schemas/Webhooks.Address"},"tracking_link":{"type":"string","format":"uri","description":"Order tracking link"},"is_cancelled":{"type":"boolean","description":"Indicates if the order has been cancelled"},"is_estimated_preparation_time_exceeded":{"type":"boolean","description":"Indicates if the estimated preparation time has been exceeded"},"cancelled_by":{"$ref":"#/components/schemas/Webhooks.CancellingParty"}}},"Webhooks.Parcel":{"type":"object","description":"Parcel model with associated order data","required":["tos_id","tracking_number","order"],"allOf":[{"$ref":"#/components/schemas/Webhooks.ParcelData"},{"type":"object","properties":{"order":{"$ref":"#/components/schemas/Webhooks.EcomOrderData"}}}]},"Webhooks.ParcelEvent":{"type":"object","description":"Webhook delivery containing the parcel payload model.","allOf":[{"$ref":"#/components/schemas/Webhooks.BaseEvent"},{"type":"object","description":"Webhook delivery where `data` uses the `Parcel` schema.","required":["type","triggeringEvent","data"],"properties":{"type":{"type":"string","enum":["PARCEL"],"description":"Payload model type for the `data` object."},"triggeringEvent":{"$ref":"#/components/schemas/Webhooks.ParcelPublicEventType"},"data":{"$ref":"#/components/schemas/Webhooks.Parcel"}}}]}}}},"schemaResolvedErrors":[]},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"event-payload-models","__idx":7},"children":["Event payload models"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data"]}," field uses these schemas:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["EcomOrder"]}," for order-level deliveries"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Parcel"]}," for parcel-level deliveries"]}]}]},"headings":[{"value":"Webhook events catalog","id":"webhook-events-catalog","depth":1},{"value":"Public events catalog","id":"public-events-catalog","depth":2},{"value":"Order events","id":"order-events","depth":3},{"value":"Parcel events","id":"parcel-events","depth":3},{"value":"Payload families","id":"payload-families","depth":2},{"value":"ECOM_ORDER","id":"ecom_order","depth":3},{"value":"PARCEL","id":"parcel","depth":3},{"value":"Event payload models","id":"event-payload-models","depth":2}],"frontmatter":{"title":"Webhook Events Catalog","description":"Public order and parcel events that can trigger Ingrid webhook deliveries","seo":{"title":"Webhook events catalog"}},"lastModified":"2026-09-16T11:59:37.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/developer-resources/ingrid-api/v1.preview/webhooks/events","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}