Imports into WordPress that run on their own, and stay clean.

We build import and sync systems that bring posts, WooCommerce products, listings or jobs into WordPress from CSV files, XML feeds and APIs. Each import has field mapping, validation, duplicate protection and logs, so a large dataset updates on schedule without damaging your site.

How should content be imported into WordPress safely?

A safe import reads the source, maps each field to a WordPress or WooCommerce field, validates every record, and matches it to an existing item by a stable external ID before creating or updating anything. It runs in small batches on a scheduler, writes a log of every decision, never deletes without rules, and can be paused or rolled back. This prevents duplicates, broken pages and overloaded servers.

Import volume and frequency are tuned to your hosting limits, because long single requests are the most common cause of failed imports. Imports touch many pages at once, so every project has a staging run and a rollback step before anything reaches your live site. We also keep a short runbook for your team.

The import pipeline

Six stages between a source file and a live page.

A one-off upload and a scheduled import look similar on screen. Underneath, the scheduled version needs rules for every case that can go wrong.

Five stages of an import: fetch, map, validate, match and write with log
Five stages every imported record passes through.

What happens to each record

  • Fetch. The source is read on a schedule from a file, feed or API, with timeouts and a record of what was received.
  • Map and clean. Fields are renamed, units and dates normalised, HTML tidied and categories matched to your own taxonomy.
  • Validate. Required fields, formats and sensible ranges are checked. Bad records go to a review list instead of the site.
  • Match. A stable external ID decides whether the item already exists, so updates change the old page instead of creating a copy.
  • Write and log. The page or product is created or updated, images are attached and the outcome is logged with the reason.

This work is built on our custom WordPress plugin practice, so rules live in code you own.

What gets imported

Content types we bring into WordPress.

Imports differ by content type. Each has its own traps, and each needs its own rules.

WooCommerce products

Titles, variants, prices, stock, images, attributes and categories from supplier files or a stock system, updated on a schedule.

Posts and pages

Articles from another site, a CMS export or a database, with authors, dates, categories, images and internal links preserved.

Job listings

Postings pulled from approved portals or feeds, with expiry dates, locations, salary fields and structured data for search.

Directory and listing entries

Businesses, properties, events or courses stored as custom post types with filters that stay fast at scale.

Coupons and deals

Offers from affiliate networks with start and end dates, so expired items disappear without manual cleaning.

Users and customers

Members or customers moved from another platform, with roles mapped and passwords handled safely through reset flows.

Choosing the tool

Plugin, custom importer or a middle layer.

Not every import needs custom code. We choose the lightest tool that will still be reliable at your volume.

How we make the choice

  • A plugin such as WP All Import. Good for clean CSV or XML files that rarely change and need modest mapping. Quick to set up, limited when rules get complex.
  • A custom importer plugin. Best when the source is an API, the rules are unusual, or the volume is high. Built with WP-CLI and Action Scheduler for batches.
  • A middle service. When the source is messy, a small service cleans and normalises data first, then sends tidy records to WordPress through its REST API.
  • Hybrid. Many projects use a plugin for the first load and a custom job for daily changes. We say so when it makes sense.

Setup on a WooCommerce store usually pairs with custom WooCommerce plugins.

Table comparing an import plugin, a custom importer and a middle service for WordPress imports
Import plugin compared with a custom importer and a middle service.
Ongoing sync

One-way, two-way or on demand.

Importing once is a migration. Keeping two systems in step is a different job, with a rule for who wins when they disagree.

How we set direction

  • One-way from the source. The other system is the master and WordPress is a display copy. Simple, safe and the right choice for most catalogues and feeds.
  • Two-way with a winner. Changes flow both ways, and a written rule names which side wins per field. Orders and stock often follow this pattern.
  • Triggered by events. Webhooks push a change the moment it happens, with a nightly full check as a safety net for any missed message.
  • Jobs and listings. Items carry start and end dates. Expired ones leave search and show a clear closed notice, instead of staying live and misleading visitors.

