CSV Mapper

Free, no sign-up

Get your stores into Agile Store Locator

Drop your spreadsheet. Get back the exact file it imports.

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.

What Agile Store Locator needsYou don't have to do any of it
  • Headings must be lowercase with no extra spaces, in the very first row, or the column is ignored.
  • Each store has an update_id. Keep it and a re-import updates the store. Leave it out and you get a second copy.
  • Saved as UTF-8, or accents break. Big lists import more reliably in batches.

You don't have to do any of this. Drop your file and we do all three. If you already have stores there, we'll ask for your export.

Also for: StockistWP Store LocatorStorepointGoogle Business ProfileYour own template

Agile Store Locator wants lowercase headers in row 1, from title to open_hours. Drop in your own spreadsheet above and we give you back that file.

The exact headers

This is the order the vendor wiki lists. The template itself is on the plugin's Import/Export page and we have not checked it against a downloaded copy. Columns for custom fields you created go after these. update_id is only included when you compare with an export that has store IDs.

update_id,title,description,street,city,state,zip,country,lat,lng,phone,fax,email,website,is_disabled,logo_name,categories,marker_id,logo_image,description_2,open_hours
Download this header row as a CSV

What Agile Store Locator needs

  • Headers "in the smaller case without any extra spacing", in row 1. Missing or capitalised headers give "0 rows updated".
  • A split address: street, city, state, zip and country. The wiki calls city, state and zip mandatory for accurate coordinates.
  • lat and lng are used as they are. If either is missing, the importer geocodes the row through Google, which needs a validated Google Server API key.
  • categories is one cell, separated by a pipe, like A|B. Sub-categories are written Main>Sub1|Main>Sub2. Categories that do not exist yet are created.
  • A comma delimiter. The wiki suggests opening the file in Google Sheets to check.

How updates and duplicates work

A row with an update_id updates that store. A row without one is inserted, so importing the same list again duplicates every store.

Store IDs come from an export made with "Export with Store IDs" switched on. Compare with that export in the tool and we copy each update_id onto the matching row.

From version 5.2.4 you can use your own id column instead, but only after adding the asl_csv_update_field and asl_csv_insert_store_id PHP filters and defining ASL_INSERT_ON_UPDATE. An id that is already in use is then rejected as a duplicate entry. We never write an id column.

What fails and why

  • "0 rows updated": headers missing or capitalised, a bad update_id, or a delimiter that is not a comma.
  • 504 Gateway Timeout or a request timeout on a big file: import 1,000 to 2,000 stores at a time, and include lat and lng so nothing needs geocoding.
  • "Geocode was not successful: REQUEST_DENIED": a Google key problem with its own page in the vendor wiki. Rows with lat and lng skip geocoding.
  • Encoding errors: the wiki has a "UTF-8 CSV File Error Fix" page. Our download is always UTF-8.

Questions

Can I import stores using an Excel sheet?

Yes, once it is saved as a comma-separated CSV with lowercase headers in row 1. Or drop the Excel file in the tool above and download that CSV.

Why does my import say "0 rows updated"?

Usually the headers are capitalised, missing or not in row 1. A bad update_id or a semicolon delimiter does it too.

Why does a large CSV import fail?

Big imports can time out, especially when every row needs geocoding. Import 1,000 to 2,000 stores at a time and include lat and lng.

Sources

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