Choose the record ID
The record ID column lets next week's file update an item instead of creating it twice: what makes a good ID, how matching works without one, and what changing it does.
- 4 min read
- Updated October 14, 2026
The record ID is a column whose value identifies one item and never changes for that item, in this file and in every later one. It is how Content Uploader knows that row 12 this week is the same article as row 12 last week, so that it updates the article instead of publishing it a second time.
In the editor, Record ID is under Destination. A new configuration suggests a column named ID, External ID, Record ID or SKU if your file has one.
A good ID#
- is different for every item: nothing in one file may repeat it;
- is the same for an item in every file: it does not depend on the row's position, so rows can be reordered, added or removed;
- is short and plain: up to 255 characters, and the column may hold letters, digits and punctuation:
HLJ-001,10234,SKU-8841-B,summer-guide; - does not change when the content changes: a title, a price or a date is a poor ID, because editing it would make a new item.
Good sources: your own database or CMS ID, a product SKU, a stable code you add yourself. Poor sources: the row number, the title, the slug when you edit it, a date.
If your data has no such column, add one: type 1, 2, 3 … or HLJ-001, HLJ-002 … once, and keep each value with its row from then on (do not renumber after sorting or deleting).
What happens with the ID#
- A row whose ID has not been published before is new.
- A row whose ID was published before is compared with what was last published and with the site's current state, and is updated, left unchanged, or skipped (for example, because it is in the site's trash).
- A published item that is missing from the file is not touched. Content Uploader never deletes anything.
- The ID is not shown on your site. Content Uploader keeps it, with the site's own ID for the item, in the connector's records on your site (so retries and re-installs cannot create duplicates), and in your workspace's history.
The ID is also shown in the review next to each row (Row 3 · ID HLJ-002) and on the Sites page next to each result.
Content Uploader only updates what it created#
It recognises items by what it published earlier. A post, page or article that already existed on your site before you started using Content Uploader is not matched by title, slug or ID: a row with the same title creates a new item (WordPress or Joomla then gives it a different slug or alias). To bring existing content under Content Uploader's control you would publish it from a spreadsheet first and tidy up the old copy by hand. WooCommerce products are the exception: a shop's existing products can be found by their SKU and updated, with a review that lists what differs (update products already on your shop). Plan your first import accordingly, and try it on a staging copy.
Without an ID column#
Choose No ID column: match by slug or title if your sheet has no suitable column. Content Uploader then identifies a row by its slug (when the row has one) or else its title, compared the way people compare: capital letters, extra spaces and markup do not matter.
- The configuration must take its Title or Slug from a column or a template, because that is what identifies a row. A row with neither fails with Record ID: this row has no title or slug to match it with the item published before.
- The row's category (the full path with its parents) breaks ties: if two published items share a title, the one in the same category is chosen. If exactly one row and one published item are left without a match, they are treated as the same item whose category changed.
- Two rows with the same title in the same category cannot be told apart: the first counts and later ones are rejected (duplicate rows).
- Each new item gets a generated identifier of its own (
cu-and a code) that is kept for good; the review hides it. - If the title (or slug) changes, it is a new item, and the old one stays on your site. Nothing is deleted. Adding a slug column later makes every row look new, because the key changes from title to slug; the review lists them as new before anything is published.
This is convenient for a one-off import. For anything you will repeat, a real ID column is safer.
Changing it later#
Treat the record ID as part of the configuration's identity. If you choose a different column or switch between an ID column and no ID, items are recognised by the new value, so the review will show rows as new that you consider the same items. The old items stay on the site. If this happens by mistake, do not publish: restore the previous mapping and check the file again (edit and versions).
Related#
Was this article helpful?
Related articles
- Preparing your spreadsheetDuplicate IDs, titles and rowsWhat happens when two rows share an ID or a title in one file, the error each gets, why the first row wins, and why the same item next week is an update, not a duplicate.
- Reviewing and publishingHow rows are matched to items on your siteHow Content Uploader decides that a row is new or the same item as before: by record ID, or by slug or title with the category as tiebreaker.
- Importing dataCreate a configurationA configuration remembers a destination, a record ID column and how each column maps to fields: how to create one, what the editor's parts do and how versions work.
- Getting startedImportant concepts and terminologyThe words this documentation and the app use, in the order you meet them: workspace, site, connector, configuration, record ID, run and more.