Akeneo Data Enrichment Without Code: Custom Enrichers Explained
Raw Akeneo data often needs transformation before it's useful in your application. SyncPIM's enricher system lets you compute slugs, resolve entities, merge fields, and apply conditional logic — all without writing code, and all running inline during the export pipeline.
What data enrichment means in a PIM export context
Akeneo stores data as it was entered — raw attribute values, category codes, reference entity IDs. What your application actually needs is often different:
Raw: Category code: 'mens_shirts'
Enriched: Category label: 'Men's Shirts'
Raw: Name: 'Blue Classic T-Shirt'
Enriched: URL slug: 'blue-classic-t-shirt'
Raw: Color entity ID: 'color_001'
Enriched: Color object: { label: 'Navy Blue', hex: '#1F3A5F' }
Raw: Price: [{ amount: '29.99', currency: 'EUR' }]
Enriched: price_eur: 29.99
Enrichers run as a transform step between Extract (Akeneo API) and Load (your database). The enriched document is what lands in your database — not the raw Akeneo payload.
10 built-in enrichers
Slug Generator
Converts a product name (or any text field) into a URL-safe slug. Example: 'Blue Classic T-Shirt' → 'blue-classic-t-shirt'.
Category Label Resolver
Replaces category codes with human-readable labels. Example: 'mens_shirts' → 'Men's Shirts'.
Reference Entity Resolver
Joins reference entity records to product attributes. Example: resolves a color code to the full color object with hex value and label.
Field Concatenator
Merges multiple fields into one. Example: combine name + variant label for a display title.
Field Splitter
Splits a delimited field into an array. Example: split 'S,M,L,XL' into ['S', 'M', 'L', 'XL'].
Text Transform
Uppercase, lowercase, trim, capitalize — apply text transforms to any string field.
Price Formatter
Extracts and formats a specific currency from Akeneo's price array. Example: get EUR price as a plain number.
Boolean Mapper
Maps attribute values to booleans. Example: 'in_stock' attribute 'yes'/'no' → true/false.
Conditional Enricher
If-then-else logic. Example: if weight > 5kg, set shipping_class = 'heavy'; else set 'standard'.
Custom Template (Mustache)
Full template-based enrichment using Mustache syntax. Access any product field with {{field_name}}.
Building custom enrichers with conditional logic
The Conditional Enricher is the most powerful built-in type. It evaluates a set of conditions against product attributes and applies different values based on the result.
Example: compute a shipping_class field based on the product's weight attribute:
weight > 10 → shipping_class = "freight"weight > 2 → shipping_class = "heavy"shipping_class = "standard"No code needed — this is configured through a visual builder in the SyncPIM dashboard. Conditions support: equals, not equals, greater than, less than, contains, starts with, is empty, is not empty.
Field transforms: uppercase, concat, split, slugify
Common field transforms you can chain in SyncPIM:
// Input product:
{
sku: "TSHIRT-BLUE-M",
name: { en_US: "Blue Classic T-Shirt" },
category_codes: ["mens", "shirts", "summer"]
}
// After enrichers:
{
sku: "TSHIRT-BLUE-M",
name: { en_US: "Blue Classic T-Shirt" },
category_codes: ["mens", "shirts", "summer"],
// Slug enricher:
slug: "blue-classic-t-shirt",
// URL enricher (Mustache template):
url: "/products/blue-classic-t-shirt",
// Category label resolver:
categories: ["Men's", "Shirts", "Summer Collection"],
// SKU uppercase (already uppercase, but for demo):
sku_display: "TSHIRT-BLUE-M"
}Real example: generating product URLs from SKU + category path
A common requirement for headless storefronts: each product document in your database needs a canonical URL computed from the category path and product slug. With SyncPIM's Mustache enricher:
// Mustache template enricher for URL field:
// Template: /{{category_path}}/{{slug}}
// Input:
{
category_path: "men/shirts", // resolved by Category Path enricher
slug: "blue-classic-t-shirt", // resolved by Slug enricher
}
// Output:
{
url: "/men/shirts/blue-classic-t-shirt"
}Enrichers run in order — you can chain them. The Slug enricher runs first and produces slug, then the Mustache enricher uses {{slug}} in its template.
Build your first enricher
10 free exports include full enricher access. No code, no configuration files.