All segments

Shopify Development Agency Cost: The Hidden Line Items

What a Shopify development agency quote covers by engagement model, the line items most proposals omit, and how to judge one before you sign.

  • Published
  • Reading time 9 min read
  • Author Nafiul Hasan
Shopify Development Agency Cost: The Hidden Line Items. Diagram: where the reporting stops. RUN Shopify Development Agency Cost:The Hidden Line Items REPORTEDNOT REPORTED pointerflow.com

Short answer

A Shopify development agency's quote covers the build — theme, app or integration — not what keeps it running. QA, app licences, maintenance and handover are usually separate, and a fixed-fee proposal with no change-order clause is where scope creep gets billed as "extra."

What “Shopify development agency” actually covers

The phrase spans four different engagements, and pricing logic differs by which one you’re buying.

A custom theme build modifies or replaces Shopify’s Liquid templates and sections — the visual and interactive layer a customer sees. A custom app is bespoke logic running on Shopify’s Admin or Storefront API, built when no existing app in the Shopify App Store does what you need. Third-party integrations connect Shopify to tools you already run — Klaviyo, Recharge, an ERP, a 3PL — mapping data between systems that were never designed to talk to each other. A headless build replaces the storefront entirely with a custom frontend (commonly React or Next.js) that pulls data through Shopify’s Storefront API while checkout stays on Shopify’s own infrastructure.

The four engagement types are not interchangeable, and a proposal that doesn’t name which one you are buying is the first sign to slow down. A theme build and a headless build solve different problems at different costs — see our headless ecommerce guide for when the second is worth the extra engineering surface.

Why the published price is a bid, not a budget

Three pricing models cover almost every Shopify development quote, and each shifts risk to a different party.

Fixed fee sets one price against a defined statement of work. It gives you budget certainty, but only for exactly what’s written down. Anything outside that scope becomes a change order, billed separately, at a rate that should already be stated in the contract rather than negotiated after the fact.

Time and materials bills actual hours against an estimate. It moves with real complexity, which protects you from an agency underbidding to win the work, but the estimate is not a ceiling. Ask what triggers a check-in if hours run past the estimate, not just what the estimate was.

Retainer buys a fixed block of hours per month, usually for ongoing work rather than a single build: the model most maintenance and iterative-feature relationships use once the initial project is live.

None of the three tells you the total cost of the engagement on its own. That number depends on what the quote excludes, which is where most of the gap between the number you agreed to and the number you eventually pay lives.

The hidden line items the quote leaves out

A Shopify development quote is written to win the bid, not to disclose every cost you’ll carry. The following six are the ones that most often surface after signature rather than before it.

QA and cross-device testing

Development and QA are different activities billed at different rates, and a quote that folds QA into “development” with no named hours usually means testing happens informally, by the same developer who wrote the code, on whatever device is on their desk. Ask for a QA line item naming the browser and device matrix: desktop Safari, mobile Chrome, at minimum, and whether checkout is tested end to end with a live test transaction, not just visually reviewed.

App licence fees

The agency’s fee covers configuring or connecting an app; it almost never covers the app’s own subscription. Recharge, Klaviyo, a review app, a bundling app: each bills you directly on its own pricing page, continuing whether or not the agency that installed it is still engaged. A quote that lists “Recharge integration: $X” without a separate line for Recharge’s own subscription cost is describing the build, not the total.

Post-launch maintenance

A build contract typically ends at launch acceptance. What happens after: Shopify API version deprecations, a theme update that conflicts with a custom section, a bug only real traffic surfaces. These are usually a separate relationship, priced separately, and not automatically included just because the same agency built the original theme. Confirm whether maintenance is a retainer, a support-ticket rate, or simply undefined until something breaks.

Handover and documentation

If the relationship ends (the agency’s choice or yours), what do you actually receive? Repository access with commit history, environment variable and API key documentation, a list of every app installed and how it’s configured, theme architecture notes explaining what each custom section does. A handover clause that isn’t written into the contract usually means a login and a goodbye email, not a package your next developer can work from.

Change requests

Requirements shift once a merchandising team sees the build in a staging environment. A new section type, an added filter, a design tweak that seemed small. Under a fixed-fee contract, each of these is a change order; the protection you need isn’t avoiding change requests, it’s a contract that states the change-order rate up front so the number isn’t negotiated after the work is already done.

Migration and data cleansing

If the engagement includes moving from another platform or a prior Shopify theme, data cleansing — deduplicating customer records, mapping legacy SKUs, validating historical order data — is frequently underscoped because it’s invisible until someone actually opens the export file. A quote that treats migration as a flat line item with no discovery phase is guessing at a number before anyone has looked at the data.

