Ideas Engineered for Tomorrow
We Engineer Services & Solutions for Your Business Needs
Consulting Services Hire Book Consulting

Hire Shopify Developers in India

Dedicated Shopify developers in India for the work that actually needs code: Liquid and Online Store 2.0 theme architecture, metafields, checkout extensibility, Functions, custom apps and migrations. Not a theme install with a new logo on it.

Work starts in a duplicated copy of your real theme, on your store, so you are judging commits rather than a portfolio.

Why Is Shopify Developer the Hardest Title on a CV to Read?

Shopify has the lowest entry floor of any commerce platform in wide use. Anyone who has bought a Theme Store theme, changed the colours, installed six apps and launched a store can call themselves a Shopify developer, and thousands of people do. The platform is built that way on purpose. It is supposed to let a merchant get trading without an engineer. The side effect is that the title tells you almost nothing about what the person can do, and the difference between the two ends of the range is enormous.

The floor is a weekend and the ceiling is a different job

At one end sits somebody who is fluent in the admin. They know which app does subscriptions, they can configure a discount, they can rearrange sections in the theme editor. That is a real skill and plenty of merchants need exactly that person. At the other end sits somebody who writes Shopify Functions in Rust, models a catalogue in metaobjects, ships an embedded app against the Admin GraphQL API and knows why a webhook handler has to be idempotent. Both answer to the same job title. Only one of them can do the work you are probably hiring for, and the CV rarely makes it obvious which you are talking to.

Shopify constrains you in a way WordPress does not

This is where the comparison people reach for breaks down. On WordPress, if the platform will not do something, you write the code and it does it, and the only real limit is your own discipline. Shopify is a hosted platform with walls. You cannot query the database. You cannot run arbitrary code in the request path of a page view. You cannot rewrite checkout markup. You get the extension points Shopify chose to give you, and you get them in the shape Shopify chose to give them. That constraint is genuinely good for reliability and genuinely infuriating the first time it blocks a requirement.

Which means the valuable hire is not the one who says yes to everything. It is the one who knows where the walls are, tells you before the estimate rather than after it, and can propose the version of your requirement that fits inside the platform. Somebody who has only worked on the configuration side has never been anywhere near a wall, so they say yes to everything and discover the wall in week four, usually with your launch date attached to it. If you want the same problem examined on a platform with the opposite failure mode, look at what happens on WordPress, where there are no walls at all and the discipline has to come entirely from the team.

What a portfolio of storefronts proves

Not very much, unfortunately. A beautiful store might be a heavily configured paid theme with good photography, and there is no way to tell from the outside. Open the source and you can make a better guess. Look for whether sections carry sensible schema, how many third-party scripts load before anything renders, whether product data is coming from metafields or from a wall of hard-coded HTML in the template. Better still, ask the candidate which parts of a store they wrote and which came with the theme. The honest ones separate the two without being pushed, and that answer alone sorts most shortlists.

Price signals are unreliable here too

Configuration work and engineering work are quoted from the same pool, and the market has not separated them. You can pay a serious rate for somebody who will solve your problem with three overlapping apps, and you can find a genuine Liquid engineer buried in a marketplace listing under an unhelpful headline. The only reliable filter is a technical conversation about the specific platform, which is why the interview section further down this page is longer than the sales pitch.

Three Different Jobs Share the Title

Before you write the brief, work out which of these three you actually have. Getting it wrong is the single most common reason a Shopify hire disappoints, and it is entirely avoidable.

Job one: theme development

Building and maintaining the storefront your customers see. Liquid, sections and blocks, JSON templates, section groups, metafield rendering, the Ajax cart, responsive behaviour, Core Web Vitals. The person doing this job thinks in terms of what a merchandiser will want to change without asking, and builds settings for it. Strong theme developers are usually front-end people who learned Liquid, and their weakness tends to be anything that happens server-side or inside the admin.

Job two: app and integration development

Building software that talks to Shopify rather than software that renders it. Custom apps for one store, public apps for the App Store, ERP and warehouse integrations, order sync, subscription logic, anything involving the Admin GraphQL API, webhooks, OAuth and background jobs. This is ordinary back-end engineering with a Shopify-shaped edge on it, and the people who are good at it are frequently mediocre at Liquid. That is fine. It is not the same job.

Job three: store operations and optimisation

Keeping a trading store fast, tidy and converting. Auditing the app stack, deleting the residue left by apps somebody uninstalled two years ago, fixing the product page that takes four seconds on a mid-range Android, tightening the checkout journey, getting the analytics to agree with the orders. This role is part engineer, part detective. It is the one merchants under-hire for and the one that most often produces a measurable result in the first month, because the store is usually carrying years of accumulated decisions nobody has revisited.

Why the mismatch is expensive

