Go to homepage 2sh
all insights[insight · 2sh.io]
2sh Studio#agency-growth

fixed-price website projects: how agencies can protect margin

Fixed-price web projects lose margin when QA, content migration, integrations, and support sit outside the estimate. Use this scope checklist and worked example.

Minimal grid structure representing deterministic systems engineering
[fig. 01]Minimal grid structure representing deterministic systems engineering

A fixed-price website project protects agency margin when the fee covers the work required to launch it. Responsive QA, content migration, integrations, approvals, and post-launch support all take time. If the proposal leaves them as assumptions, the agency absorbs the cost or renegotiates after the client expects delivery.

how do you calculate margin on a fixed-price website project?

Gross margin is the fixed project fee minus direct delivery costs, divided by the fee. Include the work that happens after the design is approved, not only the planned design and development hours.

Here is an illustrative €50,000 project model:

Cost item Planned amount
Design and strategy €15,000
Development €15,000
Gross profit before other delivery costs €20,000
Planned gross margin 40%

Suppose the team then absorbs 110 extra hours of QA, integration fixes, and launch support at an internal cost of €85 per hour. That adds €9,350 to delivery cost. Total direct cost becomes €39,350; gross profit falls to €10,650 and gross margin to 21.3%.

The €85 hourly cost and 110-hour overrun are assumptions for this example, not industry averages. Replace them with your own time and cost records. The calculation shows how quickly unpriced work changes a project’s economics.

what should a fixed-price website estimate include?

A useful estimate names the deliverable, its acceptance criteria, and who owns each decision. Define these items before the client signs:

  1. Pages and content: List page templates, content records to migrate, redirects, and who supplies final copy and images.
  2. Design and approvals: State responsive states, included review rounds, the approval owner, and what happens when approved work changes.
  3. Integrations: Name each form, CRM, commerce, analytics, or third-party service. Describe the expected behavior and who handles access or vendor issues.
  4. Testing and acceptance: Specify supported devices and browsers, functional checks, and performance measurement conditions. Google’s Web Vitals guidance recommends an LCP of 2.5 seconds or less at the 75th percentile, segmented by device. Agree whether acceptance uses lab tests, field data, or both.
  5. Launch and support: Define content freeze, redirects, deployment, training, warranty period, and which post-launch requests count as new work.
  6. Change control: Set out how a scope change is approved, priced, and scheduled before the team starts it.

These details protect both sides. The client can compare proposals on the same work. The agency can explain the cost of a new request before it becomes an unpaid launch-week task.

will a different web architecture protect project margin?

Architecture affects delivery cost, but it cannot compensate for an estimate that omits work. Reusable page types and a clear content model can make repeat builds easier to plan. A headless frontend also adds content modeling, preview, integration, and ongoing ownership work. Put those tasks in the estimate.

Choose Shopify, Squarespace, WordPress, or a custom frontend according to the catalog, editorial workflow, design needs, and integrations. A headless build makes sense when its added control solves a real requirement. It adds maintenance when the existing platform already fits.

We built Concrete as a reference site for an asset-heavy creative agency. The page documents an Astro, Storyblok, and Cloudflare build and reports mobile LCP moving from 9.1 seconds to 0.85 seconds. Concrete is our reference build, not client work; those performance figures do not establish a margin or conversion result.

Before signing, give every deliverable an owner and an acceptance check. That keeps disagreements about what is complete out of launch week.

Reading about slow stacks? let's talk about yours.

If slow page loads are eating your ad budget or your engineers are stuck on marketing tickets, bring us your stack. We inspect it and tell you plainly what to fix.

further analysis

view all insights →
how to evaluate the engineering cost of a marketing site in your product repository

(01) how to evaluate the engineering cost of a marketing site in your product repository

#saas

Read analysis

→
mobile page speed and paid ads: how to measure conversion impact

(02) mobile page speed and paid ads: how to measure conversion impact

#paid-media

Read analysis

→