Running Your First Export
Execute your first product export and monitor its progress in real-time.
Prerequisite: You need a saved configuration. See Creating Your First Configuration.
Overview
Exports run asynchronously in the background. Monitor progress in real-time or return later.
Akeneo PIM
Products
Transform
Database
Progress
Find Your Configuration
Locate the configuration you want to export from any of these locations:
Configuration cards on the home page
All configurations in sidebar menu
Individual configuration detail view
Click "Run Export"
Each configuration has a Run Export button. Click it to open the export mode selector.
Run ExportThis button uses all settings from your saved configuration (source, destination, enrichers, filters).
Choose Export Mode
A dialog appears with two options. Click one to start the export immediately.
Full Export
Exports all products matching your filters using upsert operations.
✓ First-time export
✓ After configuration changes
✓ Database reset/refresh
✓ Data consistency check
Incremental Export
Exports only products modified since last export.
✓ Regular sync (daily/hourly)
✓ Large catalogs (10-100x faster)
✓ Minimal API load
✓ Scheduled automation
Tip: Use Full for your first export, then Incremental for ongoing updates.
Export Starts Automatically
The export begins immediately and you're redirected to the progress page.
Job queued then processing begins
Live updates every 3 seconds
Navigate away safely, check back later
Monitoring Progress
The export details page auto-refreshes every 3 seconds. Navigate away safely — exports run in the background.
Export Status
pendingQueued
runningProcessing
completedSuccess
failedError
cancelledStopped
Real-time Metrics
Visual percentage (0-100%)
1,234 / 1,500 products
Time elapsed (real-time)
Products/sec, memory, CPU
Failed products with details
Streaming operations output
{
"status": "completed",
"progress": { "total": 1500, "processed": 1500, "percentage": 100 },
"duration": "2m 34s",
"enrichersApplied": 3,
"errors": 0
}Verify Export Results
Connect to your database and verify products were written successfully.
MongoDB
// Count products (should match export stats)
db.products.countDocuments()
// View sample product structure
db.products.findOne({}, {
code: 1, family: 1, enabled: 1,
categories: 1, attributes: 1, locale: 1
})
// Check reference data
db.reference_categories.countDocuments()
db.reference_attributes.countDocuments()
db.reference_entity_records.countDocuments()
// Find products by family
db.products.find({ family: "your_family" }).limit(5)
// Check localized data
db.products.find({ "locale.fr_FR": { $exists: true } }).limit(3)PostgreSQL
-- Count products (should match export stats)
SELECT COUNT(*) FROM products;
-- View sample product structure
SELECT code, family, enabled, categories, attributes, locale
FROM products LIMIT 1;
-- Check reference data
SELECT COUNT(*) FROM reference_categories;
SELECT COUNT(*) FROM reference_attributes;
SELECT COUNT(*) FROM reference_entity_records;
-- Find products by family
SELECT code, family FROM products
WHERE family = 'your_family' LIMIT 5;
-- Check localized data
SELECT code, locale FROM products
WHERE locale IS NOT NULL LIMIT 3;Export Completed! Your products are now in your database.
Working with Localized Data
Products with multiple locales separate localizable and non-localizable attributes.
attributesNon-localizable: SKU, color, price, dimensions
Shared across all locales
locale[code]Localizable: name, description, meta_title
Language-specific content
{
"code": "product-001",
"family": "clothing",
"attributes": {
"sku": "TSHIRT-BLU-001",
"color": "blue",
"price": { "value": 29.99, "currency": "EUR" }
},
"locale": {
"en_US": {
"attributes": { "name": "Blue T-Shirt", "description": "Comfortable blue t-shirt" }
},
"fr_FR": {
"attributes": { "name": "T-Shirt Bleu", "description": "T-shirt bleu confortable" }
}
}
}Merge Strategy: Combine root attributes + locale[code].attributes to get complete product in a specific language.
Retrieve Product in a Specific Locale
function getProductInLocale(product: Product, localeCode: string) {
const localeData = product.locale?.[localeCode]
if (!localeData) return product
return {
...product,
attributes: { ...product.attributes, ...localeData.attributes },
locale: undefined,
}
}
// Usage
const productFR = getProductInLocale(product, 'fr_FR')
console.log(productFR.attributes.name) // "T-Shirt Bleu" (from locale)
console.log(productFR.attributes.color) // "blue" (from root)Database Queries
db.products.aggregate([
{ $match: { enabled: true } },
{ $addFields: {
attributes: {
$mergeObjects: [
'$attributes',
{ $ifNull: ['$locale.fr_FR.attributes', {}] }
]
}
}
},
{ $unset: 'locale' }
])CREATE VIEW products_fr AS
SELECT
code, family, enabled,
attributes || COALESCE(
locale->'fr_FR'->'attributes', '{}'
) AS attributes
FROM products;
-- Query the view
SELECT * FROM products_fr;Tip: Create database views for frequently used locales to keep application code clean.