Product Sync - Adobe Commerce Connector
Essential knowledge
Intended Audience:
Technical User
Author:
Fluent Commerce
Changed on:
17 June 2026
Overview
This framework is responsible for synchronizing products from Adobe Commerce to Fluent.- Manually synchronize the entire product catalog at any time.
- Automatic detection and synchronization of modified products.
- Multi-retailer / multi-website configuration support.
- Current product type support is limited to the following: Simple and Configurable.
Key points
- Core Functionality: You will learn how the framework exports product catalog data from Adobe Commerce to Fluent asynchronously using Adobe's message queue, supporting multi-retailer and multi-website configurations.
- Product Type Limitation: A critical constraint to understand if skipping the text is that synchronization is strictly limited to Simple and Configurable product types; other product types are not currently supported.
- Fail-Safe Delta Sync: The automated background synchronization uniquely relies on a custom indexer and MySQL database triggers across four core tables, ensuring product modifications are captured even when made through direct SQL imports or third-party extensions.
- Payload Customization: Data payloads are constructed via type-specific builder classes, but developers can safely alter product properties, query builds, or collections prior to synchronization by utilizing eight dedicated event hooks.
Data Pipeline Execution

1. Application Triggers (Observers/Cron)
Product synchronization can be initiated using three distinct operational paths:- Magento CLI Command: Executed manually from the terminal to push the entire catalog immediately after framework installation. This loads all products into the queue for a full baseline synchronization: Bash
`bin/magento fluent:product_full:push` - Adobe Admin Console: Executed manually via the user interface. Users pick a specific starting date, and the extension identifies and exports all products modified from that designated timestamp up to the present moment.
- Automatic Delta Sync: An automated background track driven directly by native MySQL database triggers that monitor modifications across four core data tables:
`catalog_product_entity``catalog_product_entity_varchar``catalog_product_entity_int``catalog_product_entity_decimal`This database trigger method ensures that manual administrative changes, third-party extension rewrites, and direct backend SQL mass updates are captured.
2. Validation Check
When changes occur across the observed database tables, a custom indexer class (`FluentConnector\Product\Model\Indexer\Product`) aggregates the updated product IDs, validates their structural integrity, and pushes them safely into the core Adobe Commerce message queue.3. Payload Building
A structured builder pattern separates data collection from communication logic. The top-level payload factory (`FluentConnector\Product\Model\Request\BuildProductPayload`) intercepts the queued items and routes them to product-specific data formatters depending on the entity type:`FluentConnector\Product\Model\Request\Data\ProductType\Simple``FluentConnector\Product\Model\Request\Data\ProductType\Configurable`
4. API Delivery
The fully formatted payloads are picked up from the message queue by the product consumer class (`FluentConnector\Product\Model\MessageQueue\ProductSyncConsumer`). This consumer opens a secure API connection, handles cross-platform authentication, and transfers the product catalog records outbound over to the Fluent platform.Developer Extension Points
Developers can utilize eight dedicated event hooks to filter product collections or modify payload schemas before transmission:| Name | Description | Parameters |
`fluent_send_products_prepare_simple_variant_product_before` | Event after simple variant products are read from the database | `collection` |
`fluent_send_products_prepare_simple_variant_product_data_after` | Allows customization of each variant product property | `product-payload` of type `array`, `product` |
`fluent_send_products_prepare_simple_standard_product_before` | Event after simple standard products are read from the database | `collection` |
`fluent_send_products_prepare_simple_standard_product_data_after` | Allows customization of each standard product property | `product-payload` of type `array`, `product` |
`fluent_send_products_prepare_configurable_product_before` | Event after configurable products are read from the database | `collection` |
`fluent_send_products_prepare_configurable_product_data_after` | Allows customization of each configurable product property | `productInfo` of type `array` |
`fluent_send_products_query_build_after` | Allows customization of product push async event queries | `productMessage` of type `EventMessageInterface` |
`fluent_send_products_before` | Event fired immediately before products are pushed to Fluent | `productIds` of type `array` |
`fluent_send_products_after` | Event fired after products are successfully pushed to Fluent | `productIds` of type `array` |