Skip to main content

SF-0230 · Concept · Medium

Which fields can be used to update or upsert the records in salesforce?

✓ Verified by Vikas Singhal · Last reviewed 5/17/2026 · Updated for Spring '26

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
  • Email
  • Auto Number

To be a valid upsert key, the custom field needs:

  1. External Id attribute checked in field setup.
  2. Almost always Unique checked as well — otherwise two records could match and the row will fail with DUPLICATE_EXTERNAL_ID.
  3. (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.