What the total cost actually looks like

Here is an illustrative breakdown of where a Shopify development engagement’s true cost tends to sit relative to the headline quote: hypothetical, not a real client engagement, and not a benchmark to price against.

Line itemTypically in the headline quote?Who usually pays it
Theme, app or integration buildYesAgency fee
Project management and milestonesUsuallyAgency fee
QA and cross-device testingSometimes, often unstatedAgency fee if named; otherwise absorbed into build hours
Third-party app licences (Klaviyo, Recharge, etc.)NoYou, directly to the vendor
Staging or development environment costsRarely statedVaries — ask explicitly
Post-launch maintenanceNo — separate contractYou, on a new agreement
Handover documentationRarely statedIncluded only if contracted
Change ordersNo — by designYou, at the change-order rate

The pattern to take from this table: the agency fee reliably covers the build itself. Everything that continues after the build (licences, maintenance, the app subscriptions the integration depends on) sits outside it by default, and a proposal’s silence on a row is not confirmation that row is included.

How to judge a proposal before you sign it

Five checks catch most of what goes wrong later.

Who owns the code at completion. IP assignment to you on final payment is standard for a custom build; a licence-to-use clause that leaves ownership with the agency is not, and it means you cannot take the theme or app to another developer if the relationship ends.

What counts as a change order. The statement of work should name what’s included precisely enough that anything outside it is obviously a change, and the change-order rate should be in the contract, not negotiated later.

What QA process runs before launch. A named device matrix and a live checkout test, not “we test as we go.”

What happens if a milestone slips. Ask this before it happens, not after. A fixed-fee contract with no clause covering a missed date leaves you with no lever beyond withholding final payment.

What the maintenance relationship looks like. Whether it’s a retainer, a ticket rate, or genuinely undefined until something breaks. Undefined is an answer, just not one you want to discover during an outage.

A proposal that answers all five without prompting is unusual. Most answer none of them unless you ask directly.

Freelancer, agency or in-house: when each wins

A freelancer usually costs less on the invoice for a single, well-scoped build. The trade-off shows up in continuity: no bench to cover illness or a missed deadline, no formal QA step distinct from the person who wrote the code, and no plan if they stop taking freelance work. That is a risk you’re carrying even if it’s never priced into the quote.

An agency costs more per hour but spreads risk across a team. It has a second developer to review code, a project manager to hold the timeline, a QA process distinct from development. It’s the better fit for a build with real complexity (a headless migration, a custom app touching inventory) or a timeline you can’t afford to slip.

In-house wins once the volume of ongoing Shopify work — seasonal campaigns, new sections, integration fixes — exceeds what a retainer covers in monthly hours. A salaried developer’s fixed cost starts beating metered agency time at that point, and you gain someone who carries context across projects instead of being re-briefed on each one. The crossover point is specific to your ticket volume; the way to find it is to total actual retainer hours billed over two or three quarters and compare that run rate to a loaded salary, not to guess from a single month.

If your team is at $3M–$30M in revenue on Shopify Plus or a comparable paid subscription platform, this decision usually lands on agency-for-build, in-house-or-retainer-for-run. See what Pointerflow builds for scaling brands for how that split plays out operationally, and our Shopify Plus agency guide for how that engagement model differs from a general development shop.

When it stops being worth it

A development engagement stops paying for itself in three recognisable situations. First, when the ongoing change-order volume on a fixed-fee contract starts approaching the size of the original build. At that point you’re effectively paying agency rates for what should be a maintenance relationship, and it’s worth renegotiating the structure rather than the scope. Second, when handover was never contracted and the relationship sours. You’re now paying to rebuild institutional knowledge that should have been documented from the start. Third, when the build was scoped around a headless architecture that’s outgrown its original justification. The frontend complexity is now costing more in maintenance than the theme build it replaced would have, and nobody has re-run that comparison since launch.

These three failure modes are rarely visible from a single quote. They surface from tracking actual spend against the engagement over two or three quarters, which is in practice a repeatable operational check rather than a one-time judgement call, and the kind of recurring monitoring that’s straightforward to automate rather than re-derive by hand each quarter. That’s the shape of problem our AI agents and automation service is built for: agreements, licence renewals and change-order totals tracked against budget automatically, flagging drift before it’s three quarters of invoices deep, not a plausible-sounding annual estimate.

Sources

No external figures are quoted in this article. It is written from the standard structure of Shopify development engagement contracts — fixed-fee, time-and-materials and retainer models, IP assignment clauses, and the change-order mechanics common to custom theme, app and integration work — and from Pointerflow’s first-hand delivery experience building and running Shopify, Klaviyo and Recharge integrations, including n8n automations hosted on a client’s own VPS with unlimited executions.