Hire a theme specialist and hand them an ERP integration and you get a fragile script polling the Admin API on a cron with no retry logic. Hire a back-end engineer and hand them a storefront and you get a technically correct theme your merchandising team cannot operate, so every campaign becomes a ticket. Hire either of them to fix a slow store and they will start rewriting things instead of measuring first. Say in the brief which job it is. If it is genuinely two of them, that is a reason to talk about two people rather than to hope one person covers both.

Liquid, Theme Architecture and Why Just Edit the Theme Breaks

Liquid is Shopify template language. It renders on Shopify servers, it has no access to a database, and it deliberately cannot do arbitrary computation. You get objects the platform hands you, a set of filters and tags, and loops with limits. Developers arriving from PHP or JavaScript find it restrictive for about a fortnight and then stop noticing, because most storefront logic really is presentation.

Online Store 2.0 changed the unit of work

Older themes had fixed page templates written in Liquid, so every layout change was a code change. Online Store 2.0 moved the storefront to JSON templates: a file that lists which sections render on a page and in what order, with each section living in its own file with a schema describing its settings. Merchandisers reorder those sections in the theme editor. Section groups extend the same idea to the header and footer, so an announcement bar or a campaign navigation variant no longer needs a developer at all.

Blocks are where the real design work sits. A section that accepts blocks gives your team repeatable, reorderable units rather than forty flat settings, and app blocks let an installed app render inside a section without anybody editing theme files. The judgement a good developer makes is simple to state and hard to do well: anything a merchandiser will want to change more than once becomes a setting, anything structural stays in code, and the schema is named in the words your team uses about the store rather than the words the developer used in the template.

The theme update problem, which is the real answer to just edit the theme

Here is the thing that catches most merchants. When you update a Theme Store theme, Shopify installs a fresh copy of the vendor code. Your settings and content mostly survive because they live in JSON. Your edits to Liquid files do not, because those files are replaced by the new versions. If your developer solved every requirement by opening the nearest template and typing into it, you now have a choice between staying on an old theme forever or paying somebody to redo the work by hand, and they have to find it first.

The way out is architectural and it has to be decided at the start. Keep customisation in your own sections and snippets rather than in the vendor files. Push content into metafields and metaobjects so it is data rather than markup. Where a vendor file genuinely must change, keep the diff small and write down what and why. Ask a candidate what happens to their customisations on an update and listen for whether they have actually lived through one. The ones who have will bring up the diff without prompting.

Forks, paid themes and the question nobody asks early enough

There are three states a store can be in and they are maintained completely differently. A Theme Store theme lightly configured can be updated more or less on demand. A Theme Store theme heavily forked cannot, and pretending otherwise wastes a quarter. A custom theme built from Dawn or from scratch has no upstream at all, which sounds worse and is often simpler, because there is nothing to merge and one team owns everything. Establishing which of the three you have is the first question on any scoping call, because it determines whether the next twelve months are maintenance or archaeology.

Tooling that tells you something about the candidate

Ask how they work locally. The Shopify CLI runs a theme development server against a real store with hot reload, and the GitHub integration syncs theme code to a branch so changes go through review instead of through the code editor in the admin. Theme Check catches Liquid and schema mistakes before they ship. A developer who edits live theme files in the admin browser is telling you something about how the rest of the engagement will go, and it is worth hearing early.

Metafields and Metaobjects Are How You Model Custom Data

Shopify gives a product a title, a description, images, variants and a handful of other fields. Real catalogues need more: fabric composition, allergen information, wattage, certification badges, the designer biography, the size chart, the assembly PDF. Where that extra data lives is one of the decisions that pays back most on a Shopify build, and it is invisible from the front end, which is why it gets made badly.

Definitions, types and validation

A metafield definition attaches typed storage to a resource: products, variants, collections, customers, orders, the shop itself. Types matter more than they look. A dimension field typed as a dimension gives you units and a proper admin input. The same field typed as single-line text gives you a box that will eventually contain 12cm, 12 cm, twelve centimetres and an empty string, at which point your product template needs conditionals to survive its own data. Validation rules, sensible defaults and a naming convention set at the start are the cheapest work on the whole project.

Metaobjects for content that is not attached to one product

Metaobjects are the piece most people discover late. They are reusable structured records with typed fields, authored in the admin, referenced from products, collections or pages. A size chart defined once and pointed at from four hundred products is edited in one place and correct everywhere. Care instructions, store locations, ingredient panels, fabric explainers, delivery-promise blocks and material glossaries all belong here. The same content pasted into a rich text field on each product becomes a permanent tax on your merchandising team.

Where metafields stop being the answer

They are storage, not a query engine. You cannot join on them the way you would in SQL, and building a faceted filter over a dozen custom attributes is a different problem from displaying those attributes. Shopify search and discovery handles some of it, filter apps handle more, and past a certain complexity the honest answer is a search service alongside the store. High-churn transactional data, per-customer state and anything with a write pattern belongs in an app with its own database, not in metafields being written to by a theme. A developer who knows that boundary saves you a rewrite.

