§
§ · shopify retainer

Shopify development retainer. Buy a block of hours, not a project.

A senior Shopify and Shopify Plus retainer for in-life work. Unused hours roll over. Tiered SLAs attached to the invoice. No twelve-month lock-in, no proprietary ticketing moat, no hours-hostage on exit.

§ 01 · a retainer is a ledger

A Shopify retainer is a ledger, not a twelve-month handshake.

Most Shopify agencies sell a retainer the way banks sell a mortgage. Twelve-month term, opaque scope, a monthly retainer fee that buys “priority.” A retainer should be simpler than that. Pre-paid hours, visible in a shared ledger, spent against tickets you approve, rolled over when you do not use them, cancellable in 30 days. That is the whole contract. Every ticket lives in Linear, every change ships through Shopify CLI and Theme Check, every week gets a Loom. Everything else on this page is how we make those four sentences real.

Editorial hand-drawn ledger showing Shopify developer retainer hours as an accounting page: left column tally marks for hours bought, right column itemized entries for hours used per ticket across a week, with rollover noted at the bottom.
Fig. 1 · the retainer ledger · hours spent when they matter, rolled over when they do not
rule 01

Pre-paid hours, visible.

A shared Linear board and a monthly CSV shows every ticket, every estimate, every logged hour. No black box.

rule 02

Hours roll over one month.

Up to 50% of the block carries into the next month. Nothing expires instantly; nothing hoards forever.

rule 03

30-day rolling agreement.

No twelve-month term, no exit fee, no proprietary tool you lose access to. Cancel in 30 days, for any reason.

rule 04

Tiered SLA, in writing.

Four priority levels (P1 through P4), four response times, reported monthly. See the SLA table below.

§ 02 · retainer · hourly · project

Three ways to buy Shopify development. Pick the one your store actually needs.

Most “shopify retainer versus hourly” decisions are solved by looking at one thing: is the work bounded or unbounded? Bounded work wants a project. Unbounded small work wants a retainer. A single ad hoc ticket wants pure hourly and a higher rate. Here is the honest comparison.

  Pure hourly Monthly retainer Fixed project
cost certainty lowest — billed as used fixed monthly, predictable fixed total, scoped up front
rate per hour highest per hour lower, blended across roles quoted against scope, not hours
SLA none by default P1 through P4, in contract project deadline only
team continuity whoever is free that day named engineer + backup project pod, ends at launch
priority behind retainer + project second to P1 incidents only top priority during term
best for one-off two-hour tickets steady in-life work, seasonal bursts theme builds, migrations, app launches
wrong for ongoing weekly work a bounded project with a deadline small continuous changes post-launch

Most Shopify brands past $500K a year run a project plus a retainer, not one or the other. The retainer is the second half of the lifecycle.

§ 03 · the ledger in motion

A week of 40 hours, seen honestly.

Fourteen seconds. A 40-hour retainer month unspooled as a ledger, one ticket at a time. Hours spent on product page speed, checkout QA, a new section, a Klaviyo fix, an accessibility tweak, a CDN sweep — and the 31.25 hours that roll into next month.

Fig. 2 · the week ledger · six tickets, 8.75 hours used, 31.25 hours rolled
§ 04 · the retainer operating system

Five moves, every week.

The Retainer Operating System is the weekly rhythm every DH Shopify retainer runs. Intake into Linear, triage inside 24 hours, sprint against a weekly theme, Friday demo via Loom, month-end report with SLA adherence. Same five moves, every client, every week. Visible so you can audit it; disciplined so you do not have to.

  1. 01

    Intake.

    Every request lands in a shared Linear inbox. Loom videos, Slack Connect messages, email, Figma comments all fold into one queue with a consistent ticket template so nothing gets lost between channels. You see every ticket we see.

    tools: Linear · Slack Connect · Loom · Figma comments
  2. 02

    Triage.

    Every ticket gets a priority (P1 through P4), an hour estimate, and an owner inside 24 hours. You approve or re-order. No silent work, no half-scoped tickets, no surprises at the end of the month.

    tools: Linear priorities · estimate field · owner assignment
  3. 03

    Sprint.

    Work runs against a weekly theme. Fixes first, then features, then performance. Every change ships through a feature branch, a Theme Check pass, and a staging preview link before it goes live. The last thing to land is the merge to the live theme.

    tools: Shopify CLI · Theme Check · GitHub feature branches · staging themes
  4. 04

    Demo.

    Friday demo. A 15-minute Loom walks through what shipped, what is blocked, what moved in or out of next week. You see progress without having to chase it or sit in a meeting. Watched on your schedule, not ours.

    tools: Loom · shared Notion summary · ticket links in description
  5. 05

    Report.

    Month-end. Hours spent by ticket, hours spent by priority, rollover into next month, SLA adherence for P1 through P4, and a plain-English summary of what the retainer bought this month. Signed off before the next invoice.

    tools: CSV export · PDF summary · Linear SLA report · time log

