Shopify

Shopify Development Services: What You're Actually Buying

Three Shopify quotes, three different scopes. Here's how to tell what you're actually paying for before you sign anything.

A shop owner reviews a printed list of pricing details at a desk near shelves of packed boxes.

You've got a store that mostly works, a few things that don't, and three quotes in your inbox that all read about the same. One is a monthly retainer. One is a package with a name on it. One is a developer who wants an hour of your time before he'll say a number.

None of them tell you what you're actually getting.

Shopify development services covers everything from a theme tweak to a full store migration to standing access to your admin for a year. That's a wide gap, and it's where most of the money goes missing. The words are the same. The work isn't.

Read this and you'll be able to look at any proposal and tell whether you're buying a defined piece of work or a subscription to someone else's calendar.

"Shopify development services" means different things depending on who's selling

A freelancer saying Shopify development services usually means theme customization, hands on the code in your theme. Send him a list, he works through it, he bills for the hours. Narrow, cheap, and only as good as the list you gave him.

A Shopify agency means something wider. Strategy calls, design, build, then an ongoing relationship they'd rather not put an end date on. Some of that is real value. Some of it is account management you're paying for whether you use it or not.

Shopify's own partner directory is a third thing again. It's a marketplace listing, and the Shopify developers and experts in there range from one person in a spare room to a forty-seat shop. The badge tells you they've done Shopify work before. It doesn't tell you what a project with them looks like.

So the phrase doesn't describe scope. You have to ask.

What we're interested in here is the shape of the engagement: who gets access to what, when a price gets attached to a piece of work, and what you're left holding when it's done. If you want the other half of the picture — the actual technical work, what a theme is, what a developer does inside a Shopify store — that's covered in our Shopify web development guide.

Most Shopify agencies sell maintenance and support by the month

The standard offer is a monthly fee for access to a developer's time. Sometimes it's sold as a block of hours. Sometimes it's called maintenance and support. Either way, you pay the same amount in a month where three things got fixed and in a month where nothing got touched.

Nobody hands you a list of what will be done. That's the part worth noticing. The agreement covers availability, not outcomes. So the work that gets done in month four depends on what you happened to email about, and what else was in the queue that week.

Owners feel this before they can name it. You know the cost of the store going in. Six months later you can't say what the pricing bought you. There's a login, a few tickets, a theme update, and a nagging sense that the store still does the same annoying things it did in January.

It's not dishonest. Retainers are easy to sell and easy to invoice, and for a Shopify Plus store with constant new campaigns and a merchandiser on staff, ongoing time makes sense.

For a trade or service business selling parts, filters, or service plans online, it mostly means paying for a relationship instead of paying for repairs.

Good Shopify developers start with read-only access

Before anyone touches a store, we ask for a staff account with view permissions. Not the owner login. Not app install rights. Not payment settings. A separate account, with the boxes you choose checked, that lets us read what's there.

In Shopify that's under Settings, then Users and permissions. You add a staff member, then tick the permissions one at a time: products, orders, customers, reports, apps. Leave anything that changes money or installs software unchecked. You can do it in about five minutes and remove the account just as fast when the review is done.

Two things come out of this. The first is that nothing breaks while we're looking. A store getting orders today shouldn't have someone editing collection rules or swapping a theme file during a quoting phase. Reading doesn't change anything.

The second matters more. You can see exactly what we saw. The same product list, the same app list, the same reports. When the written list of fixes comes back and says your collections are hand-picked instead of rules-based, or that four apps are loading on every page, you can open the same screen and check. Nobody has to take our word for it.

Any shop that asks for full admin before they've told you what's wrong is asking for the run of your store on trust. Some of them are fine. But the order is backwards. Access to change things should come after you've agreed what's being changed, and after you've picked what you're paying for.

A written list of fixes, each with its own cost

The list is plain. One line per problem, in the words your office would use, with the fix and its cost sitting right beside it.

Not "optimize product taxonomy." More like: Product titles and tags are inconsistent across 60-odd SKUs, so search and filters miss items customers are looking for. Rebuild the tag scheme and apply it. Then a fixed price for that line.

You read down the list and pick. Some owners take three lines and stop. Some take everything except the training, because they have someone in the office who already knows the store. Some take the shipping routing first because that's the thing costing them money every week, and leave the rest for later. All of those are fine answers.

