Change Requests Without the Fight: A Scope Protocol That Actually Holds
Most agencies lose money not on the original scope but on the drip of 'small' changes. Here's the protocol we use to keep change requests from quietly killing a project.

Every agency post-mortem we've ever run lands on the same culprit. It isn't the original estimate that ruined margin — it's the eleven small changes nobody priced, nobody logged, and nobody pushed back on. By week six the team is building a different product than the contract describes, and the client genuinely doesn't understand why you're upset.
This is the protocol we use to stop that from happening. It's not glamorous. It works.
Why "we'll just add it" is the most expensive sentence in the business
Every change request has three costs, and only one of them is visible.
The visible cost is the engineering hours. That's the one clients argue about. The two invisible costs are bigger:
- Context-switch tax. Pulling an engineer off the current sprint task to scope a "quick" change usually costs more than the change itself. We've measured 1.5–3x overhead in our own retros when changes land mid-sprint.
- Downstream coupling. A field added to a form in week three becomes a migration, an API contract change, a mobile release, and a QA pass in week eight. Nobody priced that in week three.
The job of a change request protocol isn't to say no. It's to make all three costs visible at the moment of the ask, so the client can make an informed trade.
The four-state model
We treat every change request as an object with a state machine. There are exactly four states, and a request can only move forward.
- Captured — someone said the words. Logged, not yet scoped.
- Scoped — we've estimated effort, impact, and trade-offs. Priced.
- Decided — client has said yes, no, or defer. In writing.
- Absorbed — merged into the plan with a new timeline or budget line.
The rule that makes this work: no work begins until a request reaches Absorbed. Not Scoped. Not Decided. Absorbed, with the project plan updated.
This sounds bureaucratic until you've shipped a feature an engineer started building because the PM mentioned it on a call, only for the client to later say they thought it was an exploration.
Where requests come from
We assume change requests will arrive through every channel a human can think of: standups, Slack DMs, comments on a Figma file, throwaway lines in demo calls, a forwarded email from the client's investor. The protocol doesn't try to constrain the channel. It constrains what happens after capture.
Anyone on the delivery team — engineer, designer, PM — can move a request to Captured. That's the only state with a low bar. Everything after requires a delivery lead.
The capture template
We keep a single change log per project. Notion, Linear, a Google Sheet, doesn't matter — what matters is that it's the one source of truth and the client can see it.
Each entry has the same shape:
id: CR-014
captured: 2026-02-11
requested_by: Client (Maya, on Tuesday demo call)
description: >
Add CSV export to the admin dashboard, filtered by date range.
original_scope_reference: "None — new ask"
state: Captured
That's it for capture. Five fields. The delivery lead does the scoping pass within 48 hours, which adds:
estimated_effort: 2.5 dev-days + 0.5 QA
impact:
- Touches the auth boundary on /admin/exports
- Requires background job (current stack has none)
- Pushes mobile release by ~3 days due to shared API team
tradeoff_options:
- A: Build now, push mobile beta to March 18
- B: Defer to phase 2, no timeline impact
- C: Ship a manual export (CSV emailed nightly) in 0.5 days
price_delta: +$3,200 (option A) / +$600 (option C)
state: Scoped
Notice option C. Always offer a cheap version. Half the time the client picks it, and you've saved the relationship a tense conversation about budget.
The decision ritual
Scoped requests get discussed in a fixed weekly slot. We call it the scope review; it's 30 minutes, same time every week, with the client's decision-maker in the room. Not the project sponsor's assistant. The person who can say yes to money.
The agenda is always:
- New requests captured this week (read-only walkthrough)
- Scoped requests awaiting decision (decide now or explicitly defer)
- Absorbed requests — confirm updated timeline
If the decision-maker can't make it, the meeting still happens and decisions move to async with a 48-hour deadline. After 48 hours of silence, scoped requests auto-move to Deferred. We tell clients this on day one and put it in the SOW.
The "absorbed" step matters more than people think
When a request is approved, somebody — usually the PM — has to actually update the plan. New end date. New budget total. New sprint allocation. That update gets sent to the client as a one-paragraph email, and the client confirms by reply.
Without that confirmation, you don't have an approved change. You have a verbal agreement that will evaporate the moment the client's CFO asks why the invoice grew.
Pricing the small ones
The trickiest category is the genuinely small change — a copy tweak, a colour adjustment, a field rename. Charging for each one feels petty and creates friction on things that should be friction-free.
We handle this with a change budget: a pre-agreed pool of hours (usually 5–10% of the contract) for small changes that don't need individual pricing. Anything under, say, two hours of effort comes out of the budget without a separate approval. The pool burns down visibly in the change log. When it's empty, the protocol kicks in for everything.
This does two useful things at once. It removes pointless friction on legitimately tiny asks, and it gives the client a visceral sense of how fast "small things" add up. We've had clients voluntarily cut requests after watching their change budget drop from 40 hours to 8 in three weeks.
What to do when the client pushes back
They will. The first time you tell a non-technical client that adding a dropdown is a three-day change, they will think you are inflating. Sometimes the right response is to walk them through the scope doc. Sometimes it's to acknowledge that the estimate is conservative and offer to do it for less if they accept the risk of a tighter QA pass.
What you should not do is cave silently. Caving silently is how you end up on a Friday night fixing a regression in a feature that was never in the contract, while your team's morale rots. If a request is genuinely a contract-interpretation question — "we always assumed this was included" — escalate to a contract conversation, not a delivery conversation. Those are different muscles.
One escape valve: the goodwill change
Reserve the right to occasionally absorb a small change for free, explicitly framed as goodwill. "This one's on us — but it's about an hour of work, and I want to flag that the next three asks like this will need to be scoped." Done sparingly, this builds trust. Done by default, it trains the client that everything is free.
The cultural piece
A protocol is only as strong as the team's willingness to use it. The single biggest failure mode we see — including in our own past projects — is the senior engineer who hates process and just builds the thing because it'll take an hour. They mean well. They're undermining the project.
The fix is to make capture cheap and fast. If logging a request takes 90 seconds and the engineer knows it'll be scoped within two days, they'll do it. If it requires a Jira workflow with seven mandatory fields, they won't, and the protocol dies quietly.
We also make a point of celebrating change requests in retros. A well-handled CR that the client paid for and was happy with is a delivery win, not an annoyance. Reframing it that way shifts how the team treats client asks.
Where we'd start
If you're running an agency project right now without a real change protocol, don't try to roll out the whole thing on Monday. Do these three things this week:
- Create a single change log the client can see. Backfill the last two weeks of asks from Slack and email. Just having it visible changes the dynamic.
- Block a 30-minute scope review on the calendar, recurring, with the actual decision-maker.
- Send one email to the client framing the new ritual — not as a policy change, but as "how we're going to make sure nothing falls through the cracks."
The rest follows. The protocol isn't really about scope. It's about making the invisible work of running a project visible to the person paying for it, so the conversations you need to have happen on a Tuesday at 10am instead of on a Friday night over a missed deadline.
If you want to see how we structure this inside actual delivery contracts, our services overview walks through how we engage on builds — and the blog has more on the contract and pricing side.
Want a team like ours?
72Technologies builds production software for the kind of teams who actually read this blog.
Start a projectKeep reading

Hiring Senior Engineers in 2026: The Trial Project That Beats the Whiteboard
Whiteboard interviews keep failing us on senior hires. Here's the paid trial project we run instead — what it costs, what it measures, and the failure modes to watch.

Fixed Bid vs T&M vs Capped T&M: How We Actually Choose
Most agency pricing debates are religious wars. After enough botched estimates and uncomfortable invoice conversations, we settled on a three-way framework — and a rule for when to use each.

The Two-Week Paid Pilot: How We Replaced the Free Proposal
Free proposals burn senior time and reward tire-kickers. Here's how we restructured the top of our agency funnel around a paid two-week pilot, what we charge, and how it changed close rates and client quality.