The one-line screening question

Ask how they would add a care-instructions field to a product without installing an app. The answer you want mentions a metafield definition with a proper type, filling it from the product page in the admin, and rendering it in the product template with a conditional so products without a value do not print an empty heading. The answer that ends the interview is the name of an app.

What Can You Actually Change About Shopify Checkout?

Checkout is the biggest constraint on the platform and the source of more scoping arguments than everything else combined. Shopify owns it, hosts it, optimises it and will not let you rewrite it, because it is the part of the system carrying the money and it is shared across every store. Understanding what is open and what is closed is most of what separates a Shopify developer from a web developer who has seen Shopify.

checkout.liquid is gone, and with it a decade of hacks

There used to be a file. Stores on Plus could edit it and did, sometimes wildly, and the additional scripts box on the order status page absorbed everything else: analytics tags, upsell widgets, trust badges, survey embeds. Shopify has retired that model in favour of checkout extensibility. If you inherited a store with years of accumulated checkout customisation, the migration is a project with its own audit, not a ticket, and roughly a third of what you find will turn out to be decorative and worth retiring rather than rebuilding.

Checkout UI extensions

Anything you want to appear between the cart and the thank-you page is now a Checkout UI extension. It renders into a defined extension point using a fixed component set, it runs sandboxed rather than as a script on the page, and it cannot repaint the checkout to look like your brand guidelines. Delivery date pickers, gift messages, custom order fields, subscription notices, upsells and post-purchase offers all live here. Visual branding is handled separately through checkout branding settings, which cover typography, colour and some layout, and stop well short of a redesign. The sandbox is the single most common surprise for merchants coming from a hand-built checkout, and it is better delivered in the first conversation than in week three.

Shopify Functions for anything that changes the numbers

Presentation is one thing. Changing what is charged is another, and that is what Functions are for. A Function is a small module compiled to WebAssembly, written in Rust or JavaScript, that Shopify executes inside its own infrastructure with a defined input query and a defined output. Discount Functions express promotions the native engine cannot, such as tiered thresholds across one collection with exclusions. Delivery and payment customisation Functions reorder, rename or hide methods, which is how a wholesale account stops seeing a retail courier option. Cart transform Functions expand a bundle into component lines or apply per-line pricing. Because they run server-side, the behaviour holds whether the order arrives through the online store, the Shop app or a headless front end, which is exactly what the old client-side hacks could never promise.

Functions execute under strict limits on input size and running time, which is a design constraint rather than a footnote. Ask a candidate how they would keep an input query narrow, and what they would do if the rule needs data the input does not expose. There is a real answer involving metafields on the resources the Function can see, and a wrong answer involving an external API call.

What Plus actually buys you here

Some of the checkout surfaces are gated to Shopify Plus rather than available on every plan, and the gating has moved more than once, so treat any list you read as dated and check the current Shopify documentation against your plan before you scope. The stable parts of the picture: Plus is where native B2B lives, with company accounts, buyer contacts, payment terms and catalogues carrying per-company price lists, which replaces the tag-driven wholesale pricing hacks that came before it. Plus is where several storefronts sit under one organisation, which raises its own questions about keeping theme code, metaobject definitions and app installs in step. And Plus carries higher API limits, which matters for integrations rather than for shoppers.

Payments, and the part that varies by country

Shopify Payments is not available everywhere, and where it is not, you are on a third-party gateway with its own onboarding, its own settlement behaviour and its own failure modes. Merchants selling into India, the Gulf or parts of Southeast Asia usually end up with a local acquirer alongside the platform default, and the integration work sits partly in Shopify and partly outside it. If that is your situation, our payment gateway integration services in India page covers the gateway side of the same problem in more detail.

Apps Are the Solution and the Liability at the Same Time

The app ecosystem is the reason Shopify wins. Reviews, subscriptions, loyalty, wishlists, bundles, upsells, shipping rules, returns: all of it exists, all of it is cheaper than building, and a developer who insists on writing it themselves is burning your money. Every store should exhaust configuration before it writes code. The catch is that apps compound, and nobody is watching the total.

What app bloat actually does to a store

Most apps need to appear on the storefront, and historically that meant injecting a script tag into every page whether the feature was used there or not. Shopify has been pushing developers towards theme app extensions and app embed blocks, which are better behaved and can be scoped to specific templates, but plenty of installed apps predate that or ignore it. The result on a mature store is a product page loading a dozen third-party scripts, two of which are doing the same job, one of which belongs to an app the team stopped using in 2023, and one of which is blocking the render of the price.

Uninstall residue is the part nobody warns you about

Uninstalling an app removes its access. It does not reliably remove what it left behind. Snippets it wrote into your theme stay. Liquid it inserted into product templates stays and sometimes throws errors once the app is gone. Metafields it created stay, orphaned. Tags it applied to products and customers stay. Webhook endpoints stop mattering but the code that called them may not. A store that has trialled thirty apps over five years is carrying sediment, and clearing it is genuinely useful work that pays for itself in page weight and in the number of unexplained things nobody wants to touch.

