Skip to content
SyncMyShop

Systems

Akeneo integration with your online store: complete products, per channel and locale

Akeneo allows 4 concurrent API calls per connection and 10 per PIM instance, and stores every value per locale and channel. We build the integration on your families, channels and completeness rules, then host and run it.

What Akeneo is and who runs it

Akeneo is a product information management system (PIM): the place where product data is collected, enriched, translated and checked before it goes to a store, a marketplace or a print catalog. It was founded in 2013 in Nantes, France, and started as open source. Its users are manufacturers, brands and distributors with thousands of items in several languages.

For an integration, the edition decides two things: whether Akeneo reports changes itself, and whether assets and reference entities exist.

Edition Event Platform Asset Manager, Reference Entities
Enterprise Edition SaaS yes yes
Enterprise Edition PaaS no yes
Growth Edition yes no
Community Edition (free, self-hosted) no no

What connects to Akeneo

Akeneo owns what a product is: name, description, attributes, categories, variants and media. The ERP owns the item number, price and stock. That split decides the flows.

Flow Direction What moves
New items ERP to Akeneo SKU, GTIN, family, base description
Supplier content supplier to Akeneo specifications, images, classification
Complete products Akeneo to store values per locale and channel, product models, media, categories
Price and stock ERP to store outside Akeneo

A product goes to the store only when it is complete for that store's channel and locale. Akeneo calculates completeness itself, and the integration filters on it with the completeness filter. A half-finished product stays in Akeneo until the team finishes it. How these flows fit together across systems is on the product data page.

How Akeneo exposes data

REST API through a connection

Akeneo has a REST API with JSON. Access runs through a connection created in the PIM. It gives four values: client ID, secret, username and password, and the password is shown once. With them the integration requests an access token valid for 3,600 seconds and a refresh token valid for 1,209,600 seconds, which is 14 days.

The limits

Limit Value Over the limit
Requests per PIM instance 100 per second 429, with Retry-After when present
Concurrent calls per connection 4 429
Concurrent calls per instance 10 shared with every connection on the PIM
Creating or updating attribute options 3 per second 429
Items per page 10 by default, 100 at most 422 above 100
Paging with page up to the 10,000th item 422, use search_after
Products per batch write 100 413 Too many resources to process

Akeneo's good practices for the REST API set these numbers. The limit of 10 concurrent calls applies to the whole instance: a marketplace feed, a print tool and our integration on the same PIM share those 10. We keep the integration at 4 and wait the number of seconds in Retry-After on a 429, as described in API throttling and backoff.

The arithmetic for a first load of 40,000 products: at 100 per page that is 40,000 / 100 = 400 requests; at the default page size of 10 it would be 4,000. With page paging Akeneo stops at page 100, because 100 x 100 = 10,000, so the integration pages with search_after. After the first load it asks only for products with updated later than the previous run. On SaaS those times are in UTC.

Batch writes answer per line

Writes from the ERP go to the batch endpoint as application/vnd.akeneo.collection+json: one product per line, at most 100 per request. The response is one status per line, so one bad line does not fail the batch:

{"line":1,"uuid":"fc24e6c3-...","status_code":204}
{"line":2,"uuid":"573dd613-...","status_code":422,
 "message":"Property \"group\" does not exist."}
{"line":3,"uuid":"25566245-...","status_code":201}

2,500 new items from the ERP are 25 requests. The integration reads every line, marks the 201 and 204 lines as done and puts each 422 on a list with its message. A PATCH merges objects and replaces everything else: sending categories with one code removes the product from all other categories.

UUIDs and events

Since November 2022 a product has a UUID and the identifier is optional. /api/rest/v1/products-uuid returns every product; the older /products silently skips products without an identifier.

The Event Platform sends events such as com.akeneo.pim.v1.product.updated, with 20 subscribers per PIM and 20 subscriptions per subscriber. The older Events API is supported until 31 December 2026. An event is a signal: the integration reads the product, checks completeness and keeps a polling pass on updated next to it, for the reasons in webhooks are not a guarantee.

Where an Akeneo integration gets stuck

Every value has a locale and a channel

An Akeneo value is never one field. Each one hangs on a locale, a scope (the channel), both or neither.

