Documentation Index
Fetch the complete documentation index at: https://docs.frontic.com/llms.txt
Use this file to discover all available pages before exploring further.

The commercetools connector syncs your products and categories from a commercetools project into Frontic. Master and variant SKUs are denormalized into separate records with parent links preserved, and prices are pre-filtered to the currencies on each channel — so your Data Sync receives clean, currency-resolved payloads.
Auth
OAuth 2.0 (client credentials)
Update methods
Polling
Resources
Products, Categories
What you get
Products
Master products with variants split into separate records by SKU, parent links preserved, prices pre-filtered per currency.
Categories
Power category pages, attach category context to other records, drive navigation.
Set up the API client
Before adding the integration in Frontic, create a dedicated API client in commercetools Merchant Center:Open API clients
In Merchant Center, go to Settings → Developer settings → API clients and click Create new API client.
Pick the read-only scopes
Under Scopes, select View for these resources — Frontic only reads from commercetools, so view scopes are enough:
- View project settings
- View stores
- View tax categories
- View products
- View published products
- View attribute groups
- View product selections
- View categories
- View standalone prices
- View types
- View key-value documents
Connection settings
Your commercetools project key. Visible at the top of Merchant Center and on the API client credentials screen.
The API client’s ID created above.
The client secret paired with the Client ID.
The commercetools API endpoint for your project’s region (e.g.
https://api.europe-west1.gcp.commercetools.com).The OAuth token endpoint for your project’s region (e.g.
https://auth.europe-west1.gcp.commercetools.com).Channels
A commercetools channel in Frontic carries the locales and currencies the connector pulls per record.A label for the channel in Frontic.
commercetools locale codes the connector pulls per record.
The translation used when a value is missing in another locale.
Currencies (from your commercetools project’s enabled set) the connector pulls. Product prices are pre-filtered to these.
Data Feeds
The commercetools connector exposes two feed types:| Feed | What it pulls |
|---|---|
| Products | Master products as parents and variants as separate records (one per SKU), with prices and translations resolved per channel. |
| Categories | The full category tree, parent links preserved. |
- Updates step — Polling is supported.
- Manual refresh — every commercetools feed exposes a Refresh action that re-runs the feed against the source.
What the data looks like
Variants
A commercetools product with multiple variants becomes a parent record + one record per variant SKU, linked viaparentId. A simple product (single variant) is emitted as a self-parented record. See Product Models for how this shape composes at the API layer.
Currency-resolved prices
Product prices are pre-filtered to the currencies declared on the channel. Variants inherit the per-currency price layout, so map them into the Price composite without per-region picking logic in your Value Composer.Attributes split into options and properties
commercetools attributes arrive as{ name, value } pairs in the source payload. The connector’s attribute extractor unwraps the envelope and splits attributes by role, stamping each list onto the feed record under the reserved $-prefix namespace:
$options— variant-defining attributes (the ones flagged as “constraint: SameForAll” or used as variant selectors)$properties— descriptive attributes that don’t drive variant selection
name/value structure per field.
Product type caching
Product types are cached on the integration’s Instance — large catalogs sync faster because attribute definitions aren’t refetched per record.Good to know
- Read-only. The commercetools connector pulls from commercetools; it doesn’t push back. Edits happen in the Merchant Center.
- Custom attribute groups. commercetools attribute groups come through on the raw payload. Map them in your Data Sync if you need them as first-class fields.
What isn’t supported today
Commercetools has several segmentation and pricing primitives the connector doesn’t currently use. The data still comes through on the raw record where commercetools includes it, but the connector doesn’t filter or resolve by these dimensions:- Stores. The connector pulls products from the project root, not via the Store-scoped endpoints. Records that exist in only some stores arrive un-filtered. Use Frontic scopes and a base query on your listings to segment instead.
- Inventory channels and distribution channels. Channel-specific prices (
priceChannel) and channel-specific stock (distributionChannel) aren’t applied during ingest. The connector pulls the master prices and filters by the channel’s currencies; channel-tier-specific prices show up on the raw payload but aren’t unwrapped. - Complex pricing. Customer-group prices, country-specific prices, and validity-windowed prices on top of currency aren’t resolved. The Price composite Frontic stores reflects the master / fallback price for each currency on the channel.
Related
Product Models
How commercetools master products and variants compose at the API layer.
Akeneo
Akeneo’s connector — same
$options / $properties split.