Skip to main content

Product mapping import and export

Mapping offers one at a time is fine for a handful. For a few hundred, use the round trip: export the catalogue → edit the SKU.io SKU column in a spreadsheet → upload the same file back.

Both buttons are at the top right of the Products tab: Import Mappings and Export.

The file is designed to round-trip

The export headings and the importer's expected headings are the same strings. An exported file can be edited and uploaded back without renaming a single column — no template juggling.


Export

Getting the file

Click Export on the Products tab. If the catalogue is empty, the button is disabled and the tooltip reads: "There are no offers to export yet — run a catalogue sync first."

The dialog asks for two things:

ChoiceOptions
Formatxlsx (default) or csv
ScopeWhich rows to include — see the table below
ScopeWhat you get
Filtered (default)Every row matching the filters and search currently applied to the table — across all pages, not just the visible one.
Current pageExactly the rows visible on screen.
SelectedOnly the rows you ticked.
AllThe entire catalogue. This scope deliberately clears your filters — "all" means all, not "all that matched".

The file downloads immediately as veracore-products-<timestamp>.xlsx (or .csv). The catalogue is small enough that the export streams back synchronously — there is no queued job to wait on, and nothing lands in the job tray.

Columns

The sheet is named VeraCore Products. The export mirrors the columns you have visible on the table, so hide Owner with the column selector and it will not be in the file:

HeadingSourceNotes
ItemThe VeraCore offer IDThe match key. Always included.
TitleOffer title at VeraCore
SKU.io SKUThe mapped product's SKUThe only editable column. Always included. Blank when unmapped.
MappingMapping stateOne of Mapped, Mapped (manual), Needs review, Unmapped.
OwnerVeraCore owner IDWhich client account owns the offer at your 3PL.
UOMUnit of measure
StatusOffer status at VeraCore
Last SyncedTimestampConverted to your account timezone.
Item and SKU.io SKU are always in the file

Those two are re-added server-side no matter what you hide. Without them the file could not be uploaded back, so a column preference can never quietly produce a broken round trip.

Five further columns exist in the export but are not table columns, so they only appear when the export endpoint is called directly without a columns parameter (in which case you get all thirteen):

HeadingSource
SKU.io ProductThe mapped product's name
Product TypeVeraCore product type
Multi-Product OfferYes / No — whether the offer bundles several products
BOM ProductsHow many products the offer contains
Lot TrackedYes / No

Import

What it does — and does not do

The importer only moves the mapping. It changes which SKU.io product sits behind an offer, and nothing else.

  • It never creates an offer. The catalogue belongs to VeraCore and arrives through the product sync, so an Item the sync has not seen is an error, not an insert.
  • It never changes an offer's title, status, or any other VeraCore field.
  • It never clears a mapping. See the blank-cell rule below.

The file

Only two columns are required. Everything else in an exported sheet is ignored.

Column headingRequiredTypeWhat it means
ItemYesTextThe VeraCore offer ID. The match key — matched case-insensitively against the mirrored catalogue.
SKU.io SKUYesTextThe SKU of the SKU.io product this offer should map to. Matched case-insensitively.

A blank template with those two headers is downloadable from step 1 of the import dialog. Its sample row is:

ItemSKU.io SKU
VC-1001SHAKER-BLK

An exported file and a downloaded template are interchangeable inputs — the headers are identical.

The match key and update behaviour

Rows are matched on Item. Every row is an update to an existing offer:

SituationResult
Offer was unmapped, row names a valid SKUMapped — counted as created
Offer was mapped, row names a different valid SKURe-pointed — counted as updated
Offer was mapped, row names the same SKUSkipped, with the warning "Already mapped to this SKU.io product — nothing will change."
SKU.io SKU is blankSkipped — the offer is left exactly as it is
Both columns blankSkipped as a trailing spreadsheet row
A blank SKU does not unmap

This is the single most important rule in the file format. Export 556 rows, edit three, upload it back — the other 553 blanks are left alone, not wiped. Clearing a mapping stays a deliberate act: unmap the offer from its row in the table.

Mappings applied by import are recorded as manual matches, which is why they are never overwritten by the automatic matcher on a later catalogue sync.

The four steps

The import dialog walks through Upload → Map Columns → Validate → Import.

Validate is a full dry run: every row is checked against the live catalogue and your product list, and you see the exact counts and per-row errors before anything is written. Nothing changes until you confirm on the last step.

Import is partial, not all-or-nothing: valid rows are applied and invalid rows are reported. Fix the reported rows and upload again — re-running a file that is already applied is safe, because unchanged rows are skipped.

Validation messages

Each of these appears against the offending row in the Validate step.

MessageCauseFix
Item is required.The Item cell is blank but the row has a SKU.Fill in the VeraCore item ID, or blank the whole row.
Item 'X' is not in this integration's catalogue. Run a catalogue sync first.The offer ID is not mirrored in SKU.io.Run a catalogue sync, then re-upload. If it still fails, the item does not exist at VeraCore under this connection.
Item 'X' appears more than once in this file.Duplicate offer rows.Keep one row per offer.
SKU.io SKU 'X' was not found.No SKU.io product has that SKU.Correct the SKU, or create the product first.
SKU.io SKU 'X' appears more than once in this file — a product can back only one VeraCore item.Two rows point different offers at the same product.Decide which offer owns it.
SKU.io SKU 'X' is already mapped to VeraCore item 'Y'. Unmap that item first.The product is already claimed by another offer.Unmap offer Y from the table, then re-upload.

And one warning, which does not block the import:

MessageMeaning
Already mapped to this SKU.io product — nothing will change.A no-op row. It is shown rather than hidden so the preview counts add up.
One product, one offer

A SKU.io product can back only one VeraCore offer per connection. That constraint is what most of the error list above is protecting. The claim check runs against a snapshot taken before the file is applied, so in the rare case where an earlier row in the same file takes a product first, the later row is reported as an error during the import step rather than at validation.


  1. On the Products tab, filter to Unmapped (or Needs Review).
  2. Export with scope Filtered — you get only the rows that need work.
  3. Fill in the SKU.io SKU column in your spreadsheet. Leave rows you are unsure about blank.
  4. Import Mappings, upload the same file, and read the Validate step carefully.
  5. Confirm. The table reloads with the new mappings in place.

The in-app hint on step 1 says the same thing:

Export the table, edit the SKU.io SKU column, and upload it back — the headers already line up. Rows are matched on Item, and a row with a blank SKU.io SKU is left exactly as it is. To remove a mapping, unmap the offer from its row in the table. For a handful of items, the blank template below has the same two headers.

For the one-at-a-time path, see Map an offer to a product. For how the automatic matcher fills these in for you, see How offers are matched to products.

Last verified: