Challenge

The client needed to bring products and posts in from another site — a custom Laravel build with its own custom fields — which made a simple CSV export/import unworkable out of the box. Done manually, adding content one item at a time was slow and didn't scale as the catalog grew.

Solution

Built reusable import logic supporting both API-based and CSV-based ingestion, with field mapping and transformation handling the differences between the two systems' custom fields. Importing is now a CSV upload or a single click. The next phase — already planned — is auto-detecting new fields on import, with an admin confirmation step before anything new gets created, so nothing unexpected ends up published.

How it works

The source site is a custom Laravel build with its own custom-field structure, which is what made a plain CSV export/import unworkable — the fields on each side don't line up automatically. The system handles that translation with a mapping layer between the two structures, and supports two ingestion paths so the client isn't locked into one method: a direct API pull, or a CSV upload for cases where API access isn't practical. The next phase, already planned, is auto-detecting new fields on import — gated behind an admin confirmation step so nothing unexpected gets created automatically.

What I built

  • Dual ingestion paths — API-based pull or CSV upload
  • Custom field mapping between the Laravel source structure and WordPress/ACF
  • One-click or one-upload imports instead of manual per-item entry
  • Planned: auto-detection of new source fields, gated behind admin confirmation before anything is created

Results

  • Content that used to be added one item at a time now imports in a few minutes per batch
  • Import no longer depends on manually reconciling custom fields by hand
  • Groundwork already in place for the next phase without needing a rebuild
Client identity and project-specific details are withheld under NDA.

Have a similar project?

I take on a limited number of freelance engagements at a time — reach out and I'll get back to you.

Start a Project →