GuideFebruary 2025 · 7 min read

Automating Akeneo Exports: Scheduled Sync Without Custom Scripts

Running a one-time Akeneo export is the easy part. Setting up recurring, reliable exports that keep your database fresh — without babysitting a cron job — is where most teams struggle.

Why one-time exports aren't enough

Your Akeneo catalog changes continuously — product managers update descriptions, prices change, new SKUs are added, discontinued products get disabled. A database export that runs once is stale within hours.

Hourly

E-commerce storefronts where price or stock changes matter

Use incremental only — full hourly export is too expensive for large catalogs

Daily

Most analytics, BI reporting, and recommendation engine use cases

Sweet spot: incremental at 2am, weekly full on Sunday

Weekly

Marketing catalogs, print assets, static data consumers

Full export weekly is fine when data freshness requirements are loose

The DIY cron approach: what it actually involves

If you decide to build scheduled exports yourself, here's what you're signing up for:

# Typical cron setup for daily Akeneo export:

# /etc/cron.d/akeneo-export
0 2 * * * www-data /usr/bin/python3 /opt/akeneo-export/incremental.py >> /var/log/akeneo-export.log 2>&1
0 3 * * 0 www-data /usr/bin/python3 /opt/akeneo-export/full-export.py >> /var/log/akeneo-export.log 2>&1

# What your scripts need to handle:
# - OAuth2 token acquisition
# - Token refresh during long exports
# - API pagination (search_after for large catalogs)
# - Product model flattening (parent attribute merging)
# - State tracking: "what was the last successful export timestamp?"
# - Database upsert logic (insert new, update changed, mark deleted)
# - Error handling + alerting when it fails
# - Log rotation
# - Server uptime (if the server restarts mid-export, what happens?)

What goes wrong

  • Cron fires but server is under load — export times out midway
  • Token expires during a 2-hour full export
  • Network blip causes 5 minutes of data gap
  • Script fails silently — you find out 3 days later

What you need to add

  • Retry logic with exponential backoff
  • Alerting (PagerDuty / Slack) on failure
  • State file to resume from last checkpoint
  • Monitoring dashboard for export health

Incremental vs full exports: when to use each

IncrementalFull export
What it syncsOnly products updated since last runAll products in the catalog
SpeedFast — typically < 1 min for daily changesSlow — scales with catalog size (10k products ≈ 5–10 min)
Handles deletions?No — deleted products stay in DBYes — full reconciliation removes deleted products
Best forDaily/hourly freshness updatesWeekly reconciliation, initial load, disaster recovery
API filter usedupdated_after={last_run_timestamp}No filter — fetches all pages

Recommended setup: daily incremental at 2am + weekly full on Sunday at 3am. The daily run keeps data fresh; the weekly full run catches any drift or deletions.

Recommended schedule patterns by use case

E-commerce storefront

Every 2 hours (incremental) + daily full at 1am

Prices and stock need to be reasonably fresh; a 2h lag is acceptable for most headless commerce setups

Analytics / BI reporting

Daily incremental at 2am + weekly full on Sunday

Dashboards refresh daily — there's no value in more frequent exports. Weekly full catches catalog cleanup.

Search index (Algolia, Elasticsearch)

Every 30 minutes (incremental) during business hours, hourly at night

Search results should reflect catalog edits quickly; 30-min lag is typical for PIM-to-search pipelines

ERP / inventory system sync

Real-time webhooks (if available) or every 15 minutes

ERP integration typically needs near-real-time data. Consider Akeneo's event API if on Serenity.

Setting up scheduled exports in SyncPIM (5 minutes)

SyncPIM has built-in scheduling — no cron jobs, no servers to manage, no infrastructure to maintain:

  1. 1

    Create your export configuration

    Connect Akeneo + destination database, configure field mapping and enrichers.

  2. 2

    Open the Scheduling tab

    In the export configuration editor, click the Schedule tab.

  3. 3

    Choose incremental or full

    Select 'Incremental sync' (recommended for recurring) or 'Full export' (for weekly reconciliation).

  4. 4

    Set the schedule

    Choose from presets (every hour, daily at 2am, weekly on Sunday) or enter a custom cron expression.

  5. 5

    Activate

    Toggle the schedule on. SyncPIM will run the export automatically — you'll see run history, duration, and any errors in the Monitoring tab.

Set up your first scheduled export in minutes

No cron jobs. No servers. SyncPIM handles scheduling, retries, and monitoring automatically.

Related