What this does is put the pricing decision back where it belongs. You're not approving a direction and hoping the invoices stay reasonable. You're approving a specific piece of work at a known cost, and you can say no to any line without killing the project.

It also forces us to be honest about scope. When a fix has a price attached before the work starts, we have to understand it properly first. Vague problems can't be priced, so vague problems get investigated or dropped from the list. That's a useful filter for you too.

Ask for the list in writing, from anyone you talk to. If a shop can't put specific problems and specific numbers on a page before you sign, they either haven't looked at your store yet or they don't intend to commit to a figure. Both are worth knowing this week.

Tagging and metafields your ecommerce store actually uses

Tags are where most stores go sideways. One person types "Commercial," the next types "commercial-grade," someone imports a batch from a supplier spreadsheet and now there's "COMM." Filters break quietly. A collection that's supposed to pull in forty products pulls in nine, and nobody notices until a customer says they couldn't find the thing they called about.

Structure is the other half. Variants get used for things that should be separate products, or separate products get created for what is really a size option. Product types are blank. Vendors are inconsistent. None of that shows on the page, so it sits there for years while the store gets harder to work in.

Metafields are usually the saddest part. Someone set them up during the build, filled in three products, and never touched them again. So the data exists in the admin and does nothing on the storefront.

Fixing this is boring work and easy to check, which is why we like it as a scoped line item. We start by pulling an export of every product on the ecommerce store and listing the actual tag values in use. That list is the evidence. From there the fix is a defined tag vocabulary, a pass to normalize existing products against it, product types and vendors filled in, and a decision on each metafield: use it on the storefront, or delete it.

You can verify the result yourself. Export again after the work is done and the tag list should be short and deliberate. Every filter on the site should return what you expect. And your office should be able to add a new product without guessing what to type.

Collections and menus built for shoppers and SEO optimization

A customer lands on your store knowing roughly what they want. A replacement filter for a unit they own. A part that fits the model number on the sticker. If your menu is organized by how your supplier organizes its catalog, that person has to translate before they can buy. Most won't.

Collections are how you answer the question the customer is already asking. That means smart collections built on the tag vocabulary you just cleaned up, so a product lands in the right place the moment it's created. It means a top menu with a small number of entries a person can read in one glance, and sub-items that use the words customers say out loud rather than internal category names.

The work itself is specific. We map every current collection, note which ones are manual and which are automated, and find the ones that are empty or duplicated. We check what your search bar returns for the five or six terms people actually type. Then we rebuild the menu around those paths and set the collection rules so they hold.

There's an SEO optimization benefit here too, because a collection page with a clear title, a real description and stable products in it is a page Google can rank. Category pages usually pull more search traffic than individual product pages.

You can test this part without any tools. Ask someone who doesn't work at the shop to find a specific item on your store while you watch. Count the clicks. Note where they stop and scroll back up.

Shopify Flow, Klaviyo, and app integration that really fires

Most stores we look at have an abandoned-cart sequence that was switched on once and never tested since. The emails exist. Nobody has checked whether they send, who they send to, or what happens when a customer abandons twice in a week.

So we test it. We put items in a cart with a real address, leave, and wait. If the email arrives, we read it the way a customer would. If it doesn't arrive, we find out why, and the reason is usually boring: a broken app integration between Shopify and Klaviyo, a list that stopped syncing, a flow paused during a theme change and never turned back on.

Shopify Flow is the other half. Flow handles the rules inside your store — tag a customer after their third order, alert the office when a high-value order comes in, hold an order that needs a phone call before it ships. Most stores have none of these. The feature is sitting there unused.

Where Flow and Klaviyo can't reach, custom integrations through the API do the work. Pushing order data into your accounting system, pulling stock counts from a supplier feed, sending a text when a job-related order ships.

All of this is scoped work, not a service you keep paying for. We write down which rules should exist, build them, test each one with a real order, and hand you the list of what fires and when. After that they run. If you want a new rule next year, that's a new piece of work with its own price.

The test you can run this week: abandon a cart on your own store and see what shows up in your inbox.

A store setup for shipping that matches how you really ship

Shopify's default shipping is one flat rate to everywhere, or live carrier rates on the whole cart. Neither one matches a shop that ships small parts by post, drops pallets on a freight carrier, and hands some orders straight to a tech for delivery on the way to a job.

So the first thing we ask is how orders actually leave the building. Who packs them. What goes out same day. What ships from a supplier instead of your shelf. What can't legally ship at all and has to be picked up.

