Delta Import (Incremental Sync)
If you sync the same file repeatedly (like a daily supplier feed), most rows are identical to last time. Delta Import skips those and only processes the rows that actually changed.
Why Use Delta Import
Say you have a 1 million product supplier feed that runs every night. In most days, only 500 products change price. Without delta:
- Every row is processed: 1 million writes
- Takes 3+ minutes
With delta:
- Only 500 rows are processed
- Takes 2 seconds
That is 150x faster.
How It Works
- On the first import, the plugin computes a SHA-256 fingerprint of each row
- Fingerprints are saved in a database table (
wp_wkaie_row_hashes) - On the next import, the plugin compares each row to its saved fingerprint
- If the fingerprint matches, the row is skipped (treated as unchanged)
- If the fingerprint differs (even by one character), the row is processed
How to Turn On Delta Import
Screenshot: Step 3 — Delta Import lives alongside the preview/dry run, so you can confirm what will be skipped.
On the Quick Import Wizard
- Wizard Step 3 → Scroll down to Delta Import
- Check Skip unchanged rows
- (Optional) Pick which columns count for the fingerprint
On Scheduled Jobs
- Edit the job
- Tab: Advanced
- Check Delta Import
- Save
Delta Import works on any entity, not just products.
Picking the Right Hash Columns
By default, the plugin hashes every column in the row. This means:
- If you change even a whitespace character, the row is considered changed
- If a new column is added (even unused), every row changes
You can pick specific columns to hash, like only the ones that matter.
Example
Your file has 50 columns: SKU, Name, Price, Stock, plus 46 others that never change. You only care about price and stock changes.
Set hash columns to:
SKUPriceStock
Now changes in the other 46 columns do not trigger updates.
Watermark Approach
For very large imports, the plugin also supports a watermark approach:
- Pick a column like
date_modifiedorlast_updated - Plugin remembers the highest watermark from the last run
- Next run, only rows with a higher watermark are processed
This is simpler than hashing but requires your source to have a reliable modified-date column.
When to Use Watermark
- Source has a
date_modifiedcolumn - You trust that column to update when data changes
- You want the fastest possible delta
When to Use Hash (SHA-256)
- Source does not have a reliable modified-date column
- You want safety — hash catches any byte change
- You are okay with the small overhead of computing fingerprints
Reset Delta
Sometimes you want to force a full re-import (after a plugin update, schema change, etc.).
How to Reset
- Go to
Webkul WC Addons → Advance Import Export → Settings → Advanced - Click Reset Delta Hashes next to a job
- Next import processes every row
Or via WP-CLI:
wp wkaie delta reset --job=42
Delta Import with Google Sheets
Screenshot: Google Sheets source — paired with Delta Import for a 5-minute live sync.
This is the killer combo. Your team edits a Google Sheet. The plugin runs every 5 minutes. Only changed cells update the store.
Setup
- Create a scheduled job with source = Google Sheets
- Turn on Delta Import
- Set schedule to Every 5 minutes
- Activate
Now your store auto-syncs with the sheet. Edit a cell, wait 5 minutes, see it in the store.
Performance Impact
Screenshot: Results page — showing total time and phase breakdown, where delta savings show up vividly.
Delta Import has two costs:
- Storage: Each row's fingerprint takes ~48 bytes in a database table. 1 million products = ~48 MB
- Compute: Hashing is fast (microseconds per row)
For a 1 million row table, the delta lookup takes about 1 second. Compared to the 3 minutes of a full re-import, that is a massive win.
What Counts as "Changed"
Every byte matters. These all count as different:
Red ShirtvsRed shirt(case)Red ShirtvsRed Shirt(trailing space)10.00vs10(format)"Red Shirt"vsRed Shirt(quotes)
If your source includes random unrelated changes (like adding a trailing whitespace), delta will treat them as changed.
Workaround — Normalize First
Before hashing, you can normalize values:
- In the wizard → Advanced → Delta Settings
- Turn on Normalize before hash
- Options: Lowercase, Trim whitespace, Strip HTML
Compared to the WP All Import Caching
If you used WP All Import before, their "caching" feature is similar but less robust:
| Feature | WP All Import | Our Plugin |
|---|---|---|
| Skip unchanged rows | Partial (based on URL) | Full (row-by-row hash) |
| Custom hash columns | No | Yes |
| Watermark option | No | Yes |
| Reset individual jobs | Manual | One-click |
| Hash algorithm | — | SHA-256 |
Troubleshooting
| Problem | Fix |
|---|---|
| Every row is "changed" on second run | Check for trailing whitespace or case changes. Turn on Normalize |
| Delta says "no changes" but there should be | Reset Delta Hashes, then re-import |
| Watermark column returns null | Your source does not have a date_modified column. Switch to hash |
| Hash table too big | Clean up old jobs: wp wkaie delta cleanup --older-than=30d |
Related Pages
- Scheduled Jobs — Run delta imports on a schedule
- Import Modes — Use with Create + Update mode
- Google Sheets source — The perfect pairing
