Skip to content

delivery_order/created

Overview

PropertyValue
Webhook typedelivery_order/created
Kafka topicdelivery-order.created
DirectionPlatform → Your endpoint

Description

Fired when a delivery order (also called a fulfillment order) is created. A delivery order groups one or more order lines for fulfillment at a specific warehouse location. A single customer order can generate multiple delivery orders (e.g. lines fulfilled from different locations).

Trigger Conditions

  • The dispatching engine creates a delivery order from one or more order lines
  • An operator manually creates a delivery order via the GraphQL API
  • The fulfillmentType determines whether fulfillment is handled internally (INTERNAL) or by an external warehouse (WAREHOUSE)

Message Envelope

json
{
  "header": {
    "organizationId": "org_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "messageId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "webhookId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "type": "delivery_order/created",
    "date": "2024-03-15T10:30:00.000Z"
  },
  "body": { ... }
}

Body — Property Table

DeliveryOrder Object

FieldTypeNullableDescription
idstring (uuid)NoUnique delivery order identifier
orderIdsstring[] (uuid[])YesIDs of the source orders (one DO can aggregate multiple orders)
locationIdstring (uuid)YesWarehouse/location assigned to fulfill this delivery order
organizationIdstring (uuid)NoOrganization that owns this delivery order
shippingMethodIdstring (uuid)YesAssigned shipping method
shippingMethodNamestringYesHuman-readable shipping method name
collectPointIdstringYesPickup point ID (for PICKUP delivery type)
collectPointCountrystringYesCountry of the pickup point
collectPointZipCodestringYesZIP code of the pickup point
typeenumNoOrder type: B2B or B2C
priorityenumNoPriority: LOW, NORMAL, or HIGH
issuedAtstring (ISO 8601)NoTimestamp when the original order was placed
linesDeliveryOrderLine[]NoArray of delivery order lines (see below)
eventsFulfillmentEvent[]NoArray of fulfillment events (see below)
deliveryAddressDeliveryAddressYesDelivery address (see below)
statusenumNoCurrent status: DRAFT, PENDING, OPENED, or COMPLETED
fulfillmentTypeenumNoFulfillment type: INTERNAL or WAREHOUSE
totalfloatNoTotal amount (tax-exclusive)
totalTaxInclusivefloatNoTotal amount (tax-inclusive)
totalShippingfloatNoShipping cost
totalDiscountfloatYesDiscount amount
totalVatfloatNoVAT amount
totalInsurancefloatYesInsurance amount
currencystringNoISO 4217 currency code, default EUR
invoiceNumberstringNoInvoice reference number
invoiceUrlstringYesURL to the invoice document
orderNumberstringYesHuman-readable order number
giftbooleanYesWhether this is a gift delivery
inventoryPolicyenumNoInventory policy: DENY or CONTINUE, default DENY
createdAtstring (ISO 8601)NoTimestamp when the delivery order was created
prepareAtstring (ISO 8601)YesScheduled preparation date
commentstringYesFree-text comment
metaobjectYesArbitrary metadata (JSON)
incotermsenumYesIncoterms for international shipments: DDP or DAP
virtualbooleanNoWhether this is a virtual delivery order (no physical goods)

DeliveryOrderLine Object

FieldTypeNullableDescription
idstring (uuid)NoUnique line identifier
deliveryOrderIdstring (uuid)NoParent delivery order ID
orderLineIdstring (uuid)YesSource order line ID (if linked)
stockReferenceIdstring (uuid)NoStock reference (SKU) being fulfilled
statusenumNoLine status: NEW, AWAITING_STOCK, PENDING, CANCELED, ACCEPTED, IN_PROGRESS, REJECTED, FULFILLED, PARTIALLY_FULFILLED, DELIVERED, ERRORED
labelstringNoProduct label
skustringNoStock keeping unit
quantityintegerNoOrdered quantity
pricefloatNoUnit price (tax-exclusive)
vatRatefloatNoVAT rate as decimal
totalfloatNoLine total (tax-exclusive)
totalTaxInclusivefloatNoLine total (tax-inclusive)
metaobjectYesArbitrary metadata (JSON)
fulfilledQuantityintegerNoQuantity already fulfilled, default 0

FulfillmentEvent Object

FieldTypeNullableDescription
idstring (uuid)NoUnique event identifier
deliveryOrderIdstring (uuid)NoParent delivery order ID
typeenumNoEvent type: FULFILLMENT_ACCEPTED, FULFILLMENT_REJECTED, INTEGRATED, INTEGRATION_ERROR, INSUFFICIENT_STOCK, FULFILLMENT_IN_PROGRESS, PACKED, SHIPPED, CANCELED, CANCEL_REJECTED, HOLDED, RESUMED, COMPLETED, FULFILLMENT_REQUESTED, UPDATED, UPDATE_REJECTED, UNPROCESSABLE
levelenumNoSeverity: NORMAL, WARNING, or ERROR
messagestringYesHuman-readable event description
datestring (ISO 8601)NoWhen this event occurred

DeliveryAddress Object