The Operating System is not a sales pitch. It is how the work gets done. Every retainer client sees the same rhythm.

§ 05 · three retainer shapes

Three block sizes. Pick the one your hours map to.

A $500K-a-year Shopify store does not need the same retainer as a $25M Plus merchant. Three blocks, three different team shapes, three different rollover caps. Move up a tier when you overage two months running; move down when your rollover passes 40%.

retainer 10

10 hours / month

starter · small store, steady fixes
  • Shared engineer + PM
  • Rollover up to 5 hours
  • P1 SLA: 1 hour
  • Monthly CSV + PDF report
  • Friday Loom demo
  • 30-day rolling
fits: $250K–$2M Shopify stores
most picked
retainer 25

25 hours / month

growth · midweight brands, weekly ship
  • Named engineer + shared senior + PM
  • Rollover up to 12 hours
  • P1 SLA: 1 hour
  • Monthly operating review
  • Slack Connect channel
  • 30-day rolling
fits: $2M–$10M Shopify and Plus brands
retainer 50

50 hours / month

scale · Plus merchants, heavy campaign load
  • Named engineer + named senior + dedicated PM
  • Rollover up to 25 hours
  • P1 SLA: 30 minutes
  • Weekly operating review
  • BFCM war-room coverage included
  • 30-day rolling
fits: $10M+ Shopify Plus merchants

Hour top-ups available any time in 5-hour increments at the retainer's base rate. Move-up-a-tier applied the same month you go over two consecutive blocks.

§ 06 · in scope · out of scope

What retainer hours cover, and what they do not.

Most retainer pages list inclusions and stay quiet on the exclusions. We do both. Knowing what does not fit inside retainer hours prevents the most common failure mode: a big project half-finished against a small monthly block.

hours cover
  • New Liquid sections, blocks, and snippets
  • Product and collection template changes
  • Shopify app installation, configuration, removal
  • Klaviyo, Recharge, Postscript integration fixes
  • Core Web Vitals remediation (LCP, INP, CLS)
  • WCAG 2.2 AA accessibility fixes
  • Seasonal campaign pages and landing pages
  • Shopify platform update compatibility work
  • BFCM readiness pass (Retainer 50 includes war-room)
  • SEO redirects, schema, hreflang touch-ups
hours do not cover
  • ×Full custom theme builds (own project SOW)
  • ×Shopify Plus checkout migration (own project SOW)
  • ×Custom Shopify app development (public or private)
  • ×Replatforming from Magento, WooCommerce, BigCommerce
  • ×Paid media buying or ads management
  • ×Creative production, copywriting, content
  • ×Headless Hydrogen or Oxygen architecture work
  • ×SEO audits over 10 pages (own project SOW)
  • ×Design system creation or brand identity
  • ×B2B or multi-store architecture strategy
how to combine

Most brands past $500K a year run a project SOW for the out-of-scope work and a retainer for the in-life work. The project team ships the big thing, the retainer team keeps the store healthy while it does. After launch, the retainer absorbs the post-launch fixes and the project team rotates to the next merchant.

§ 07 · the SLA tier

Four priorities. Four response times.

Every retainer invoice carries the SLA table. Response is acknowledgement plus an estimate from a real engineer, not an auto-responder. Resolution follows the ticket's hour budget. SLA adherence for P1 through P4 is reported every month; misses are flagged with a root cause in the report, not buried.

priority example ticket response SLA resolution target
P1 critical store down, checkout broken, payment failure 30 min – 1 hr same day, same engineer until resolved
P2 high revenue-impacting but not store-down 4 hours same business day
P3 normal standard feature, section, Liquid change 1 business day within weekly sprint
P4 low nice-to-have, cosmetic, low-urgency polish 3 business days within 2-week window

Fig. 3 · P1 SLA on Retainer 50 is 30 minutes; Retainer 10 and Retainer 25 are 1 hour. Response hours are business hours in your timezone.

rule 01

Response ≠ resolution.

Response is acknowledgement and an estimate from an engineer. Resolution follows the ticket's hour budget and surface area.

rule 02

P1 breaks queue.

A P1 takes priority over every P2, P3, P4 across every retainer client. Nobody waits behind another merchant's outage.

rule 03

Reported monthly.

SLA adherence for P1 through P4 shown in the month-end report. Misses are flagged with root cause, not averaged into a headline number.

