Fluent Commerce Logo
Docs

Consignment - Adobe Commerce Connector

Essential knowledge

Intended Audience:

Technical User

Author:

Fluent Commerce

Changed on:

17 June 2026

Overview

This framework receives consignment updates from Fluent and creates/updates shipments in Adobe Commerce.
  • Can only be enabled at a global level making it available for all existing websites.
  • Adds a new handler to the order update webhook to accept and process consignment updates
  • Configurable Fluent status that should trigger shipment creation in Adobe. It’s possible to have multiple values as long as they are separated by commas.

Key points

  • Core Functionality & Outcome: You will learn how this pipeline intercepts Fluent consignment webhooks to automatically create and update full or partial shipments, including tracking codes, in Adobe Commerce.
  • Global Scope & Trigger Constraints: If you skip the text, you must know that this framework can only be activated globally across all websites, and shipment generation relies entirely on a configurable, comma-separated list of specified Fluent statuses.
  • Asynchronous Validation Flow: Inbound webhooks undergo a strict multi-step validation chain (verifying accounts, retailer IDs, and entity types) before being offloaded to an asynchronous message queue (`fluentcommerce.consignment.updater`) for safe, decoupled processing.
  • Architecture & Customization: Developers can extend or override webhook handlers, validation rules, and processing commands using standard Adobe Commerce Dependency Injection (DI) (`di.xml`) or tap into two dedicated event hooks (`before`/`after` processing).

Data Pipeline Execution

No alt provided

1. Ingestion - Webhook

The framework adds a new handler to the order update webhook (provided by the reference order module) to accept and process incoming consignment updates.The configuration below demonstrates how the handler is mapped to a Fluent Webhook message name. It is possible through Adobe Commerce DI to add more or override the default settings:
1<type name="FluentConnector\General\Api\WebHook\HandlerFactoryInterface">
2    <arguments>
3        <argument name="handlers" xsi:type="array">
4            <item name="ConsignmentStatusChanged" xsi:type="string">FluentConnector\Consignment\Handler\ConsignmentHandler</item>
5        </argument>
6    </arguments>
7</type>

2. Validation Chain - di.xml

Before actual webhook processing begins, a series of validations are executed. These validations are part of a validation chain configured in the `di.xml` file as follows:
1<virtualType name="consignmentValidatorChain" type="FluentConnector\General\Model\WebHook\MessageValidatorChain">
2    <arguments>
3        <argument name="validators" xsi:type="array">
4            <item name="consignmentEnableValidator" xsi:type="object">consignmentEnableValidation</item>
5            <item name="consignmentEntityTypeValidator" xsi:type="object">consignmentEntityTypeValidator</item>
6            <item name="orderStatusValidator" xsi:type="object">FluentConnector\Consignment\Model\WebHook\Validator\OrderValidator</item>
7        </argument>
8    </arguments>
9</virtualType>

Queue Processing - `fluentcommerce.consignment.updater`

Upon successful validation, the webhook execution adds the message to a queue to be processed asynchronously.
  • Topic Name: `fluentcommerce.consignment.updater`
  • Message Content Payload:
    • `retailerId` (Retailer ID)
    • `entityId` (Fluent Consignment ID)
    • `rootEntityRef` (Adobe Order increment ID)
The extension uses the standard Adobe Commerce approach to process items waiting in the queue:
  • Consume messages from the queue.
  • Fetch the consignment entity by ID from Fluent Commerce, including articles.
  • Run an initial validation check to make sure this consignment and fulfillment are related to active orders and items (verifies that the order exists and matches the queued item, the order item exists in the platform, and order items are available for shipment).
  • Create an order shipment for fulfillment items (supporting partial or fully shipped lines) using Command patterns for data processing if the consignment status matches your configurations.
  • Add a shipping tracking code. This tracking code can only be added to existing shipments and utilizes command patterns for data processing.
The actual processing is driven through commands and can be overridden or extended via DI configuration:
1<virtualType name="consignmentProcessCommandPool" type="FluentConnector\Consignment\Model\Command\CommandPool"> 
2    <arguments> 
3        <argument name="commands" xsi:type="array"> 
4            <item name="shipment" xsi:type="string">FluentConnector\Consignment\Model\Command\Order\Shipment</item> 
5        </argument> 
6    </arguments> 
7</virtualType>
No alt provided

Data Storage & Schema Mapping

Consignment vs Shipping Field Mapping Reference

The table below defines how fields map between incoming Fluent Consignment data and Adobe Commerce shipping properties:
NameParameters / Field PathDescription
`rootEntityRef``order.increment_id`Adobe Order increment ID
`order_item_id``data.consignmentById.consignmentArticles.consignmentArticleEdges[].consignmentArticleNode.fulfilments.fulfilmentEdges.fulfilmentNode.items.fulfilmentItemEdges[0].fulfilmentItemNode.orderItem.ref`Target order item ID
`shipped_qty``data.consignmentById.consignmentArticles.consignmentArticleEdges[].consignmentArticleNode.fulfilments.fulfilmentEdges.fulfilmentNode.items.fulfilmentItemEdges[0].fulfilmentItemNode.filledQuantity`Total shipped quantity
`status``data.consignmentById.status`The item's consignment status (e.g., `"status": "ACTIVE_LODGED"`)
`fulfilment ID``data.consignmentById.consignmentArticleEdges[].consignmentArticleNode.fulfilments.fulfilmentEdges.fulfilmentNode`Kept as an extension attribute

Architecture

The following classes govern the execution of this inbound pipeline:
  • `FluentConnector/Order/Handler/ConsignmentStatusUpdateHandler.php`: Handler to publish Consignment messages to the message queue.
  • `FluentConnector/Order/Model/MessageQueue/Consumer/Data/ConsignmentUpdateMessage.php`: Data interface for the message queue.
  • `FluentConnector/Order/Model/MessageQueue/Consumer/ConsignmentUpdateConsumer.php`: Consignment update consumer.
  • `FluentConnector/Order/Model/Command/Order/Shipment.php`: Order item shipment command.
  • `FluentConnector/Order/Model/Command/Order/ShipmentTracking.php`: Shipping tracking command.

Developer Extension Points

The module provides two dedicated event hooks allowing custom code to execute alongside the core processing steps:
  • `fluent_consignment_process_before`: Event fired before the consignment is processed. Parameters: `order` (of type `OrderInterface`), `consignment` (of type `array`).
  • `fluent_consignment_process_after`: Event fired after the consignment is successfully processed. Parameters: `order` (of type `OrderInterface`), `consignment` (of type `array`).