When to build instead of install

Build when the logic is specific to how your business actually works and no app models it without you bending your operation to fit. Build when three apps are each doing 60 per cent of a job and fighting over the same part of the cart. Build when the app you depend on has a roadmap you do not control and a pricing model that scales with your order volume rather than with the value it provides. Otherwise, install. That judgement is worth hiring for on its own, and a developer who never recommends an app is as much of a problem as one who never writes code.

The audit that starts most operations engagements

Before anything gets optimised, list every installed app, what it does, which team asked for it, what it costs monthly, and what it injects into the storefront. That table is usually the first time anybody has seen the whole picture, and it typically ends with three uninstalls, one consolidation and a much shorter conversation about performance. Do it before you commission a redesign, not after.

The API Surface Your Integration Will Live On

If your brief involves an ERP, a warehouse, a PIM, a marketplace feed or a subscription engine, the theme is barely relevant and the API surface is the whole job. This is where a back-end engineer earns their place, and where a theme specialist will produce something that works in a demo and falls over on a Monday.

Admin GraphQL, and why REST is the legacy path

Shopify offers a REST Admin API and a GraphQL Admin API. Shopify has been clear that GraphQL is the path forward and that REST is the legacy surface, with newer capabilities landing on GraphQL first or only. Practically, that means any integration you commission now should be written against the GraphQL Admin API, and a candidate whose entire Shopify API experience is REST endpoints is telling you when they last did integration work. Ask what they do about bulk operations, because pulling a large catalogue page by page through the normal query path is the wrong tool and Shopify provides a bulk operation flow specifically for it.

Rate limits are calculated, not counted

This trips up developers arriving from other platforms. The GraphQL Admin API does not count your requests, it prices them. Every query has a calculated cost based on how much it asks for, you spend from a bucket that refills at a steady rate, and an expensive query costs far more than a cheap one even though both are a single call. REST uses a different mechanism again. Do not design against numbers you read in a blog post, including this one: the limits differ by plan and Shopify changes them, so check the current documentation and, more importantly, read the cost information Shopify returns in the response and back off against that rather than against a hard-coded sleep. A candidate who mentions reading the throttle status out of the response has done this for real.

Storefront API and customer accounts

The Storefront API is the read-mostly public surface for building a shopping experience outside the theme: product and collection data, cart creation and mutation, checkout hand-off. It is what a Hydrogen site queries, what a mobile app would use, and what any custom front end depends on. Customer-facing account functionality has its own newer surface, which matters if your brief includes order history, reorder flows or account portals, and it is worth asking a candidate which one they have built against, because the older approaches are being retired.

Webhooks, and why you must handle replays

Webhooks are how Shopify tells your system something happened: an order was paid, a product changed, a customer was created. Three things about them decide whether your integration is trustworthy. Verify the HMAC signature on every delivery, because an unverified endpoint is an open door into your order pipeline. Handle duplicates, because delivery is at-least-once and you will receive the same event twice, which means an order handler that appends rather than upserts will eventually double-charge somebody or double-ship something. And handle absence, because if your endpoint fails often enough Shopify will stop sending, and the failure mode is silence rather than an error. Serious integrations dedupe on the webhook identifier, make handlers idempotent, and run a reconciliation job that queries the Admin API on a schedule to catch what the stream missed. If a candidate does not raise replays and idempotency when you describe an order sync, that is the answer to the interview.

API versioning is a maintenance calendar

Shopify ships dated API versions on a regular cycle and supports each one for a defined window before it stops working. Pinning a version is correct. Pinning it and forgetting is how an integration breaks quietly about a year later, usually when the person who wrote it has moved on. Whoever owns the integration needs a recurring task to read the changelog and move the pin, and that upkeep belongs in the engagement rather than in a surprise invoice.

Is Headless With Hydrogen Right for You, or Just Fashionable?

Headless is the most oversold decision in Shopify. It gets recommended because it is interesting to build, and the costs land on the merchandising team rather than on the person recommending it. Our default answer is no, and we would rather say that on a scoping call than take the larger project.

What Hydrogen and Oxygen actually are

Hydrogen is Shopify React framework for building a storefront that queries the Storefront API directly instead of rendering Liquid. Oxygen is the hosting runtime Shopify provides for deploying it. The framework has tracked the React ecosystem closely enough that you should check which template the Shopify CLI generates today rather than trusting an older tutorial. You do not have to use either: a headless storefront can be built in Next.js, Nuxt or anything else that can call a GraphQL endpoint. Hydrogen and Oxygen are simply the supported path, with the caching and preview integrations already done.

Three cases where it genuinely pays

