Cross-Site Content Import System
Faster bulk content migration
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
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.