FieldTypeNullableDescription
idstring (uuid)NoUnique address identifier
typeenumNoContact type: PERSON or COMPANY
deliveryOrderIdstring (uuid)NoParent delivery order ID
fullnamestringYesFull name
emailstringNoEmail address
addressstringYesStreet address line 1
addressComplementstringYesStreet address line 2
zipcodestringYesPostal/ZIP code
countrystringYesISO 3166-1 alpha-2 country code
citystringYesCity name
statestringYesState/region
phonestringYesPhone number
commentsstringYesFree-text comment
metadataobjectYesArbitrary metadata (JSON)
taxIdstringYesTax identifier
eoristringYesEORI number
formstringYesLegal form
capitalstringYesShare capital
companyIdstringYesCompany registration number
registrationstringYesTrade register number

Full JSON Payload Sample

json
{
  "header": {
    "organizationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "messageId": "b2c3d4e5-f6a7-8901-bcde-789012345678",
    "webhookId": "c3d4e5f6-a7b8-9012-cdef-123456789012",
    "type": "delivery_order/created",
    "date": "2024-03-15T10:30:00.000Z"
  },
  "body": {
    "id": "e5f6a7b8-c9d0-1234-efab-890123456789",
    "orderIds": ["d4e5f6a7-b8c9-0123-defa-234567890123"],
    "locationId": "f0a1b2c3-d4e5-6789-f0ab-123456789012",
    "organizationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "shippingMethodId": "f6a7b8c9-d0e1-2345-fabc-456789012345",
    "shippingMethodName": "Colissimo Domicile",
    "collectPointId": null,
    "collectPointCountry": null,
    "collectPointZipCode": null,
    "type": "B2C",
    "priority": "NORMAL",
    "issuedAt": "2024-03-15T09:00:00.000Z",
    "status": "PENDING",
    "fulfillmentType": "WAREHOUSE",
    "total": 85.00,
    "totalTaxInclusive": 102.00,
    "totalShipping": 5.99,
    "totalDiscount": 0.00,
    "totalVat": 17.00,
    "totalInsurance": null,
    "currency": "EUR",
    "invoiceNumber": "INV-2024-001234",
    "invoiceUrl": "https://cdn.example.com/invoices/INV-2024-001234.pdf",
    "orderNumber": "ORD-2024-001234",
    "gift": false,
    "inventoryPolicy": "DENY",
    "createdAt": "2024-03-15T10:30:00.000Z",
    "prepareAt": null,
    "comment": null,
    "meta": null,
    "incoterms": null,
    "virtual": false,
    "deliveryAddress": {
      "id": "a1b2c3d4-e5f6-7890-abcd-901234567890",
      "type": "PERSON",
      "deliveryOrderId": "e5f6a7b8-c9d0-1234-efab-890123456789",
      "fullname": "Alice Dupont",
      "email": "alice.dupont@example.com",
      "address": "12 Rue de la Paix",
      "addressComplement": "Apt 4B",
      "zipcode": "75001",
      "country": "FR",
      "city": "Paris",
      "state": null,
      "phone": "+33612345678",
      "comments": null,
      "metadata": null,
      "taxId": null,
      "eori": null,
      "form": null,
      "capital": null,
      "companyId": null,
      "registration": null
    },
    "events": [],
    "lines": [
      {
        "id": "b2c3d4e5-f6a7-8901-bcde-012345678901",
        "deliveryOrderId": "e5f6a7b8-c9d0-1234-efab-890123456789",
        "orderLineId": "c9d0e1f2-a3b4-5678-cdef-789012345678",
        "stockReferenceId": "d0e1f2a3-b4c5-6789-defa-123456789012",
        "status": "NEW",
        "label": "T-Shirt Blanc Taille M",
        "sku": "TSHIRT-WHITE-M",
        "quantity": 2,
        "price": 25.00,
        "vatRate": 0.20,
        "total": 50.00,
        "totalTaxInclusive": 60.00,
        "meta": null,
        "fulfilledQuantity": 0
      },
      {
        "id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
        "deliveryOrderId": "e5f6a7b8-c9d0-1234-efab-890123456789",
        "orderLineId": "d0e1f2a3-b4c5-6789-defa-890123456789",
        "stockReferenceId": "e1f2a3b4-c5d6-7890-efab-234567890123",
        "status": "NEW",
        "label": "Pantalon Bleu Taille 38",
        "sku": "PANTS-BLUE-38",
        "quantity": 1,
        "price": 35.00,
        "vatRate": 0.20,
        "total": 35.00,
        "totalTaxInclusive": 42.00,
        "meta": null,
        "fulfilledQuantity": 0
      }
    ]
  }
}

Notes

  • A single customer order (order/created) may generate one or more delivery orders depending on the dispatching rules and available warehouse locations.
  • The events array is empty at creation time; it grows as fulfillment progresses.
  • The statuses and logs fields on the entity are excluded from the webhook payload (@Exclude()).
  • virtual: true indicates a logical grouping with no physical goods shipment (used for digital products or services).
  • For B2B orders, incoterms (DDP or DAP) defines the customs responsibility split between buyer and seller.

HappyColis API Documentation