The matching field controls which existing record gets touched. The rules are different for Update and Upsert.
Update
The match field is always the Salesforce Id — the 15- or 18-character record identifier. No other field will do.
If the Id in your CSV doesn’t exist (deleted, wrong org, typo), the row fails with INVALID_CROSS_REFERENCE_KEY or ENTITY_IS_DELETED. The field has to be the system Id.
Upsert
Upsert matches on the External Id field you nominate when you start the job, or on the Salesforce Id. The eligible field types:
- Text (
Text(80), etc.) — most common - Number
- Auto Number
To be a valid upsert key, the custom field needs:
- External Id attribute checked in field setup.
- Almost always Unique checked as well — otherwise two records could match and the row will fail with
DUPLICATE_EXTERNAL_ID. - (Recommended) Case-sensitive depending on your source — for instance, ERP IDs are usually case-insensitive, GUIDs are case-sensitive.
You can have up to 25 External Id fields per object (this limit was raised over time; double-check the current cap for your edition in the docs).
Field types that can’t be External Ids
- Checkbox / Boolean
- Date / DateTime
- Picklist / Multi-select picklist
- Currency, Percent
- Lookup / Master-Detail
- Long Text Area / Rich Text Area
- Formula
- Geolocation
Salesforce reserves External Id for stable, indexable, unique-per-record values. Things that change (lookups), aren’t unique (booleans), or aren’t single-string identifiable (dates) don’t qualify.
Why “Unique” matters more than people think
External Id alone says “this is an identifier from another system”. Unique is what guarantees the matching is one-to-one. Without Unique, two records can share the same value, and upsert blows up the moment it tries to write the third row.
Always pair the two attributes for an upsert key.
Auto Number as External Id — a special case
An Auto Number field can be flagged External Id. The pattern is rare but useful for cross-org sync: Org A’s auto-generated Inv-{0000} becomes the External Id, Org B upserts against it. Auto Number values are unique by construction.
The complete answer
Update is Id only. Upsert is Id or an External Id field — typically a Text/Number/Email/Auto Number that you’ve marked External Id and Unique. Anyone who confidently lists those rules in an interview has done real data work.
Verified against: Salesforce Help — External ID Field, Data Loader Guide — Upserting Data, Metadata API Developer Guide. Last reviewed 2026-05-17 for Spring ‘26 release.