Skip to content

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.

A release moving along a pipeline: scratch org, integration, UAT — currently held for two approvals — and production, with a separate hotfix route that bypasses UAT.
  1. Scratch org

    feature branch

  2. Integration

    merge + validate

    hotfix route branches here

  3. UAT

    2 approvals held

    release/2026.09

  4. Production

    Thu 18:00 window

How it works

Your release process, described once and then enforced.

  1. 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.

  2. 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.

  3. 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.
release/2026.09 → production

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);
approved by 2 of 2 Promote

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.

Promote to Dev corrected here
  • 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.

Promote to UAT inherited
  • 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.
Tariff Both, every month
Environments all 7 counted
every sandbox and org under management
plus
Active seats 3 of 11 counted
anyone who ran a deployment this month

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 org

Bring 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