First, when the same front end serves more than commerce: a publisher with a shop attached, a brand where content and product live in one experience and the content comes from elsewhere. Second, when your organisation already owns a design system in React and maintaining a parallel Liquid implementation of it is the actual cost you are trying to remove. Third, when the storefront needs interaction that a template language cannot express: a configurator with live pricing, a made-to-measure flow, a booking layer over inventory. Notice what is not on that list. Page speed is not a reason. A well-built Liquid theme with a disciplined app stack is fast, and a careless React storefront is slow in more interesting ways.

What you give up, and people underestimate this

The theme editor. That is the whole sentence. Your merchandising team currently changes a homepage layout, swaps a campaign banner or reorders sections without talking to anybody. After headless, each of those is a code change, a review and a deploy, unless you build a content layer to replace what you removed, which is a project of its own. Preview workflows for editors need designing rather than assuming. Some apps that expect to inject into a theme simply will not work and need replacing with direct integrations. Caching becomes your responsibility rather than Shopify. None of that is fatal. All of it is cost, and it should be on the table before the decision, not discovered in month two.

The test we use

Name the thing your storefront must do that Liquid cannot do. If the answer is specific and survives thirty seconds of questioning, headless is probably right. If the answer is about speed, modernity or that the team prefers React, it is not, and you will spend a large budget arriving somewhere slower to change than where you started. When a headless build is the right call, the team shape changes as well, because you are hiring front-end engineers rather than theme developers, which is closer to what our React developers in India page describes.

Why Shopify Stores Are Slow, and What Actually Fixes It

Almost nobody has a slow store because Shopify is slow. Shopify hosts the platform, runs the CDN and has strong commercial reasons to keep response times down. When a store is slow, the cause is nearly always something the merchant added, and the two biggest categories are apps and images. That is a boring answer and it is the true one.

Start by measuring the right thing

The score in the Shopify admin is a rolling average across a sample of pages and it is close to useless for debugging. So is a desktop score on a fast connection. Measure the page that matters, usually a product page, on a mid-range mobile profile on a throttled connection, and identify the largest contentful element before touching anything. Field data from real visitors beats a lab run, because your traffic is not on your laptop. Half of all performance work goes wrong because somebody optimised the page that was already fine.

Images, which are usually the largest contentful element

Shopify CDN will resize and reformat on request, so there is no excuse for a 2400 pixel hero being served to a 390 pixel phone. Use the image URL filters to request appropriate sizes, produce a proper srcset with width descriptors, set explicit width and height so the layout does not shift while loading, and preload only the hero. Everything below the fold is lazy-loaded. A single carousel eagerly loading five full-size slides can be most of your problem, and fixing it takes an afternoon.

The app tax and the render budget

Every storefront script has a cost, and the ones added by apps are usually loaded on every template because that is the easy install. Move app embeds to the templates that need them, remove the apps nobody uses, and check whether two of them are shipping the same library. On the Liquid side, watch loops. Iterating over a large collection to compute something, or fetching related products by looping over the catalogue, spends server render time in a way the CDN cannot fix. Slow time-to-first-byte on a Shopify page is almost always the theme doing too much per request.

The screening question that reveals method

Ask how they would debug a product page that takes four seconds on mobile. The answer you want is a sequence, not a fix. Reproduce on a throttled mobile profile, open the waterfall, separate server time from render time, identify the largest contentful element and what is blocking it, attribute every third-party request to an app, then change one thing and measure again. The answer that should worry you is a list of tools they would install, particularly if a speed optimisation app is on it. Adding a script to make a page faster is a strange plan and it goes wrong often enough to be a genuine signal.

Migrating In From WooCommerce or Magento

Replatforming onto Shopify is a common brief and the effort is distributed differently from how people expect. Moving the data is the small part. Reproducing the behaviour is the large part, and protecting the traffic is the part that gets skipped and hurts most.

The data move is routine

Products, variants, customers, collections and historical orders come across through the Admin API for anything scripted, or through a bulk import tool for anything spreadsheet-shaped. Expect a mapping exercise rather than a copy: attributes become metafields, categories become collections with rules, and product types and tags need a convention agreed before the first import rather than after the third one. Historical orders can usually be brought in for reference, though refunds and edits against imported orders behave differently from native ones and that limitation should be understood before you promise your finance team anything.

URLs and redirects, which is where rankings die

Shopify enforces its own URL structure with fixed prefixes for products and collections, so almost nothing keeps its old path. Every old URL with traffic or links pointing at it needs a 301 to its nearest new equivalent, mapped and loaded before the switch rather than a week after. Do a crawl of the old site, join it against your analytics and search data, and treat anything with either traffic or backlinks as mandatory. The stores that lose visibility after a replatform almost always lost it here, and the recovery costs far more than the mapping would have.

Business rules have to be re-expressed, not ported

