CSV Mapper

Free, no sign-up

Why re-importing your store list creates duplicates

Every importer decides differently whether a row updates a location or adds a new one. Get it wrong and you get two of every store, or lose some. Here is the rule for each platform, and how the tool's compare step keeps your IDs.

Drop your spreadsheet here

or

Read on your computer, never uploaded.

No file?
Try one:

Pick one to see what CSV Mapper does with it.

How each platform matches rows

PlatformUpdate keyA row without the keyLocations missing from the file
StockistNoneAdded as a new locationRemoved only if you tick "This import contains a complete list of all stores"
WP Store Locatorwpsl_idCreated as a new storeNot documented. Deleting is a separate wpsl_id-only import
Agile Store Locatorupdate_idInserted as a new storeNot documented
Storepoint, Quick ImportName and addressAdded as a new locationLeft alone
Storepoint, managed importRows of that importAddedRemoved
Google Business ProfileStore codeA new store code creates a locationNot documented
MetaLocatorID, an External Key field, or Address, City, State and PostalCodeDepends on the import modeDepends on the import mode

The traps

  • Stockist: a linked Google Sheet adds rows too. Delete existing listings before the first sync.
  • WP Store Locator: an unknown wpsl_id is not added. It is skipped with "Update failed! The provided wpsl_id doesn't belong to a store location".
  • Agile Store Locator: IDs only appear in an export made with "Export with Store IDs" switched on.
  • Storepoint: renaming a store or editing its address makes it a new location. Rows with the same name and address in one file are merged into one pin.
  • Google: changing a store code, or a spreadsheet stripping its leading zeros (0004 becomes 4), creates a duplicate. Store codes cannot be changed by spreadsheet.
  • MetaLocator: without an ID or External Key, editing an address breaks the match. Pick "Update Existing and Insert New" when you import.

Re-import without duplicates

  1. Export your current locations from the platform. For Agile Store Locator, switch on "Export with Store IDs". For MetaLocator, include the ID.
  2. Load your new list in the tool above and pick the platform.
  3. On WP Store Locator and Agile Store Locator, answer Yes to the existing-stores question and drop your current export. You see how many stores will update, which are new and which are missing.
  4. Where the platform has an ID column (wpsl_id, update_id, MetaLocator's ID), we copy each ID onto the matching row so the import updates it. Rows are matched on that ID when both files have it, otherwise on the details the platform matches on.
  5. For each location missing from your new list, choose keep or remove. Nothing is dropped silently.
  6. Download, then import using the steps shown for your platform.

Questions

Will a Stockist import delete my existing stores?

Only if you tick "This import contains a complete list of all stores". Then Stockist replaces your list with the file. Without it, the rows are added next to your existing ones.

How do I update WP Store Locator stores without creating duplicates?

Export your stores first and keep the wpsl_id column when you import again. Rows with a wpsl_id update that store. Rows with an empty one are always added.

Why does re-importing into Agile Store Locator duplicate my stores?

Rows without an update_id are inserted as new stores. Export with "Export with Store IDs" switched on and keep the update_id column.

Sources

Last checked against the vendor docs on 2 October 2026. Platforms change their importers, so check the source if something looks different.