Frequently asked

What should a Shopify development agency's quote actually include?

The build work named in the statement of work — theme sections, app logic, an integration's mapped fields — and nothing outside it by default. Ask explicitly whether QA, staging environment costs, app licences and post-launch support are in the number or billed separately; a quote silent on all four is incomplete, not generous.

What is the difference between a fixed-fee and a time-and-materials contract?

Fixed-fee sets one price for a defined scope, so any change outside that scope becomes a separate change order. Time-and-materials bills hours against an estimate, so the total moves with the work but the estimate is not a ceiling. Neither is safer without a written change-control clause covering the other case.

Does a Shopify development quote usually include third-party app licence fees?

Rarely. An agency quotes the development work of configuring or connecting an app, not the app's own subscription. Recharge, Klaviyo and similar tools bill you directly, on their own pricing page, and that cost continues whether or not the agency is still engaged.

Who pays for the API costs behind a Klaviyo or Recharge integration?

You do, as the merchant of record on that vendor account. The agency's fee covers building and testing the connection; the ongoing API usage, contact-list tier or subscriber volume that Klaviyo or Recharge bills against is a separate, recurring cost you hold regardless of who built the integration.

Who owns the theme code and app files when the contract ends?

That is set by the contract, not by default law, so confirm it in writing before work starts. A clause assigning IP to you on final payment is standard; a licence-to-use clause that lets the agency keep ownership is not, and it is the difference between walking away with a working store and walking away with nothing.

Should ongoing maintenance be a separate contract from the build?

Usually yes, because the two have different failure modes. A build contract ends at launch acceptance; maintenance covers Shopify API version bumps, theme updates and bug fixes discovered under real traffic. A single contract that folds both in on undefined terms is worth reading twice before signing.

How long does a Shopify Plus theme build typically take?

Timeline depends on section count, custom app logic and how many integrations the theme touches, so ask for a week-by-week milestone schedule rather than a single end date. A schedule with no intermediate milestones gives you no early signal if the build is slipping until the final week.

What is the difference between a Shopify development agency and a Shopify Plus agency?

A Shopify development agency is defined by the work — theme, app, integration, headless build; a Shopify Plus agency is defined by the platform tier and often bundles strategy, launch management and Plus-specific features like Flows and checkout customisation.

Is a freelancer cheaper than an agency for a Shopify build?

Often on the invoice, rarely on total cost of ownership. A freelancer usually has no bench to cover illness or a missed deadline, no formal QA step separate from the person who wrote the code, and no continuity plan if they stop taking work — costs that show up later, not on the quote you're comparing today.

What questions should you ask before signing a Shopify development proposal?

Who owns the code at completion, what counts as a change order versus included scope, what QA process runs before launch, what happens if a milestone slips, and what the maintenance relationship looks like after acceptance. A proposal that answers all five without you asking is the exception, not the rule.

What does going headless add to a development quote?

A separate frontend build, often React or Next.js, talking to Shopify through the Storefront API, plus hosting for that frontend outside Shopify's own infrastructure. It typically costs more upfront than a theme build and shifts ongoing maintenance onto your own or the agency's engineering team, not Shopify's theme editor.

How do you budget for QA and cross-device testing?

Ask the agency to name it as a line item with a device and browser matrix, not as an assumed part of development. A quote with no QA line item usually means testing happens informally during development, which catches fewer defects than a dedicated pass against a checkout and mobile-first checklist.

What counts as scope creep, and how does an agency usually bill it?

Any request outside the signed statement of work — a new section type, an added integration, a redesign mid-build. Most agencies bill it as a change order at an hourly or day rate stated in the contract; the risk is a contract with no stated rate, where the number gets negotiated after the work is already done.

When does hiring in-house beat hiring an agency?

Once the volume of ongoing Shopify work — new sections, seasonal campaigns, integration fixes — exceeds what a retainer covers in hours, an in-house developer's fixed salary starts costing less than metered agency time, and you gain someone who carries context across projects instead of being re-briefed on each one.

What should a handover package contain?

Repository access with commit history, environment and API key documentation, a list of every third-party app and its configuration, theme architecture notes, and a point of contact for questions during a defined transition window. A handover that is just a login and a goodbye email is not a handover.

Next step

Is this your ai agents & automation problem, or a symptom of another one?

Bring your numbers — the churn split, the decline rate, whatever your flows are earning — and we will tell you which of them is the expensive one.

Book a call →