Fixed scope
Fixed price
against a written scope
- Written scope and acceptance criteria up front
- Fixed price against that scope
- Staged delivery with review points
- Change requests priced separately, never absorbed silently
We are a Shopify Plus Agency specializing in custom development, B2B, checkout extensibility, ERP/CRM integrations, and retained support for scaling brands.
Book a Free Consultation →A retained block of developer hours each month, prioritised by you and replanned as often as you like. The same developers month to month, and a report at the end of each one showing exactly where the time went.
Most of what a trading store needs is not a project. It is a broken variant picker, a campaign that has to go live on Thursday, an app that started injecting a blocking script, and an API version that expires next quarter.
A retainer is worth little if it is staffed by whoever is free. The value comes from people who already know your theme, your app stack and the reason that one section is the way it is.
We keep the same developers on an account. When they change, you are told and handover happens on our time.
What retainers cover
Every ticket carries an estimate before it starts and actual time when it finishes, and the monthly report shows the split between fixes, improvements and platform upkeep.
If a month was consumed by unplanned breakage, that will be visible — which is usually the argument for fixing the underlying cause.
How it works
Some of a retainer is what you ask for. Some of it is what nobody asks for until it breaks.
Shopify ships API versions quarterly and supports each for about a year. Unmaintained integrations break on that schedule, not yours.
Apps update themselves. What they inject changes. We watch what that costs you on first paint.
Field data reviewed monthly rather than measured once at launch. Performance regressions arrive gradually — a new app here, an uncompressed hero there — and are far cheaper to catch in the month they appear.
Peak traffic periods planned for in advance: a code freeze window agreed, load-sensitive sections reviewed, and a rollback path confirmed before the week that matters rather than during it.
Premium theme updates can overwrite customisations. We track what was changed and where, so an update is a decision rather than a surprise.
New sections and new content reintroduce old problems. Periodic checks stop that accumulating.
You set the priorities. These are the categories the hours usually land in.
Bugs, breakages and the small things that erode trust — triaged by impact, not by who shouted.
Landing pages, promotional mechanics, seasonal merchandising and the things with a fixed date.
Every ticket gets an estimate before work starts, and you can reorder the queue as often as you like. Nothing is locked to a plan agreed at the start of the month, because that is not how a trading store actually works.
Where the hours went, split between fixes, improvements and upkeep, with estimate against actual. When a category keeps consuming the month, that is the argument for a project to fix the cause rather than the symptom.
API versions, deprecations, app updates and theme update decisions — the work that prevents incidents rather than responding to them.
Whatever is left goes to making the store better rather than merely working. See Shopify CRO.
All three are legitimate. This is roughly where each stops making sense.
| Ad-hoc / per-project | Retained hours | |
|---|---|---|
| Response to something broken | Depends who is free | Within the agreed window |
| Knowledge of your store | Rebuilt each engagement | Accumulates |
| Cost predictability | Variable | Fixed monthly |
| Unused capacity | None | Possible in a quiet month |
| Breadth of skills | Whoever you hired | Design, front end, apps, integrations |
| Platform upkeep | Usually nobody’s job | Explicitly in scope |
| Scales down | Yes | Yes, with notice |
| Best when | Genuinely occasional needs | The store is trading and changing |
7 stages. Open any one of them.
Before the first ticket.
We read the theme, inventory the apps, map the integrations and write down what we found. That document is yours regardless of what happens next.
However suits you.
A shared board, email or your own tracker. Each item gets an estimate before it starts, so nothing is a surprise at the end of the month.
Replanned as often as you like.
A short check-in each week or fortnight to reorder the queue. Anything urgent jumps it — that is the point of a retainer.
On preview, then live.
Changes built on a preview theme or branch, reviewed by you, then deployed. Nothing goes straight to a live store without a way back.
Prevention rather than response.
API versions, deprecations, performance drift and theme update decisions, done inside the retainer rather than raised as emergencies later.
Where the hours went.
Split by category with estimate against actual, plus anything we think is worth doing next and why.
Is this still the right shape.
Whether the hours are right, whether recurring work should become a project, and whether you still need us at this level. Sometimes the answer is less.
Three shapes, depending on how well defined the work is. Every one starts with a scoped written proposal — no work begins on a verbal estimate.
Fixed scope
Fixed price
against a written scope
Retainer
Monthly
block of hours
Time & materials
Tracked time
billed as used
Rates are quoted against a written scope rather than published as a tier, because the same service costs very different amounts on a five-template store and a five-hundred-template one.
Retainers are the least category-specific thing we do — but peak season, and therefore the code-freeze conversation, is not.
On-demand Shopify support is a retained block of developer hours each month, prioritised by you and replanned as often as you like, staffed by the same developers month to month. Hours cover fixes, campaign and seasonal work, and platform upkeep — API version currency, app stack drift, Core Web Vitals and theme update decisions — with a monthly report showing where the time went.
A retainer is scoped to what your Shopify store actually needs rather than sold as a package. The honest answer is that very small retainers rarely work — below a certain point the context-switching costs more than the hours deliver.
That is agreed up front and written into the arrangement. What we will not do is quietly bank a quiet month against a future one without saying so.
Response windows are agreed at the start and depend on severity — a broken checkout is not a copy change. We would rather commit to a window we can hold every time than quote a headline number we cannot.
Yes, and it is common. TLX Apps often covers specialist areas — Shopify app work, integrations, performance — alongside an in-house team who own day-to-day changes.
You are told before the hours are used, not after. Either the extra is approved, or the work moves to next month, or the queue is reordered. No overrun arrives as a surprise invoice.
Only under a separate agreement with its own terms, because a genuine out-of-hours commitment means people on call. We will not imply we have that if we have not agreed it.
Yes, with notice. We would rather you paused honestly than kept paying for a service you have stopped using — the quarterly review exists partly to raise that.
The monthly report will show it, split by category with estimate against actual, and we will say so. Recurring work is an argument for a project that fixes the cause — often a technical audit first.
Tell us what your store needs each month and who currently does it. We will come back with an honest read on whether a retainer helps or you just need a project.
Tell us what you are building and we will come back with a straight read on scope — including when the answer is that you do not need us.