Salesforce Change Sets vs Metadata API: Which to Use
Salesforce change sets vs Metadata API deploys: where clicks still win, where files win, and why AI-built changes belong in a deploy you can read.
Salesforce change sets vs Metadata API is the deployment question every growing org hits eventually. One is a point-and-click bundle you build in Setup. The other is a deploy built from metadata files that any tool, script, or AI can read and send.
My position: change sets are fine for one admin moving a handful of changes now and then. The moment two people, or one person and an AI, are building in the same org, the deploy has to come from files. Not because files are fancier, but because a deploy you can read is a deploy you can review, validate, repeat, and undo.
Here is how the two actually differ, using Salesforce’s own documentation, and where each one belongs.
The short answer
| Change sets | Metadata API deploy | |
|---|---|---|
| How you build it | Click components into a list in Setup | A manifest and metadata files |
| Where it can go | Between orgs linked by a deployment connection | Any org you can authenticate to |
| Deleting components | Not supported | Supported with a destructive changes manifest |
| Dry run | Validate the inbound change set | checkOnly validation, no changes committed |
| Repeatable | Rebuild or clone by hand | Same files, same deploy, every time |
| Who reads it | Whoever opens the change set in Setup | Anyone, including source control and code review |
| Best for | Small, occasional admin changes | Anything built by more than one hand |
The first column is a tool. The second is a process. That difference is the whole post.
What change sets do well
Change sets exist for a good reason. An admin builds a field, a layout, and a Flow in a sandbox, adds them to an outbound change set, uploads it, and deploys it in production. No command line, no files, no new software.
The constraints are worth knowing before you rely on them. Salesforce’s Apex deployment guide notes that change sets are only available in Performance, Unlimited, Enterprise, and Database.com editions, and that a deployment connection has to exist between the sandbox and production before production can receive inbound change sets. Salesforce’s change set best-practices page adds two more: change sets are limited to 10,000 files, and you can’t use them to delete or rename components. Deletions happen by hand in the target org.
For a quarterly batch of picklist values and a new report type, none of that hurts. You click, you validate, you deploy. If that is your whole release process, you don’t need to change it.
Where change sets start to hurt
The trouble starts when the org has more than one builder, or when changes come more often than once a quarter.
They are hard to read. A change set is a list of component names. It does not show what changed inside the Flow or the class, so reviewing one means opening each component and comparing it to production by eye.
They don’t repeat cleanly. If you need to push the same change to a second sandbox, or redo it after a refresh, you rebuild the list. Miss a dependency and the deploy fails on the third try instead of the first.
They can’t remove anything. Retiring a field or an old trigger means a manual step in production, outside the change set, which is exactly the kind of step nobody writes down.
They don’t scale to more builders. Two people working in different sandboxes can each build a perfectly valid change set that overwrites the other’s work. Nothing in the tool tells you.
None of this is a bug. Change sets were built for a single admin moving clicks. Most orgs simply outgrow that shape before they notice.
What a Metadata API deploy adds
A Metadata API deploy sends a package of metadata files, described by a manifest, to an org. The Salesforce CLI, DevOps Center, and most third-party release tools all sit on top of it. What matters is what the deploy options give you, per the Metadata API deploy reference:
- A real dry run. Setting
checkOnlyperforms a validation that doesn’t commit any changes. A validation that passes its tests can then qualify for deployment without rerunning them. - Control over tests. You choose a test level.
RunLocalTestsruns every test in the org except those from installed managed and unlocked packages, and it is the default for production deploys that include Apex.RunSpecifiedTestsruns only the tests you name, but each class and trigger in the package then needs at least 75% coverage from those tests. - All or nothing in production.
rollbackOnErrormust be true for production deploys, so a failure rolls back the whole deploy instead of leaving half of it behind. - Deletions in the same deploy. A destructive changes manifest removes components as part of the release, so retiring a field is a reviewed change, not a manual chore.
And because the deploy is files, it can live in source control. You can see the exact line that changed, send the same package to three orgs, and keep a history of every release.
Where DevOps Center fits
Salesforce’s own middle path is DevOps Center. Per Trailhead, it treats a source control repository as the source of truth for project changes, manages branches for you, and lets both low-code and pro-code builders move changes through a pipeline with clicks.
If your team is all admins and you want out of change sets without learning a command line, start there. It is still a Metadata API deploy underneath. It just puts a click-driven interface on the file-based process.
Why this matters more once AI is building
Here is the part most comparisons skip. An AI that builds in your org does not click through Setup. It writes metadata: a Flow definition, an Apex class, a field, a permission set. That output is already file-shaped, so the deploy should be too.
Hand that work to a change set and you throw away its best property. The AI produced something exact and readable, and the change set turns it back into a list of names nobody reviews. Keep it as a Metadata API deploy and every AI change gets the same treatment as a senior developer’s: validated first, tested, deployed whole or not at all, and readable afterward.
This is the line we drew with Sentinel. When your AI builds in Salesforce through Sentinel, deploys go through the Metadata API, sandbox first, with tests required. Every action is logged and a snapshot is taken before each deploy, so a change you regret is a change you can find and walk back. That is not a promise your AI won’t make a mistake. It is a promise you’ll see the mistake and recover from it. The longer version of that argument is in AI code deployment safety and why snapshots beat approval gates.
If you are deciding how far to let an AI into your org at all, how to connect Claude to Salesforce the safe way covers the setup, and an MCP server vs an AI developer covers the difference between letting an AI read your org and letting it build in it.
How to choose
Answer these in order and stop at the first yes.
- Is it one admin, a few declarative changes, a few times a year? Change sets. Validate before you deploy and keep a short note of what went out.
- Is it a team of admins who want history and review without a terminal? DevOps Center.
- Is there Apex, more than one builder, or more than one target org? Metadata API deploys from source control, through the CLI or a release tool.
- Is an AI writing any of the changes? Metadata API, sandbox first, tests on, with a record of every deploy. No exceptions.
The tool question tends to follow a people question. If you are still deciding whether the work needs a developer at all, Salesforce admin vs developer and Flow vs Apex are the right next reads, and if the backlog is mostly small jobs, see the small Salesforce projects nobody wants to quote.
The takeaway
Change sets are a good tool for a shape of work most orgs leave behind: one person, a few clicks, rarely. Once the org has more builders, or an AI on the team, the deploy should be files you can read, validate, and repeat, and the record of what shipped should outlive anyone’s memory of it.
If you want to see what a logged, sandbox-first deploy looks like when your AI is the one building, that is a good thing to walk through live. Pricing is flat per Sentinel and is covered on a short demo call.
KEEP READING
Agentforce Alternative: Your AI as CRM Developer
Looking for an Agentforce alternative? Agentforce is an agent inside your CRM. Sentinel makes your AI the developer of it — a different answer to AI plus CRM.
Agentforce vs Copilot vs an AI That Builds Your CRM
Agentforce vs Copilot is the wrong comparison. Both put AI inside your work. Neither changes how your CRM works — here's the third category.
Ready to see what AI can do for your business?
Start a Conversation