This is the real work. A WooCommerce store carries logic in PHP hooks and filters. A Magento store carries it in observers, plugins and layout XML. None of that runs on Shopify. Each rule has to be identified, understood and rebuilt on the surface that now owns it: a Function for pricing and shipping logic, an app for anything with its own data or scheduling, Flow for admin-side automation, theme code for presentation. The discovery phase, listing every behaviour the current store has that nobody documented, is the honest bulk of a migration estimate. If you are moving in the other direction or keeping both, our WordPress and WooCommerce developers in India cover that side.

Catalogue shape and the variant ceiling

Shopify limits how many variants a single product can have and how many options define them. The limits have been raised over time and differ in ways worth checking against current documentation rather than memory, but the pattern holds: a Magento configurable product with several attributes and hundreds of combinations frequently will not fit as one Shopify product. The fix is remodelling, splitting into linked products, moving attributes into metafields, or handling combinations through a bundle or configurator. Find this out during scoping by counting your worst product, not during the import when it starts rejecting rows.

What Should You Ask a Shopify Developer in an Interview?

Four questions will sort almost any Shopify shortlist, and you do not need to be technical to run them. The signal you want is simple. Has this person lived inside the platform, or only read about it?

How would you add a custom field to a product without an app?

Covered above, and it is the fastest filter there is. Metafield definition, correct type, admin input, rendered in the template with a conditional. If the reply names an app, you are talking to a configurator. If the reply also mentions where the definition should live so it is reusable across a product type, you are talking to somebody who has maintained a catalogue rather than launched one.

What happens to your theme customisations when the theme updates?

This separates people who have owned a store for two years from people who have launched several and left. You want to hear that direct edits to vendor files are replaced, that the defence is keeping work in your own sections and snippets and in metafields, and that any unavoidable change to a vendor file gets recorded so it can be reapplied. A confident nothing happens is wrong, and worth knowing early.

Walk me through debugging a product page that takes four seconds on mobile

You are testing method, not knowledge. Good answers reproduce first, measure on a realistic device profile, separate server time from front-end time, attribute third-party requests to specific apps, and change one variable at a time. Weak answers jump to a solution in the first sentence, and the solution is usually installing something.

When would you tell a client not to go headless?

The best question on the list, because it tests judgement and honesty at once. You want somebody who reaches for the merchandising cost immediately: the theme editor disappears, every layout change becomes a deploy, and a small team without front-end engineering capacity will regret it. A candidate who is enthusiastic about headless in every situation is optimising for the interesting project rather than for your store, and that tendency does not stop after they are hired.

One non-technical question worth adding

Ask how they would hand a change over to a marketing team that does not write code. The answer reveals whether they build settings or hard-code values, whether they document, and whether they think of your team as the eventual owner of the work or as people who will keep raising tickets. Developers who cannot answer this are the ones whose work becomes a permanent dependency.

Three Hiring Situations That Come Up Repeatedly

What follows is generalised from the kinds of brief that land in the inbox. No individual client is described. The reason for writing them down is that merchants who recognise their own store in one of these usually change what they were about to hire for.

The store that grew past its theme

Trading well, built four years ago by an agency that has since moved on, running a paid theme that has been edited directly and can no longer be updated, with eighteen apps installed and nobody sure what four of them do. The instinct is a redesign. The better first move is usually an audit and a stabilisation pass: catalogue the apps, clear uninstall residue, decide whether the theme is salvageable or whether a rebuild on a clean base costs less than the merge, and get performance measured before anybody argues about colours. Redesign afterwards, with the data model sorted, and it is a smaller project than it looked.

The operations team drowning in manual work

Orders exported to a spreadsheet, retyped into an ERP, inventory reconciled by hand every morning, somebody tagging orders by rule at nine every day. This is not a theme problem and hiring a theme developer for it wastes a quarter. It is a custom app with webhooks, idempotent handlers, a reconciliation job and a small admin surface, plus some Flow automation for the parts that do not need code. The measurable outcome arrives in weeks rather than months, and it is one of the few Shopify engagements where the return is easy to calculate before you start.

The brand moving upmarket into B2B or wholesale

Direct to consumer works, wholesale buyers keep asking for accounts, and the current answer is a password page, a discount code and an email thread. The work is partly platform choice, since native B2B is a Plus surface, and partly modelling: company records, buyer contacts, catalogues, price lists, quantity rules, payment terms. The trap is trying to reproduce a wholesale operation through customer tags and manual discounts, which works until the second buyer and then generates support load forever. Scoping this properly means talking to whoever currently handles the wholesale email, not just to the ecommerce manager.

How We Screen and Place Shopify Engineers in India

Our screening is run against the platform rather than against a language, because strong PHP or React on a CV predicts very little about whether somebody can build a section a merchandiser can operate.

The theme exercise

Candidates get a real theme and a merchandising requirement, and we watch where they put the code. Editing a vendor template directly is a fail on its own. What we read afterwards is the schema: are the setting labels written in the language a marketing manager uses, are blocks used where the content repeats, does the section degrade sensibly when a setting is left empty. Whether it renders is the least interesting part of the review.

The second round, chosen against your brief

