# Switching cost when a tool is already in place

Use in step 5b whenever the company already pays for, or depends on, one of the candidates. Many "PostHog vs Mixpanel" or "Mixpanel vs Amplitude" requests come from a team that already runs one of them. A lower licence price is a reason to move only when the saving repays the move within the time the decision has.

## Contents

- Inputs
- Cost lines
- Payback rule
- Worked example
- Keep the current tool

## Inputs

- Current plan, billing unit and committed volume, from the billing page or the order form.
- Renewal date and notice period. An annual commitment bills to its end whether or not the tool is used.
- Reports in weekly use. Count them and name each owner; each one is rebuilt and re-verified in the new tool.
- What depends on the tool: Google Ads conversions or audiences, exports and warehouse jobs, scheduled reports, API consumers, feature flags and running experiments, messaging and audience syncs.
- The team's hourly planning rate. State it in the memo as an assumption, not a quote.
- Whether a CDP (Segment, RudderStack) sits in the collection path. If it does, the new tool is mostly a new destination: cut the SDK and mapping hours, keep the identity configuration, property mapping and report rebuild hours, and add any CDP meter change.

## Cost lines

- Migration hours: mapping, SDK and identity configuration, consent gating, report rebuild, fixture QA and operator training.
- Overlap: both meters bill during the parallel run. Size the run with [two-tools-and-dual-tracking.md](two-tools-and-dual-tracking.md). Add any committed incumbent months that fall after cutover.
- Backfill: Mixpanel bills imported history in the month it is ingested. Amplitude backfills under MTU pricing add an MTU for each month a distinct user appears. PostHog does not charge standard ingestion fees for events sent with `historical_migration` set to true, including its managed Mixpanel, Amplitude and S3 imports, but the import needs a paid product analytics plan and parallel live capture still bills (posthog.com/docs/migrate, checked on 2026-10-17). Import a narrow slice first and get the billing treatment in writing.
- Flag provider: moving flags means re-creating every live flag with a tested default and a window where both SDKs evaluate. Finish or stop running experiments first; never move one mid-flight.
- Upkeep change: hours per month the new tool adds or removes, such as a second identity configuration or a warehouse model the old tool did not need.

## Payback rule

```text
one_off_cost       = migration_hours x rate
                   + parallel_months x new_tool_monthly_bill
                   + committed_incumbent_months_after_cutover x old_monthly_bill
                   + backfill_charges
net_monthly_saving = (old_monthly_bill - new_monthly_bill) - added_upkeep_hours x rate
payback_months     = one_off_cost / net_monthly_saving
```

- Recommend staying when `net_monthly_saving` is zero or less.
- Recommend staying when `payback_months` is longer than the incumbent's remaining contract term plus 12 months.
- Override either rule only for a step 1 capability gap the incumbent cannot close on any plan, with the evidence in the memo.
- Time a justified switch to the renewal date, so the committed-months line is zero.

## Worked example

Fictional figures at a USD 90 planning rate. The incumbent bills USD 700 a month with 4 months left; the new tool bills USD 400 a month. The switch is timed to the renewal date, so no committed incumbent months fall after cutover.

```text
licence saving                  700 - 400                 = USD 300 a month
migration                       40 hours x 90             = USD 3,600
parallel run                    1 month x 400             = USD 400
committed months after cutover  0 x 700                   = USD 0
backfill                        narrow slice, no charge   = USD 0
one-off cost                    3,600 + 400 + 0 + 0       = USD 4,000
payback, no upkeep change       4,000 / 300               = 13.3 months
new tool adds 3 hours a month   300 - 3 x 90              = USD 30 net saving
payback with that upkeep        4,000 / 30                = 133.3 months
```

With 4 months left on the incumbent's contract, the threshold is 16 months. The first case passes; the second fails, so the memo says keep the current tool. Started now instead of at renewal, cutover would leave 3 committed incumbent months after a 1-month parallel run (USD 2,100); the one-off cost becomes USD 6,100 and payback 20.3 months, a fail even without upkeep.

## Keep the current tool

"Keep the current tool" is a valid outcome. When it wins, the memo records:

- The payback arithmetic that decided it.
- The fixes that go to the incumbent instead: event contracts through tracking-plan-builder, and the identity fixtures in [pilot-and-signoff.md](pilot-and-signoff.md) run against its identity docs.
- What would reopen the decision: a renewal price, a capability gap with evidence, or upkeep hours that change the saving.
