Release management for Salesforce teams
One track from sandbox to production.
Define the route once. Switchtower moves metadata along it — with your Git history behind every step, readable diffs, and approvals only where you want them.
30 minutes, screen shared, your org's shape — not a canned demo.
-
Scratch org
feature branch
-
Integration
merge + validate
hotfix route branches here
-
UAT
2 approvals held
release/2026.09
-
Production
Thu 18:00 window
How it works
Your release process, described once and then enforced.
- 01
Draw the route
Name your environments and the order a change moves through them. Hotfix spurs, parallel release trains and long-lived UAT orgs are routes too — not exceptions you work around.
- 02
Put the gates where they belong
Approvals, validation deploys, Apex test thresholds and release windows attach to points on the route. Nothing is a fixed three-stage template you have to bend your process into.
- 03
Let it run
A change moves when its gate clears. Held releases say who is holding them and why, so the answer to “where is my deploy?” is a link rather than a Slack thread.
Git-native
Every step is a commit.
Metadata lives in your own GitHub or GitLab repository — the same one your developers already clone. Switchtower reads and writes it in the open rather than keeping a private copy you can only reach through a UI.
- Promotions are commits in your repo, with the author, the message and the diff you would expect.
- Reverting a release is reverting a commit. There is no parallel history living inside our database.
- Pull requests stay where your team already reviews them, with deployment checks reported back onto them.
Pre-flight
- Validation deploy against Production 3m 04s
- Apex tests — 412 passed 88% cov
- Destructive change: 1 field removed review
Diff
force-app/main/default/classes/QuoteSyncService.cls
+ private static Boolean useBatchPath = true;
− Database.update(quotes);
+ Database.update(quotes, false); Promotions that remember
Fix it once, not once per environment.
A failed deploy teaches you something — usually that a permission or a dependency was missing. Every other tool throws that away and makes you rediscover it at the next stage. Switchtower attaches it to the feature, so the corrected set is what gets promoted next.
- QuoteSyncService.cls
- Flow: Renewal_Alert
- Quote.Renewal_Date__c
- PermSet: Renewals — Read added
- PermSet: Renewals — Edit added
Deploy failed on two missing permissions. You fixed them here.
- QuoteSyncService.cls
- Flow: Renewal_Alert
- Quote.Renewal_Date__c
- PermSet: Renewals — Read from Dev
- PermSet: Renewals — Edit from Dev
Both permissions came along, labelled with where they came from.
The manifest is a file in your repository, so what a promotion carries is reviewable in a pull request like everything else — and a correction that was only ever meant for one environment can be marked as such rather than quietly following the change to production.
What it costs
You pay for the route, not the roster.
Two things go on the invoice: the environments you have under management, and the people who actually ran a deployment that month. Not everyone who happens to hold a login.
- Reviewers, approvers, release managers and admins: free.
- Guest seats for your implementation partner: free.
- A quiet month costs you less. That is the whole idea.
Both axes, always — not a menu to pick the cheaper one from. A quiet month bills fewer seats; it never bills fewer environments.
Get a quote for your orgBring us your worst release.
Thirty minutes, your org's actual shape, and an honest answer about whether we would help. If your bottleneck is not deployment, we will tell you that too.
Book a demo