For an integration role, a paginated Admin GraphQL query with a discussion of query cost and how they would back off when throttled, plus a webhook handler that survives a duplicate delivery. For a checkout or promotions role, a discount Function against a written rule, with attention to what the input query asks for. For an operations role, a slow product page and a think-aloud debugging session. One of these, not all three, because the point is the job you are hiring for.

Written English, because this job is written

Across a timezone gap, most communication is a pull request description, a ticket comment or an end-of-day summary. We read what candidates write, not just how they speak, because a developer who cannot explain a trade-off in three clear sentences will cost you more in clarification than they save in code.

Why the timeline is short

Engineers are kept on the bench rather than recruited once a brief arrives, which is the whole reason the dates work. Matching against your requirement runs within 48 hours, and most engagements are working in your store within 7 days of that. Nobody is being recruited against your brief, which is what removes the usual wait between deciding to hire and somebody actually starting.

Running a Shopify Engagement Across the India Timezone Gap

The gap is real and worth stating plainly, because the merchants who struggle offshore are usually the ones who were told it would not be an issue.

The arithmetic, which nobody should have to guess at

The offset is UTC+5:30 and it holds all twelve months, because India runs no daylight saving at all. Only your clocks move, so the gap widens and narrows on your side of it. A working day that starts at 09:30 IST and finishes at 18:30 translates to 04:00 through 13:00 UTC. London working 09:00 to 17:30 keeps four of those hours in winter and five under British Summer Time. Sydney on UTC+11 shares 15:00 to 17:30 local, call it two and a half hours, closer to three and a half once they drop back to UTC+10. Eastern time in the United States gets zero. By the time a laptop opens in Manhattan the working day here has already closed.

US overlap therefore has to be bought, and it is bought with somebody evening. A shift of 14:30 to 23:30 IST is 09:00 to 18:00 UTC, which gives a New York team four shared hours on Eastern Standard Time and five on daylight time. West Coast merchants get one or two even then. That is a staffing arrangement with a person attached to it, agreed in writing before anyone starts, not a thing to raise in week three.

The Shopify-specific problem: the trading calendar

Commerce work has a delivery constraint most software does not. There are weeks of the year when nothing should be deployed, and everyone in retail knows which ones. Peak season, your own sale windows, a product launch with paid media behind it: a theme publish during any of those is a bad idea regardless of how good the code is. Agree a freeze calendar at the start of the engagement, decide who can authorise an exception, and be explicit about publishing windows for anything touching cart, checkout or pricing. This matters more offshore, because the person who published the change may be asleep when the first order fails.

What the overlap should be spent on

Decisions, demos, and unblocking. Not status, which belongs in writing where it can be read later. Four hours a day of genuine attention is plenty for a store, provided the rest of the day is written down. The rhythm that works is an end-of-Indian-day summary posted while you are asleep, covering what shipped, what is blocked, and the specific questions only you can answer, so your morning starts with something to act on rather than a request for a call.

Review and definition of done

Work goes through your repository and your review rules, which is the control that matters, because nothing reaches your live theme without somebody on your side seeing it. Agree what done means before the first ticket. For Shopify work ours usually includes: previewed on a duplicated theme with your real content rather than sample data, checked on a mid-range mobile profile, no direct edits to vendor theme files without a recorded reason, no new storefront script without a stated owner, and a note in the pull request describing what to watch after publishing. Amend that list to fit your store, but settle it early.

Access, Ownership and What Happens If It Is Not Working

Three questions worth settling before the first commit rather than at the point you need the answer.

Access, and giving less of it than you are about to

Shopify has two ways to let an outsider in and the difference matters. A staff account consumes a seat on your plan and belongs to your organisation. A collaborator account is requested by the developer using a code you control, does not use a seat, and can be revoked by you at any time without asking anybody. For agency and contractor work the collaborator route is usually the right one. Either way, grant only the permissions the work needs, keep two-factor authentication enforced, and review who still has access every quarter, because the account nobody removed is a recurring theme in the stores we are asked to clean up.

Who owns the theme code, the app code and the data

You do. Who owns the output, what stays confidential, and how the customer records held inside Shopify are treated all get settled in writing before a first branch exists, and that wording is something worked out with you rather than presented to you. The stronger protection is structural though. Theme code sits in your repository. Custom app code sits in your repository and deploys onto infrastructure you pay for. Nothing accumulates in a private copy somewhere you cannot look.

When the engineer is not the right fit

Everyone asks about this and most answers are deliberately soft, so here is the plain one. Should the engineer placed with you turn out to be wrong for the work, you get a replacement inside 48 hours, and the shortlist belongs to you rather than one name being presented as the answer. Raising it early costs nothing and is far cheaper than three months of hoping it settles down.

Getting out cleanly