For other kinds of connection work, see API integrations.

Three sync patterns: one-way from source, two-way with a winning side and event triggered updates
Three sync patterns and where each one fits.
How the project runs

Sample data first, then the full load.

We prove the logic on a small sample before the full dataset ever touches your live site.

  1. 01

    Study the source

    We read real files or API responses, note quirks, missing values and update patterns, and agree who owns the data.

  2. 02

    Design the mapping

    A sheet lists every source field, its target in WordPress and the rules for blanks, formats and duplicates.

  3. 03

    Build on staging

    The importer is built and run on a copy of your site, with a few hundred records and then a larger test batch.

  4. 04

    Review the log

    You and we read what was created, updated, skipped and rejected, and adjust rules until the results are right.

  5. 05

    Run the full load

    The complete dataset is imported in batches, with the site watched for speed and errors, and a way to pause.

  6. 06

    Schedule and monitor

    Daily or hourly sync begins, a summary email is sent after each run and failures raise an alert.

Data rules

The rules that stop imports from making a mess.

Most import horror stories come from missing rules, not from bugs. These rules are agreed before any import is switched on.

Six data rules for WordPress imports: external ID, no doubles, safe deletion, images, protected fields and logging
Six rules built into every import we deliver.

What we always define

  • Stable external ID. Every record carries the source's own ID in a protected field, which is how matching and updates stay accurate.
  • Update or create, never double. The same item imported twice changes one page. Title or slug matching alone is never trusted.
  • Safe deletion. Items missing from the source are hidden, marked as expired or archived by a clear rule, not erased without a review step.
  • Image handling. Images are downloaded once, resized, given alt text and checked for duplicates, so the media library does not balloon.

Sites with many imported pages benefit from WordPress performance work on queries and indexes. Most import problems are decided in the mapping sheet, not in the code, which is why we write it with you before the first line of code.

Risks and answers

What can go wrong, and what prevents it.

Imports touch a large amount of data in one go. This table lists the main risks and the control that handles each.

Import risks and controls
CriteriaRiskControl
Duplicate pagesMatching on a stable external ID and a unique index
Server timeoutsSmall batches, a background scheduler and resume points
Overwritten manual editsProtected fields that the import never changes
Bad data going liveValidation, a review list and draft status for doubtful items
No way backBackups, run IDs and a reverse step for the last batch
Questions

Import and sync, answered.

Answers below come from site owners with supplier feeds, job feeds and large content moves.

Can you import products into WooCommerce from a supplier feed?

Yes. We map the supplier's fields to WooCommerce products and variations, handle prices, stock and images, and schedule updates. Rules decide what happens to products the supplier removes or discontinues.

How do you avoid duplicate posts?

Each imported item stores the source's own ID, and the importer matches on that ID instead of titles or slugs. A unique index on the ID backs this up, so even a repeated run cannot create a copy.

Will an import slow down my site?

It can, if it is careless. We run imports in small background batches, avoid peak hours, keep queries light and watch server load. Heavy first loads can be done on staging and moved across.

What if the source data is messy?

We clean what is safely cleanable, such as spacing, case and formats, and send the rest to a review list. Nothing doubtful is published automatically, and you receive a summary of what needed attention.

Can the import update only the fields that changed?

Yes. The importer compares a fingerprint of the source record with the stored one and writes only when something changed. This keeps runs fast and protects fields that your team edits by hand.

Can you import from an API instead of a file?

Yes. We handle authentication, pagination, rate limits and retries, and store a log of requests. Where the source is another website, we confirm that you have the right to use its data first.

What affects the cost of an import system?

The number of sources, the cleanliness of the data, how many content types and custom fields are involved, how often it must run, whether images are included and how much logging and review tooling you want.

Let us talk

Stop copying data by hand. Let it sync itself.

Tell us where the data comes from and where it should land. You will get a short written plan with the mapping, the rules for duplicates and the points that decide cost. We also document the schedule, the logs and the steps to pause an import, so your team is never locked out of its own site.