§ 08 · questions

Ten answers.

What is a Shopify retainer?

A Shopify retainer is a pre-paid monthly block of senior engineering hours used for in-life storefront work rather than a discrete project. Typical retainer work includes new Liquid sections, app integration, Core Web Vitals remediation, accessibility fixes, seasonal campaign pages, Klaviyo and Recharge debugging, and any small-to-mid change that does not warrant a fresh statement of work. Good retainers are hours-based, transparent, and priced the same whether the hours go into a single big ticket or twenty small ones.

What does a Shopify developer actually charge per hour in 2026?

US and UK boutique Shopify agency rates for senior engineers cluster between $150 and $250 per hour in 2026, with Shopify Plus specialists at the top of that range. Offshore and freelance rates run $30 to $80 per hour; mid-market Indian agencies, including us, sit around $75 to $125 per hour for senior work. A retainer reduces the effective rate versus pure hourly by blending senior and mid-level time, bundling project management, and amortizing Shopify Partner tooling across many merchants. Posted dollar rates are anchors, not contracts; the scoped quote follows an intro call.

How many Shopify developer hours per month does a typical store need?

A healthy Shopify store between $250K and $2M a year in revenue usually burns 10 to 25 engineering hours a month on in-life work. $2M to $10M brands trend toward 25 to 50 hours. Shopify Plus brands past $10M often sit above 50. The burn rises around campaign launches, Black Friday, platform updates, and app migrations. If you are hitting a 10-hour retainer ceiling every month, move up a tier. If you are rolling over more than 40% of hours two months in a row, move down.

Do unused Shopify retainer hours roll over to the next month?

Yes, up to a cap, for one month. Retainer 10 rolls up to 5 unused hours; Retainer 25 rolls up to 12; Retainer 50 rolls up to 25. Rolled hours expire at the end of the following month, not into perpetuity. The cap exists so the retainer stays a working relationship rather than an hour hoarding account; the rollover exists so a quiet month does not feel like money burned.

What happens if we go over our retainer hours?

Nothing breaks. We flag the ticket that will push you past your block, you approve or defer, and overage hours are billed in 5-hour increments at the retainer's base rate. We never work silent overage. If overage becomes a pattern for two consecutive months, we move you to the next tier where the blended rate is lower.

What's the minimum commitment and can I pause or cancel?

The agreement is 30-day rolling. You can cancel, pause, or downgrade with 30 days' notice for any reason. There is no twelve-month lock-in, no exit fee, and no proprietary dashboard you lose access to. Rolled-over hours remaining at cancellation are either worked before the close date or refunded at the retainer's base rate, your choice.

Retainer versus hourly versus project — which is right for me?

Pure hourly fits a one-off question or a single two-hour fix; it is priced higher per hour because it bundles no continuity. A project fits a defined outcome with a deadline, like a theme rebuild or a checkout extension migration. A retainer fits everything in between: steady small-to-mid work, seasonal bursts, app integration, and the kind of changes you want shipped this week without scoping a fresh SOW. Most Shopify brands past $500K a year run a project plus a retainer, not one or the other.

What response time SLA do you commit to?

Four priority levels, four response SLAs, published on every invoice. P1 store-down or checkout-broken: 30 minutes to 1 hour depending on the tier. P2 revenue-impacting but not store-down: 4 hours. P3 standard feature work: 1 business day. P4 nice-to-have and cosmetic: 3 business days. Response is acknowledgement plus an estimate; resolution follows the ticket's hour budget. SLA adherence is reported every month.

Who owns the code, tickets, and time logs on exit?

You do, on day one and on exit. The theme repo is under your GitHub organization. Linear tickets can be exported as CSV on request. Time logs are sent month-end in CSV plus PDF. Slack Connect channel remains yours to archive. We do not hold assets, dashboards, or ticket history to force renewal. If the retainer is the right fit, you will renew because the work is good, not because the code is hostage.

Can I hire a Shopify freelancer instead of a retainer?

Yes, and sometimes that is the correct answer. A senior Shopify freelancer costs less per hour than an agency retainer but carries three risks: single-person dependency (illness, holidays, churn), no SLA, and no named backup for critical incidents. A retainer costs more per hour but buys redundancy, tiered response time, and a named project manager who sees your queue without you chasing. Stores that run a single external engineer for more than a year usually convert to a retainer after a BFCM outage; the math compounds after the first P1 incident where nobody answered.

Start with a scoping call.

A 30-minute call to size the right block for your store. You leave knowing which retainer tier fits, how rollover and SLA will apply to your context, and what the first week of the Operating System would look like. Scoped quote in 48 hours.