Akeneo product values mapped to one store product Akeneo stores each value per locale and channel. The integration picks the en_US name, the description for the ecommerce channel, looks up the label for the color code black, converts 1.2 kilograms to the store's weight field and downloads the image by its media file code. Akeneo values Store product name en_US Work shoe S3 low description ecommerce <p>Composite toe cap.</p> description b2b <p>EN ISO 20345 S3.</p> other channel, not read color black option code, not a label weight amount 1.2000 unit KILOGRAM main_image a/b/c/8f3e_shoe.jpg media file code title Work shoe S3 low description <p>Composite toe cap.</p> option Color Black weight 1.2 unit set per store image uploaded file channel ecommerce label from options call amount, unit download, upload
One Akeneo product as a store reads it: a value per locale and channel, codes instead of labels, and a file code instead of an image URL.

The color arrives as the code black; the label "Black" comes from a separate call on the attribute's options. The weight is an amount with a unit. The description exists per channel, so a second store on channel b2b gets different text, or none. The integration records per store which channel and which locales it reads, and what happens when a translation is missing. The field mapping note covers this class of mismatch.

Product models and variant axes

A family variant has 1 or 2 levels of variation, with at most 10 axes per level and 20 in total. A work shoe can vary on color at the first level and on size and width at the second. Stores are stricter: Shopify allows 3 options and 2,048 variants per product. Per family we decide how two levels and several axes are flattened into store options; the variants page has the cases.

Options and media

A select attribute returns codes. Options are created at 3 per second, so a supplier import that adds 1,200 new color codes takes 1,200 / 3 = 400 seconds, 6 minutes 40 seconds, before the products that use them can be written. Images are stored as a media file code, not a public URL. The integration downloads each file from /media-files/{code}/download with the token and uploads it to the store.

Platforms we integrate with Akeneo

The integration is built on your Akeneo: your families, channels, locales and completeness rules. What the receiving side needs is on each platform page:

  • Shopify: 3 options per product, metafields for the attributes Shopify has no field for.
  • Magento: configurable and simple products, attribute sets, values per store view.
  • WooCommerce: variable products with global attributes, batches of 100 through the REST API.
  • BigCommerce and Shopware.

Another PIM in place is covered on the Salsify page. We build the integration for a fixed price, then host, run and monitor it for a monthly fee. Before go-live it runs as a dry run: you see per product which title, options and images would land in the store, and nothing is published. Tell us which Akeneo edition and which store you run.

Frequently asked questions

Which Akeneo edition do we need for an integration?

Every edition has the REST API. The editions differ in what comes on top: the Event Platform, which reports changes as they happen, runs on Enterprise Edition SaaS and Growth Edition, not on Enterprise Edition PaaS or Community Edition. Asset Manager and Reference Entities are Enterprise only. Without events the integration polls for products changed since the last run.

How fast does a change in Akeneo reach the store?

With the Event Platform, the integration receives a product.updated event, reads the product and writes it to the store as soon as the event arrives. Without it, the change waits for the next polling run on the updated filter, typically every 5 to 15 minutes. Both routes check completeness for the channel before anything is published.

Can prices and stock come from Akeneo?

Akeneo has a price attribute type with a value per currency, but in most setups the ERP owns price and stock and sends them to the store directly. Akeneo owns what a product is. Mixing the two means two systems can overwrite each other, so the integration takes each field from one owner only.

Our integration still calls /api/rest/v1/products. Is that a problem?

It skips every product created without an identifier, which Akeneo has allowed since November 2022. The endpoint /api/rest/v1/products-uuid returns all of them. Moving to UUIDs also changes the key you store on the store side, so the move needs a mapping table from identifier to UUID first.

Can the integration write new items from our ERP into Akeneo?

Yes. New items with their SKU, GTIN and family go in through the batch endpoint, 100 products per request, and Akeneo answers per line. A rejected line does not stop the rest of the batch, and the integration puts it on a list with the error message so someone can fix the source record.

Tell us what you need

Tell us which systems you use and what needs to work better. We reply personally within one working day. We help you define the work, then agree the price and timing before you commit.

  • You know the price and the timeline before you commit to anything
  • We work out the connection that takes the work off your hands
  • We handle the build, hosting, monitoring and maintenance
  • Your team has less information to retype and fewer discrepancies to chase

Suppliers, products, orders per day, a rough estimate is fine.

Or email directly: carsten@syncmyshop.com