Fluent Commerce Logo
Docs

Customer Profile Creation - Adobe Commerce Connector

Essential knowledge

Intended Audience:

Technical User

Author:

Fluent Commerce

Changed on:

17 June 2026

Overview

Automatically provisions matching customer profiles within Fluent Commerce during the Adobe Commerce checkout sequence. This integration ensures both guest and registered order histories are unified under a single email identifier across the order management lifecycle.
  • Unifies guest and registered order history under one email.
  • Customizes queries easily using 3 built-in event hooks.
  • One-time creation only; existing profiles never update. Usernames are Retailer ID-prefixed. Critical: Any flow failure strictly blocks Adobe order completion.

Key points

  • Synchronous Interception: Intercepts the checkout journey in real time to guarantee a corresponding identity record exists in Fluent Commerce before dispatching the order payload.
  • Critical Path Guardrail: Because profile verification resides directly within the checkout pipeline, any downstream latency or execution failure will strictly block Adobe Commerce order placement.
  • Multi-Retailer Isolation: To maintain tenant boundaries, customer usernames are rigidly structured with a Retailer ID prefix (e.g., `1_customer@email.com`), generating distinct profiles across separate brand nodes for the same email.
  • Provisioning Lifecycles: Operates strictly as a one-time account provisioning tool during initial discovery; subsequent customer data updates are not continuously synchronized.

Data Pipeline Execution

No alt provided

1. Application Triggers (Observers/Cron)

The customer verification sequence initiates synchronously during the order checkout process. The integration attaches an observer class (`FluentConnector\Customer\Observer\SetFluentCustomerId`) to intercept the core system event `fluent_order_push_before` emitted by the outbound order pipeline component.

2. Validation Check

Before continuing with order completion, the observer performs a live lookup check:
  • It passes execution to the lookup service `FluentConnector\Customer\Service\GetCustomer` to verify if the customer email already exists on the platform.
  • To isolate accounts across multi-retailer footprints, the framework applies a mandatory prefix to the user's email address within the `username` field following a rigid structural format: `[Retailer_ID]_[Customer_Email]` (for example: `1_jonh.doe@fluentcommerce.com`).
  • Critical Path Guardrail: If this validation lookup or the subsequent creation step experiences an error, the entire checkout pipeline breaks, blocking the order from completing in Adobe Commerce.

3. Payload Building

If the lookup service determines that the customer does not exist within the designated retailer ecosystem, the extension constructs an outbound mutation data payload. This builder layer compiles core identity records, matching customer references, and system variables needed to provision the account.

4. API Delivery

The observer coordinates with the creation service (`FluentConnector\Customer\Service\CreateCustomer`) to execute a live GraphQL mutation request. This request pushes the new profile directly to Fluent Commerce, receives the newly created platform customer ID, and binds it securely to the outbound order record before completing the checkout process.

Developer Extension Points

Developers can leverage three targeted event hooks to alter data payloads, inject custom fields, or modify GraphQL variables before data transmits to the platform. All primary components of this pipeline are declared in the native Adobe Commerce dependency injection configuration (`di.xml`) of the general connector layer for straightforward overrides:
NameDescriptionParameters
`fluent_customer_create_payload_prepare_after`Allows customization of the customer data payload used to construct the mutation request`order` of type `OrderInterface`, `request_data` of type `CustomerCreateDataInterface`
`fluent_customer_create_prepare_query_fields`Allows customization of the explicit API data fields passed within the `createCustomer` mutation`field_list` of type `array`
`fluent_customer_create_prepare_query_variables`Allows customization of the payload variables passed to the `createCustomer` mutation request`variables` of type `array`, `request_data` of type `CustomerCreateDataInterface`