Then the store setup gets built to match. That usually means:

  • Shipping profiles so oversized or freight items get their own rates instead of riding on the flat rate
  • Rates by weight or price band, set from your real packed weights rather than a guess
  • Local pickup and local delivery turned on with the right zones, if you serve a service area
  • Separate locations in Shopify when stock sits in more than one place, so inventory and fulfillment don't lie to each other

Getting this wrong costs money quietly. Either you eat the difference on every heavy order, or customers see a rate that scares them off at checkout and you never hear about it.

Test it the way a customer would. Put a heavy item and a small item in the same cart, run it to checkout from an out-of-state address, and see what the site quotes you. Then compare that against what shipping the box would really cost.

An app audit, and the performance fixes that come out of it

Most stores collect apps the way a truck collects tools behind the seat. Something was needed once, an app got installed, the problem passed, and the app stayed. Each one loads its own scripts on every page whether you use it or not.

So the first pass is a full list of what's installed, what it does, and who on your team actually touches it. That usually turns up two apps doing the same job — two review widgets, two popup tools, a bundle app and a discount app fighting over the same cart. Pick one, uninstall the other, and check that the leftover code came out with it. Plenty of apps leave snippets behind in the theme.

Speed work follows from that list. Fewer scripts, images sized for the web, and any app integration that can be replaced by a bit of native Shopify setup gets replaced. A slow product page is a conversion rate optimization (CRO) problem before it is anything else, because people leave before they see the offer.

You can run your own rough version this week. Open your Shopify admin, sort apps by the ones nobody has logged into in months, and ask your team what each one is for. If nobody can answer, that's your answer.

Analytics and tracking that tell the truth

Half the stores we open have two Google Analytics tags firing, a Meta pixel that stopped recording purchases after a theme update, and a checkout that reports revenue nobody can tie back to a source. The owner is looking at numbers that disagree with the bank account, and no amount of testing fixes that.

So tracking gets repaired before anyone touches the store to improve it. One analytics property, one pixel, events firing once each. Purchase values matching what Shopify's own reports say. UTM tags on the links in your email and ads so traffic doesn't all pile into "direct."

Then the numbers are worth arguing about. Conversion rate optimization (CRO) is guessing until you can see which collection page loses people and which one sends them to checkout.

Two checks you can do today. Place a test order and confirm it shows up in your analytics with the right amount, not blank and not doubled. Then open your traffic sources and see how much sits in direct or unassigned. If it's most of it, your links aren't tagged, and every report you've read this year was fiction.

Documented workflows and training — the part almost nobody includes

Most engagements end the day the work ships. The store is better, the developer sends a final email, and nobody on your team knows how any of it was built. Six months later a product needs a new tag and the office opens a support ticket, because that's the only way anyone knows to get it done.

That's how an ongoing maintenance and support bill starts. Not because the store broke. Because nothing was written down.

What should come out of the work is a short set of documents your office can actually follow. How to add a product so it lands in the right collections without anyone touching the navigation. What each metafield is for and what goes in it. Which Flow automations are running, what triggers them, and how to turn one off. Where the Klaviyo flows live and who owns the copy. What to check when an order doesn't route to the right location.

Then a screen-share with the people who'll do the work, recorded, so the next hire watches it instead of asking.

We hand this over as part of the job. Plenty of good Shopify developers won't, and some of that is honest habit rather than a trap. Documentation takes hours that don't show up in the store, and it's hard to charge for.

Ask about it before you sign. Ask any Shopify experts you're talking to what you'll be able to do yourself when they're finished, and what still needs them. Get the answer in writing.

If the honest answer is that every change comes back through them, you're not buying a project. You're buying a subscription with a start date and no end date.

Per-fix pricing is harder to sell and fairer to buy

A retainer is the easier thing to sell. Scope stays soft, the invoice repeats, and nobody has to agree on what "done" looks like. Some months you get a lot of work. Some months you get a status email. The cost is the same either way.

A priced list is harder work on our end. We have to look at your store closely enough to say what each fix costs before we've done it, and then live with that number. If the metafield work takes longer than we thought, that's our problem.

What you get for it is the ability to say no.

You can read down the list, see what fixing your collection logic costs, decide it matters less than the abandoned-cart emails, and buy the emails. You can take the list to another shop and ask them to price the same items. You can approve three fixes this month and three more after your busy season. You can skip one entirely because you already know the workaround and it doesn't bother you.

