Ottermerce

Bulk catalog import, export
and editing for BigCommerce

Sign in Start free

For BigCommerce merchants and agencies

See every write before it happens.

Move twelve kinds of store data in and out as CSV or Excel — or skip the spreadsheet and edit prices, stock, SKUs and metafields from the browser: a filtered bulk edit across thousands, or a grid you fill in a page at a time. Either way, you read the run first.

No card. The free plan is a working plan, not a countdown.

1 · UploadCSV or Excel, or a bulk edit
2 · Previewevery row, nothing written
3 · Applyonly when you say so
Dry run spring-catalog.xlsx Nothing written
2 Update SKU SLCTBS — price 49.00 → 53.90
3 Create SKU TWL-CHM-02 — under Home / Linens
4 Update variant 4231 — stock 12 → 40
5 Delete image 265 — matched by Image ID
6 Fail “Vintage Mug” matches 3 products The name is not unique, so nothing is guessed.
Rows
6
Items
4
Failures
1
Writes sent
0
Fig. 1 The report a merchant reads before deciding. Every row is listed, not a sample, and nothing has been sent to the store.
The fear Will this file destroy my store?

BigCommerce has no undo. One wrong column on 4,000 rows is a weekend of manual repair.

What others answer We validate your file

A separate checker guesses at your columns. It can pass a file the real import then chokes on.

What we answer We run your file

Same code, writes recorded instead of executed. If the preview is clean, the run is the same run.

01 The dry run

One pipeline, two endings

Most tools validate your file. Ottermerce runs it — the same mapper, the same product lookup, the same errors — and records what it would have written instead of writing it.

INPUTYour fileCSV, Excel or a bulk edit
01Parseencoding and delimiter detected
02Mapcolumns matched, typos named
03Look upproducts, categories, brands
04Validateper row, against the real store
The write step The only place the two runs differ — and it is the last one.
Dry run Writes recorded 0 sent · full per-row report
Real run Writes executed same rows · same failures

The branch is the last step, not the first. That is the whole trick, and it is why row 6 fails identically in both — a preview and a run are the same event with one switch flipped at the end.

  • Every row of an uploaded file previewed, not a sample
  • Ambiguous matches named, never guessed
  • Unknown columns flagged with a spelling suggestion
  • Checks your API token can reach the resource before queueing anything
  • A dry run never counts against your daily limit
Analyze one GET
file         spring-catalog.xlsx  2.4 MB
rows         1,284    items  412 products

recognised   38 columns
unknown      "Modifer Name"
             did you mean "Modifier Name"?

token        can reach Products
plan         412 of 25,000 items — within Growth
Fig. 2 The file check that runs before anything is queued. A misspelt column is named with the correction rather than silently dropped.
02 What it moves

Twelve kinds of store data, one file format

Every export is written with the column names the importer reads, so a file that comes out can be edited in Excel and put straight back in. Each type has its own safety rule — open one to read it.

01

Products

Fields, custom fields, metafields, images, videos, bulk pricing tiers and modifiers.

Safety rule

A name matching three products fails the row and lists their ids rather than editing one.

02

Variants

Options and swatches, per-variant SKU, price, stock, identifiers and metafields. They ride inside the product file rather than a file of their own.

Safety rule

Two variants given the same SKU stop the whole apply, before anything is written.

03

Categories

Full paths, renames, moves and metafields. Parents are created before their children.

Safety rule

BigCommerce deletes a category's whole subtree with it, so a delete is refused unless Cascade says otherwise.

04

Pages

Parent by name rather than raw id, so a file works in a second store too.

Safety rule

A page is never re-created to change it — that would issue a new URL and break every link to it.

05

Blog posts

Bodies, tags and publish dates, in the date format BigCommerce actually accepts.

Safety rule

Titles are not unique, so a title matching more than one post fails and names them rather than editing whichever came first.

06

Redirects

URL and entity redirects, upserted in batches rather than one call per row.

Safety rule

Upsert on From Path, so re-running a file cannot leave duplicates behind.

07

Brands

SEO title, meta, keywords, image and URL. Created on demand when a product names one.

Safety rule

REPLACE is refused: re-creating a brand would give it a new id and leave every product that pointed at the old one with no brand.

08

Customers

Several addresses per customer, groups by name, and custom attributes.

Safety rule

Force Password Reset is the one column that mails anyone, and an export never writes it.

09

Customer groups

Category access and discount rules, with amounts trimmed so a round trip does not drift.

Safety rule

Access set to specific with no category ids fails, rather than hiding every category.

Migration toolkit Four more types come along for a move rather than for every day: price lists, coupons, product reviews and gift certificates. Same file format, same dry run, same per-row results. A gift certificate carries a live balance, so issuing one from a file that does not say what is left on it is refused rather than re-issued at full value.
03 Bulk edit

Edit hundreds of products from the browser

Filter your catalog, pick an operation, preview it, apply it. Adjust prices by a percentage, set a brand, add or remove categories, add or delete metafields and custom fields. Or open one of the two grids and edit the cells directly.

