A barrier preventing users from switching alternatives
A switching cost is everything a customer gives up to move from one product to a competing one: the money, the effort, the relearning, the lost data, and the broken habits. It is the friction that keeps a customer in place after the original reason for choosing has faded.
The idea entered strategy through Michael Porter, who treated switching costs as one of the forces shaping industry competition and a barrier that protects incumbents. The rigorous economics came from Paul Klemperer, whose Markets with Consumer Switching Costs (Quarterly Journal of Economics, 1987) showed that even small switching costs can soften competition, because once customers are locked in, a market with switching costs can produce outcomesOutcomeStrategyA desired business or user outcomeView reference → that resemble collusion in a market without them. Firms compete hard up front to capture customers they can later exploit.
Klemperer extended the analysis over the following decade, and he and Joseph Farrell synthesised the field in Coordination and Lock-In: Competition with Switching Costs and Network Effects, the chapter in the Handbook of Industrial OrganizationOrganizationPortfolioThe top-level organisational entityView reference →. The central result reframed how strategists read cheap introductory offers and price wars. A firm that prices below cost to acquire a customer is buying future market power over that same buyer, the power to charge above the competitive level once the customer is locked in. Penetration pricing and switching costs are two halves of one move.
Practitioners later sorted switching costs into types. Procedural costs are the time and effort of migrating: exporting data, reconfiguring, retraining a team. Financial costs are the money lost, such as a forfeited prepayment, a new contract, or sunk investment in the old product. Relational costs are the human ties broken, the trusted contact, the community, the accumulated reputation inside a platform. Each type can be designed up to deepen lock-in, and each is where the ethical question gets pointed.
A team has used a project tool for three years. The subscriptionSubscriptionSales & RevenueA recurring subscriptionView reference → is £15,000 a year, and a rival offers the same featuresFeatureProduct SpecificationA product capability or featureView reference → for £9,000. The headline saving is £6,000 a year, so the move looks obvious until the switching costs are counted. Procedural: two months of migrating 40,000 tasksTaskProduct SpecificationA unit of work within a story or epicView reference →, rebuilding 200 automations, and retraining 60 people, work that pulls senior time away from delivery. Financial: a year already prepaid, and three months of running both tools in parallel. Relational: a body of institutional knowledge encoded in the old tool's structure that does not export cleanly.
Add it up and the first-year cost of switching swamps the saving, so the team stays. The incumbent keeps a customer it might lose on a clean comparison. The honest version of this advantage comes from a product so embedded in real work that leaving genuinely costs something. The hostile version manufactures the friction: broken data export, contracts that auto-renew on a hidden date, formats that lock data in. The first is a moat the customer would defend. The second is a trap the customer resents, and resentment finds an exit eventually, often through a regulator who mandates data portability.
April Dunford's positioningPositioningGo-To-MarketProduct positioning statementView reference → framework offers a related angle from the market-entry side. In Obviously Awesome, Dunford argues that customers always evaluate a product against their true competitive alternatives — whatever they would use if the product did not exist — and that switching costs are one reason those alternatives include the status quo. A customer who faces high switching costs may stay with an inferior product not because they prefer it but because the comparison includes the cost of leaving; a product positioned so that it genuinely wins that comparison on value has less needNeedUserA user need, pain, desire, or constraintView reference → for friction to hold customers. By that reading, lock-in that outlasts the value proposition is a positioning liability: the customer knows they are staying for the wrong reason.
In the Unified Product Graph, Switching Cost sits in the users region and connects through PersonaincursSwitching Costhierarchy, which fixes the cost to the specific person who pays it. That placement carries the argument Klemperer's economics implies: a switching cost is experienced by someone, and it differs by who is leaving and what they have built up. Modelling it on the persona keeps the analysis honest. It lets a team ask whether a given persona's lock-in comes from genuine embedding in their work or from friction the product manufactured, the question that decides whether a moat is an asset or a liability waiting for a regulator.persona_incurs_switching_cost
Worked example: Trellis
The switching cost that kept directors on rotting spreadsheets and away from AI app-generators was not inertia but fear: trading a familiar, if broken, system for an ungovernable one that changes silently and can never be unwound. That fear is the barrier a new solutionSolutionDiscoveryA proposed approach to address an opportunityView reference → must dissolve before directors will grant an agent any autonomy, which is why Safe Change is Trellis's trust wedge rather than a secondary featureFeatureProduct SpecificationA product capability or featureView reference →.
Type-specific fields on BaseNode
cost_typeenumType of switching cost
magnitudeassessmentHow large the barrier is (UPGAssessment on the `severity_5` scale).
barrier_descriptionstringFree-text description of the barrier
idstringrequiredUnique identifier (UUID)
typeNodeTyperequiredDiscriminator for the entity type
titlestringrequiredDisplay name
descriptionstringOptional detailed description
statusstringLifecycle status
tagsstring[]Freeform tags for filtering
2 edge types connected to this entity.
persona_incurs_switching_costswitching_cost_locks_in_competitor1 framework use this entity type.