None of that is possible with a monthly number. You can't decline part of a retainer. You can only cancel it, which most owners put off for months because the store is half rebuilt and nobody wants to be the person who stopped mid-job.

Ask any developer quoting you on Shopify development services to break the work into items with a price beside each one. If the answer is that it doesn't work that way, it usually means the scope hasn't been worked out yet, and you'd be funding that thinking at an hourly rate.

The accounts and the code stay in your name

Your Shopify store is registered to you. So is the Klaviyo account, the shipping app, the review app, and anything else that gets installed along the way. A developer needs access to do the work, and they should get it from your account, not the other way around.

That sounds obvious until you go to leave. Plenty of owners find the email app is billed to the agency, the domain sits in someone else's registrar login, and the custom integrations built against the Shopify API live in a private repo they've never seen.

We work the other way. You own the accounts. Any custom code we write for your store, including API work connecting Shopify to another system you run, is yours, and it's handed over with the notes that explain it.

Worth checking before you sign anything: whose email is on each app subscription, who owns the domain, and where the code lives. If a developer can't answer those three in a sentence each, ask again.

How long a project like this actually takes

The honest answer is that it depends on what you buy, and you decide that after the audit.

The read-only review comes first, and it's the fastest part. Then you get the written list. If you pick three fixes, the job is short. If you pick nine, it runs longer, and it runs in a queue rather than all at once.

That sequencing matters. A single big rebuild means your store setup gets torn apart and put back together while orders are still coming in. Fixes done one at a time mean each change goes live, gets watched for a few days, and gets corrected if something broke. Product tagging lands before the collections that depend on it. Klaviyo flows go in after the product data they pull from is clean.

Some fixes also wait on you. If we need photos, product descriptions, or a decision about which shipping zones you actually serve, the work sits until that comes back.

Ask any developer to tell you which fix goes first and why. If the order is arbitrary, they haven't looked at how the pieces depend on each other.

When you don't need a full engagement

Plenty of stores are fine. If you sell a dozen products, ship everything the same way, and your abandoned-cart email already goes out, a review of all nine areas is work you don't need. You might have one real problem. Maybe checkout is slow because of an app you stopped using two years ago. Maybe your collections page shows items that are out of stock.

That's a single fix, quoted and done. Ask for it that way. A Shopify agency that only sells full engagements will find nine things to worry about, because that's what it has to sell.

Here's how to tell which you are. Write down what actually loses you money or time right now. Not what could be better. What's broken. If the list is one or two lines, buy one or two fixes. If it runs to a page and half of it is the office typing the same thing into three places, a wider look is worth paying for.

A good Shopify partner will tell you which one you are before you book anything.

What owners ask before they book a call

What are Shopify development services, exactly? Work on a store you already own. Product data, collections, automations, shipping rules, apps, tracking, and the way your office uses all of it. Some shops also build stores from scratch; that's a different job, and we cover the build side separately in our piece on Shopify web development. If someone can't tell you which of those they're selling, that's your answer.

Can I just pay someone to build the store and leave? Yes, and plenty of owners do. It works when the person building it writes down how the thing runs. It fails when they don't, because six months later your office manager needs a new product type added and nobody knows where the tags live. Ask for the documentation in the quote, not as a favor at the end.

How does cost usually work? Two ways. Most Shopify developers bill a monthly retainer, and the hours roll on until you cancel. We price each fix on its own, so you see the work and the number beside it and pick what you want. Neither is cheap. The difference is that per-fix pricing stops when the fixes stop.

Do I need Shopify experts, or can my web person handle it? Depends on the job. Theme edits, page copy, a new banner — your web person is fine. Metafields, Flow, a Klaviyo rebuild, shipping profiles that split by warehouse: those go wrong quietly and stay wrong for months. Get someone who works in Shopify every week.

What if I only need one thing? Buy one thing. Say what's broken and ask for a price on that alone.

If you want a read-only look at your store and a written list of what's worth fixing, book a New Project Consultation.

More onshopifywebsitestrades

Chris Hobbick

The Person Who Wrote This

Chris Hobbick

I build websites, stores, and automations for small businesses. I watch where the work gets stuck, calculate what it costs, and give you a fixed price to remove it.

Meet Chris →

The Newsletter

One useful idea. Once a week.

No trend reports. No recycled marketing advice. One practical breakdown of a problem that costs a small business time or money.

No daily noise. Unsubscribe whenever you want.