Bulk edit 128 matched · first 25 previewed Preview
1 · Filter 2 · Operation 3 · Preview 4 · Apply
Filter brand = Sagaform · category = Home / Linens
Operation Price → increase by 10%
1 Update SKU SLCTBS — price 49.00 → 53.90
2 Update SKU OTL — price 89.00 → 97.90
3 Fail SKU LPJ has no price stored A percentage has nothing to work from, so the product is left out and counted rather than given an invented price.
Matched
128
Previewed
25
Would change
24
Skipped
1
Writes sent
0
Fig. 3 The same four steps every time: filter, operation, preview, apply. The preview is generated by the import pipeline, not by a separate estimate — it runs the first 25 matches so you see real rows without waiting on thousands. Apply covers the whole filter.

A bulk edit is an import.

Same pipeline · same preview · same history

It generates the file and runs it through the same pipeline, so you get the same per-row results — and the generated file is kept as the audit trail for 30 days. The per-row results stay in History after the file itself is cleaned up.

  • A variant grid across the whole catalog — SKU, price, sale, cost, stock, weight, UPC
  • Bulk operations that fill the cells first, so the table is the confirmation step
  • One metafield down every product, variant, category or brand
  • Never deletes a field it was not showing you
A field you never saw is kept, not dropped If the store has gained a metafield since the page was opened, it is carried through the save untouched and named in the summary. Deleting data you did not know about is the worst thing a bulk tool can do. Removing a field you did see is still a removal — the two cases are told apart rather than both refused.
Excel or CSV Encoding and delimiter are detected for you — UTF-8, BOM, Windows-1252, UTF-16, comma, semicolon, tab or pipe. Exports open cleanly in Excel, and a SKU like 0012345 keeps its leading zeros when you download an export as a spreadsheet, because every cell is written as text. Open the raw CSV in Excel and Excel will still strip them — that is Excel, not the file.
04 Pricing

Limits are the trial

Limits are per import and per day. A dry run never counts against them — finding out a file is too big should not cost you the day's quota.

Rate card · monthly

Early access: paid plans are arranged by hand There is no checkout yet. Start on Free, and write to us when you need a higher ceiling — we will move your account and agree the billing with you directly. We would rather say that than put a card form in front of you before it is ready.
Free

$0

Evaluate it on a real file, for as long as you like.

Items per import
100
File size
5 MB
Imports per day
3
Exports
All types
Queue
Low

Start free

Starter

$39/mo

One store, regular catalog maintenance.

Items per import
5,000
File size
25 MB
Imports per day
15
Exports
All types
Queue
Standard

Start free

Most stores Growth

$59/mo

Seasonal reprices and supplier feeds, end to end.

Items per import
25,000
File size
100 MB
Imports per day
50
Exports
All types
Queue
Standard

Start free

Scale

$99/mo

Agencies moving several stores at once.

Items per import
200,000
File size
500 MB
Imports per day
Unlimited
Exports
All types
Queue
Priority

Start free

An item is a product, not a row — a product with twenty variants counts once. Prices exclude any tax that applies where you are.

05 Questions

Questions worth answering first

Do you store my catalog?

BigCommerce stays the source of truth: there is no copy of your catalog kept in sync. What Ottermerce does hold is the files you upload, the files it exports for you, the per-row result of each run, any shared metafield definitions you create, and your store credentials.

Import and export files are deleted after 30 days. An export file is a full dump of whatever you exported, so treat it as you would any download.

How do I connect a store?

Paste a store hash and an API token in Settings, or install the app from your BigCommerce control panel. Either way the app behaves identically.

What happens if a row fails?

That row fails and the rest continue. Every row gets a result you can read on screen or download as a CSV annotated with the original line numbers.

Can I undo an import?

No — and no tool honestly can, because BigCommerce has no undo. That is exactly why the dry run exists and why it takes the real code path.

Will it email my customers?

Only if you fill in the Force Password Reset column, which is the one field that makes BigCommerce send mail. Exports never write it, so a round trip cannot trigger it by accident.

What API permissions does it need?

Five: Products (which also covers categories, brands and price lists), Customers (customers and groups), Content (pages and blog posts), Sites & Routes (redirects) and Marketing (coupons and gift certificates).

The app makes no call to orders, carts, checkout or payments. Worth knowing precisely: BigCommerce grants scopes from the app listing rather than from what the code asks for, so the permissions screen at install is the authority. Read it, and tell us if it asks for more than these five.

Can I connect more than one store?

One store per account today. An agency running several stores needs an account per store — say so when you write in and we will sort it out rather than leave you paying four times.

Can imports run on a schedule?

No. Every run is started by a person looking at a preview, which is deliberate: an unattended import is one nobody read the dry run for. If you want a nightly sync from a feed URL, tell us what you are syncing — it is a different product and worth building properly.

Does it work with Shopify or WooCommerce?

Not today — BigCommerce only. The file format and the whole preview pipeline are platform-neutral by design, so another platform is a new set of API clients rather than a rewrite, but nothing is claimed until it is tested against a real store.

What if an import stops halfway?

Rows already written stay written — there is no rollback, because BigCommerce offers none. The results record exactly which rows completed, so you can cut the file down to what is left and run the remainder. This is the other reason to read a dry run first.

How long does a large import take?

The ceiling is BigCommerce's API rather than us: an import is thousands of individual calls and they are rate limited at their end. Work runs across four parallel workers, and a product with twenty variants costs far more calls than twenty simple products — so row count alone does not predict it.

Is there a contract?

No. The free plan does not expire. Paid plans are monthly and, while the app is in early access, arranged by hand rather than through a checkout.

Try it on a file you are afraid of

Upload it, run a dry run, read every row. Nothing is written until you say so.

Start free