Plan for the engagement ending, because one day it will. The thing that protects you is not a clause. It is that everything happened in daylight from the first week: your repository, your Shopify organisation, your app infrastructure, decisions recorded somewhere you can find them, and a document listing which theme settings your team now controls and where each custom surface lives. On that footing a handover is a walkthrough and an afternoon. Without it, a handover is an investigation. Notice and handover terms get settled with you at the point the engagement is set up, so nothing about them is assumed on this page.

Ways to Structure the Engagement

Which shape fits depends on how much of the work is already decided. Briefs frequently ask for one and describe another, and it is cheaper to say so at the start than to discover it at invoice time.

A dedicated Shopify developer

One engineer, your store only, working from your board under your review rules and reporting to you rather than to us. Right whenever the roadmap keeps moving, which describes most trading stores, and it is the arrangement merchants have in mind when they search for a dedicated Shopify developer in India. It is also where the overlap conversation earns its keep, since somebody embedded in a team has to be reachable by that team.

A scoped project

A single outcome, with acceptance criteria written down before work opens. Fits a migration, a checkout extensibility rebuild, a headless build with a settled feature list, or a theme rebuilt on a clean base. Avoid it while requirements are still in motion, because arguing about change requests ends up costing more than the development did.

An ongoing retainer

Upkeep rather than delivery. App stack kept tidy, API version pins moved before they expire, theme updates evaluated and applied, performance watched, small merchandising changes as they come up, and somebody who knows the store when something breaks. The sensible answer for a store that is built but still earns. Where Shopify is one part of a wider hiring plan, our guide to hiring developers in India deals with how mixed-skill teams get assembled.

Frequently Asked Questions

What separates a Shopify developer from someone who installs and configures themes?

The configurator solves every requirement by finding a setting or an app, and stops when neither exists. A developer opens the theme, writes a section with a schema your merchandisers can operate, and models the data in metafields so it survives the next theme update. The difference shows up about a year later, in how many apps are installed, how many of them overlap, and whether anybody can update the theme without a rebuild.

Can you add a custom field to a product without installing an app?

Yes, and this is the first thing we screen for. You create a metafield definition on the product resource, give it a proper type and validation, fill it in from the product page in the admin, and render it in Liquid on the product template. No app, no monthly fee, no injected script. If a candidate reaches for the app store to add a care-instructions field, they are a configurator rather than a developer.

What happens to our theme customisations when the theme gets an update?

Updating a Theme Store theme installs a fresh copy of the vendor code. Settings and content generally carry across because they live in JSON, but edits made directly to Liquid files do not, because those files are replaced. Any customisation you want to keep has to be either a setting, a separate section or snippet, or a merge somebody performs by hand. Teams that skipped that decision end up frozen on a theme version they cannot leave.

How much of Shopify checkout can we actually change?

Less than most merchants expect, and that is deliberate. Shopify has retired checkout.liquid editing, so visual changes now happen through checkout branding settings and Checkout UI extensions that render into defined extension points with a sandboxed component set. Anything that changes what is charged or which methods appear is a Shopify Function. Some of those Function surfaces are gated to Plus, so confirm your plan against the current Shopify documentation before scoping.

Do we need Shopify Plus for what we are asking for?

Often not. Metafields, metaobjects, custom apps, the Admin GraphQL API and theme work are all available without it. Plus is what you buy for native B2B company accounts and price lists, several storefronts under one organisation, and the checkout customisation surfaces that are gated. We would rather tell you on the scoping call that your requirement fits your current plan than let you upgrade for something you already have.

Should we go headless with Hydrogen?

Usually no. Ask one thing first: can you name a job your storefront has to do that Liquid genuinely cannot? Good reasons do exist, such as a front end shared with a non-Shopify property, rendering logic beyond what a template language reaches, or a component library your web team already maintains in React. Speed is rarely among them, and decoupling costs you the theme editor, which merchandisers notice inside a month.

How much overlap will we get with a Shopify developer in India?

The offset here is UTC+5:30 every month of the year, with no daylight saving, so all the movement happens on your clock. A day that runs 09:30 to 18:30 IST sits on 04:00 through 13:00 UTC. London keeps roughly four of those hours in winter and five under British Summer Time. Sydney sees between two and a half and three and a half. New York sees none, so American overlap has to be purchased by pushing the working day here into the night, and that is a staffing arrangement to put in writing before anyone starts.

Can you migrate our WooCommerce store to Shopify without losing rankings?

Rankings survive redirects, not hope. Shopify enforces its own URL prefixes, so almost every product and category path changes, and each old path needs a 301 to its new home before the switch rather than after it. The data move is routine. The parts that take real time are re-expressing server-side business rules that used to live in PHP hooks, and remodelling configurable products that exceed Shopify variant limits.

Which of the three Shopify jobs is yours?

A theme, an integration, or a store that has outgrown the way it was built. Send a few lines describing it and you will get a straight answer about the kind of Shopify engineer that fits, up to and including the cases where nobody needs hiring at all.

Hiring for WooCommerce Instead