Domain services
Evolve’s backend is split into domain services, each focused on a specific area of the commerce experience. These services integrate with SAAS backends (commerce engines, CMS platforms, search engines, payment providers) and expose a unified GraphQL API through GraphQL Federation.
graph TD;
subgraph "Pre-purchase"
catalog["Catalog"]
cms["CMS"]
end
subgraph "Purchase"
checkout["Checkout"]
payment["Payment"]
end
subgraph "Account"
account["Account"]
bu["Business units"]
end
subgraph "Post-purchase"
order["Orders"]
quotes["Quotes"]
end
gateway["GraphQL Gateway"]
gateway --> catalog
gateway --> cms
gateway --> checkout
gateway --> payment
gateway --> account
gateway --> bu
gateway --> order
gateway --> quotes
Service overview
Section titled “Service overview”Catalog
Section titled “Catalog”Owns the product catalog: product search, product detail, categories, and product listing configuration. Integrates with the commerce backend for product data and optionally with a dedicated search engine (Algolia) for search and faceting.
Integrates the content management system into the platform. Owns content pages, catalog page content, site layout (header, footer, navigation), and reusable content snippets. Evolve supports both Contentful and Storyblok as CMS backends, with interchangeable implementations behind the same GraphQL schema.
Checkout
Section titled “Checkout”Manages the shopping cart and the checkout process. Handles line item operations (add, update, remove), discount codes, shipping and payment method selection, address validation, and order creation. Orchestrates payment flows by delegating to the appropriate payment service.
Account
Section titled “Account”Covers customer identity and account management: registration, login, password management, address book, and session handling. Also owns B2B-specific account features like business unit management, associate invitations, roles, and shopping lists. Issues and manages authentication tokens used by all other services.
Orders
Section titled “Orders”Handles post-purchase order management: order history, order detail, and order status. Operates in both B2C (scoped to the customer) and B2B (scoped to the business unit) contexts.
Quotes
Section titled “Quotes”Manages the B2B quote workflow: creating quote requests from carts, tracking quote status, and converting accepted quotes into orders. See B2B & B2C architecture for the full quote flow.
Payment
Section titled “Payment”Payment processing is split into separate services per payment provider. Each payment service handles payment creation, webhook processing, and transaction management for its provider:
| Service | Provider |
|---|---|
payment-commercetools-stripe |
Stripe |
payment-commercetools-adyen |
Adyen |
payment-commercetools-mollie |
Mollie |
payment-commercetools-buckaroo |
Buckaroo |
payment-commercetools-paynl |
PayNL |
payment-commercetools-invoice |
Invoice (pay on account) |
Payment services expose REST endpoints (for webhooks and payment creation) rather than GraphQL, since payment providers communicate through callbacks and redirects. See Payment architecture for the full flow and REST endpoints & webhooks for the webhook contract.
Sends transactional emails (order confirmations, password resets, account invitations) using React-based email templates. Integrates with any SMTP-compatible email service. See Email & notifications for the full architecture.
GraphQL gateway
Section titled “GraphQL gateway”The gateway is not a domain service itself but the entry point for all clients. It is a Rust-based Hive Router that composes the subgraphs from all domain services into a single supergraph using Federation v2. It handles query planning, request routing, and response merging.
Supporting services
Section titled “Supporting services”Beyond the core domain services, Evolve includes supporting services for infrastructure concerns:
- Event router: routes events between services (e.g., order created events triggering email notifications)
- PIM integration: synchronizes product data from external PIM systems (e.g., Bluestone PIM) into the commerce backend
- Product feed: generates product feeds for external channels (Google Shopping, marketplaces)
- Monitoring: service health monitoring and alerting
Team organization
Section titled “Team organization”The domain-driven service structure maps naturally to team organization. Services group along the customer journey, allowing teams to be structured around business areas:
| Area | Services |
|---|---|
| Pre-purchase | Catalog, CMS |
| Purchase | Checkout, Payment |
| Account | Account (including B2B) |
| Post-purchase | Orders, Quotes |
Small teams can own the entire platform. Larger organizations can
assign services to dedicated squads, using tools like GitHub’s
CODEOWNERS to enforce ownership boundaries. Because services
communicate only through GraphQL Federation, teams can work
independently without blocking each other.

