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

Hire WordPress Developers in India

Companies hire WordPress developers in India for two very different reasons, and the mistake is treating them as one. Some need a site built. Others have inherited something with sixty plugins and no documentation and need an engineer who can read PHP.

How We Screen

WordPress runs a large share of the web, which means the supply of people willing to call themselves WordPress developers is effectively unlimited. The floor of the profession is a five-minute install and a purchased theme. The ceiling is a PHP engineer who can profile a query, write a plugin that survives three years of core updates, and explain why the site fell over on Black Friday. Both groups use the same three words on a CV. This page is about telling them apart, because that judgement, more than anything else, is what decides whether an offshore WordPress hire saves you a quarter or costs you one.

Why Is Hiring a WordPress Developer Riskier Than Hiring for Any Other Stack?

Nobody accidentally becomes a Kubernetes engineer. The barrier to entry is high enough that the title carries information. WordPress has no such filter, and the result is a market where the signals a buyer normally trusts stop working.

The entry price is a weekend

You can install WordPress, buy a multipurpose theme, activate a page builder and hand over a website that looks professional inside two days, having written no code at all. That is a legitimate service and plenty of small businesses need exactly that. The problem starts when the same person is hired to build a membership system, or asked to fix a site that is timing out under load. The skills do not extend. They were never adjacent to begin with.

The portfolio proves less than you think

In most stacks a portfolio is reasonable evidence. In WordPress it is close to worthless on its own, because a screenshot cannot distinguish a hand-built block theme from a template with the demo content swapped out. Two sites can look identical and differ by an order of magnitude in what it costs you to change them next year. Ask what happens when you want a new field on a product page. The answer separates the two immediately.

The price signal runs backwards

In a normal market, higher price correlates loosely with higher skill. WordPress breaks that, because the assembler and the engineer are selling what looks like the same thing, and the assembler is genuinely faster at the version of the job they can do. If your requirement is a brochure site, hiring the engineer is a waste of money. If your requirement is a plugin that talks to your ERP, hiring the assembler is a waste of six months. The price tells you nothing about which one you are speaking to.

What actually separates them

One habit, mostly. An engineer's instinct when the platform does not do something is to reach for the hook reference and write the code. An assembler's instinct is to search for a plugin, and when no plugin exists, to declare the requirement impossible or to edit a file they should not be editing. Everything else in this page is a way of testing for that instinct.

Three Very Different Jobs Share One Job Title

Before you write a brief, decide which of these you are actually buying. Getting it wrong is the single most common cause of a WordPress engagement going badly, and it happens before anyone writes a line of code.

Job one: building a site

This is theme work. Content model, templates, editorial experience, responsive layout, the handover to whoever will write the pages afterwards. A strong person here thinks hard about what the editor sees, not just what the visitor sees, because a content model that fights the people using it will be worked around within weeks and the workarounds become your maintenance bill. Front-end craft matters more than PHP depth. Someone whose CSS is careless will produce a site that looks right on the day it launches and drifts as soon as real content arrives.

Job two: custom plugin and application development

Here WordPress is a framework rather than a website. You are building a booking engine, a quoting tool, a portal that syncs with an external system, a piece of functionality with its own data and its own rules. The work is PHP engineering with a specific set of platform conventions on top, and it shares far more with general backend development than with theming. If this is your project, you are really hiring a PHP developer who knows WordPress deeply, and you should screen accordingly.

Job three: rescuing a site somebody else built

The most common request we get, and the one that most needs a genuine engineer. An agency has gone quiet, or the freelancer who built it has moved on, and you own something you cannot safely touch. This work is archaeology first and development second. It rewards a particular temperament: patient, sceptical, comfortable reading unfamiliar code and unwilling to change anything until a restore has been tested.

Why picking the wrong one hurts

A theme specialist put on a plugin build will produce something that works and is unmaintainable. A backend engineer put on a marketing site build will produce something clean that the marketing team quietly hates. And an assembler put on a rescue job will start updating plugins on the live site because that is the only tool they have. We ask which of the three you need in the first conversation, and if the brief describes one job while the symptoms describe another, we say so.

Site build

Content modelling, block or classic theming, editorial experience, accessibility, Core Web Vitals at launch. Judged on what the editors say after month two.

Plugin and application work

Custom post types or custom tables, REST endpoints, background jobs, third-party integrations, upgrade-safe architecture. Judged on whether it survives core updates untouched.

Remediation

Backup and restore proven first, plugin audit, core integrity check, query profiling, access review. Judged on how much of the site is still standing afterwards.

What Should You Actually Ask a WordPress Developer in an Interview?

These are the questions we use, in roughly this order. They are arranged so that the first one filters hardest. If you are not technical, skip to the short version at the end of this section and ask a colleague to sit in.

Add this feature without touching core or the parent theme

Give a real requirement and watch where the code lands. The correct answer involves a child theme for template overrides, or a small site-specific plugin for anything that is not presentation. Editing a parent theme means the next theme update erases the work. Editing a core file means the next WordPress update erases it and you have also just made the install impossible to verify against the official release. Someone who has been burned by this once will tell you the story unprompted.

Explain the difference between an action and a filter

Easy to answer badly and revealing when answered well. An action fires at a point in execution and returns nothing; you hook it to do something. A filter passes a value through and expects it back; forget the return statement and you have silently blanked whatever was being filtered. Ask what happens if a filter callback returns nothing. Ask about priority ordering when two plugins fight over the same filter. Ask how they would remove another plugin's callback, which requires knowing that an anonymous function or a closure cannot easily be unhooked. That last one is a genuine senior signal.

Custom post type and meta, or a plugin, or a custom table?

The right answer is that it depends, and the reasoning matters more than the choice. Registration of a post type belongs in a plugin rather than a theme, because content should not disappear when the design changes. Post meta is fine for a handful of fields on a few thousand records and becomes a liability when you need to query or sort by those fields at volume, since meta values are not indexed in a way that supports it. A dedicated table is the right call for high-volume structured records such as a log or a booking ledger, at the cost of losing the admin UI for free. A developer who reaches straight for meta every time has never had to fix the resulting slow query.

WP_Query, and the query that takes a site down

Ask what is wrong with setting posts per page to minus one. The answer is that it loads every matching row into memory, which is fine on a staging site with forty posts and fatal on a live site with forty thousand. Then ask about meta queries: filtering on a meta value means the database is comparing against a long text column, and combining several of those with a taxonomy filter produces a join that no amount of caching will rescue. Ask when they would use the pre_get_posts hook instead of building a fresh query, because modifying the main query is usually correct and instantiating a second one inside a template is usually a smell. Ask what the found-rows count costs when you are not paginating.

The options table and autoloaded bloat

This is my favourite question, because almost nobody who has not run a real site knows it. WordPress loads every option marked for autoload on every single request, before it knows what page you asked for. Plugins write into that table freely and many never clean up when removed. On neglected sites the autoloaded payload grows into megabytes of dead settings and cached API responses, and the site gets slower in a way that no page cache fixes, because the cost is paid on every uncached request including admin and checkout. Recent WordPress versions stopped autoloading very large individual options by default, which helps and does not solve it. A candidate who can tell you how to list the largest autoloaded options has been in the trenches.

Transients and object caching

Transients are the built-in way to cache an expensive result with an expiry. The detail that matters is where they live. Without a persistent object cache they are rows in the options table, so a transient with no expiry is autoloaded and a badly written one becomes part of the bloat problem above. Install Redis or Memcached with an object cache drop-in and the same transients move out of the database entirely. Ask what happens to the site when that drop-in is removed. Ask whether they have ever had a stale transient serve wrong data to logged-in users. The answers tell you whether caching is something they configure or something they understand.

The short version for non-technical interviewers

Ask three things. First, tell me about a WordPress site that broke in production and what you changed so it could not happen again. Second, show me a piece of code you wrote and talk me through why it is structured that way. Third, when the client asks for something WordPress does not do, what do you do next. Vague answers to all three, or a portfolio walkthrough offered in place of an answer, is enough to end the conversation politely.

Gutenberg Changed What the Job Is

The block editor split the WordPress developer population in half, and a lot of people are still on the wrong side of the line. If you are hiring for a build that will last, this section matters more than any other technical part of the brief.

What building a custom block actually involves

A block is registered through a block.json file that declares its name, its attributes, its supported features and its scripts. The editor side is a React component. That is the part people underestimate: writing blocks is JavaScript work with a specific set of WordPress packages, not PHP work. You scaffold with the official create-block tool, you build with wp-scripts, and you end up with a compiled bundle and a build step in a project that historically had neither.

Static blocks, dynamic blocks and the validation error everyone has seen

A static block serialises its markup into the post content when saved. Change the save function later without adding a deprecation and every existing instance throws the invalid content warning, which is a genuinely unpleasant thing to discover across two thousand posts. A dynamic block stores only attributes and renders through PHP at request time, which sidesteps the problem and costs you a render on every page load. Knowing when to pick which, and knowing that deprecations exist, is a fair proxy for whether someone has maintained blocks rather than just written one.

Full site editing and theme.json

Block themes moved a large amount of what used to live in PHP templates and CSS into theme.json, which defines the palette, spacing scale, typography and per-block styles in one place. Done well it gives editors real control without letting them wreck the design. Done badly it produces a site where nobody can work out why a heading is the wrong size, because the value is being set in four places and the cascade between global styles, block styles and theme CSS is not obvious. Ask a candidate how they would restrict the colour palette so that editors cannot pick arbitrary hex values. If they answer in CSS, they have not done this.

Why saying we use a page builder narrows your hire

Page builders are not a moral failing and for some sites they are the pragmatic answer. Be clear about the trade you are making. Content built in a builder is usually stored in a proprietary format inside post meta rather than as portable block markup, which means your content is coupled to that plugin for as long as the site lives. The hiring consequence is narrower than people expect: builder specialists and block developers are largely different populations, and the pool for the first is far shallower in engineering terms. If your plan is a builder, say so in the brief and we will match on that. If your plan is a long-lived editorial site with a design system, blocks are the better bet and the hire should reflect it.

WooCommerce Is Its Own Discipline

Treat WooCommerce as a separate skill from WordPress, in the same way you would treat mobile as separate from web. Most of the expensive mistakes we are asked to clean up on commerce sites were made by competent WordPress developers who had never run a store.

The data model is not the WordPress data model

Products, orders, coupons and subscriptions are handled through WooCommerce CRUD classes, not through the post functions you would reach for elsewhere. Fetching an order with the standard WordPress meta functions works until it does not, and the failure is silent. This has become sharper since high performance order storage moved orders out of the posts and postmeta tables into dedicated order tables. Code written against the old layout keeps running in compatibility mode and then breaks when the compatibility layer is off. A developer who does not know which storage mode your store is running is going to cost you an evening.

Checkout, tax and stock are where the money leaks

Nobody writes a bug report that says the tax calculation is subtly wrong for one province. They write a report that says the numbers do not reconcile, three weeks later, with two hundred affected orders. The same applies to stock under concurrent purchases, partial refunds against a subscription, and payment gateways whose webhook arrives before the redirect does. This is not clever code. It is a body of specific knowledge accumulated by breaking things in production, and either a candidate has it or they do not.

Extending Woo without breaking updates

The right way to change WooCommerce behaviour is through its hooks. The wrong way is copying template files into the theme and editing them, which is technically supported and quietly accumulates a set of frozen templates that stop receiving upstream fixes. Ask a candidate how many overridden Woo templates a store should have. The good answer is as few as possible, and each one justified. Ask them what they do when a Woo update changes a template they have overridden. If they have never had to reconcile one, they have not maintained a store through a major version.

When WooCommerce is the wrong platform

Sometimes it is, and you deserve to hear that before you commit. If your catalogue is small, your requirements are conventional and you have no development team, a hosted platform will cost you less pain than a self-hosted store you are responsible for patching, and our Shopify developers handle that side. WooCommerce earns its place when you need control that a hosted platform will not give you: unusual pricing rules, deep integration with an existing system, content and commerce genuinely intertwined, or data you are not willing to hand to a third party.

Why Does WordPress Get Attacked So Much, and What Actually Defends It?

WordPress is attacked constantly for an unglamorous reason: it is everywhere, its file layout is predictable, and a large fraction of installs are unmaintained. Attackers are not targeting you. They are scanning the entire internet for a known vulnerable version of a known plugin, and your site either matches the pattern or it does not.

The plugin supply chain is the real attack surface

Core itself has a good security record and a competent release process. The risk lives in the third-party code you install. A plugin with a million active installs is a large target, and plugins change hands, get abandoned, or continue shipping under new ownership with a new agenda. In October 2024 the Advanced Custom Fields listing on the official repository was taken over and continued there as a fork under a different name, while the original moved to updating from its vendor. Set aside the merits of that dispute entirely. The structural lesson for a buyer is that a dependency you rely on can change hands or change update channel without you doing anything, and somebody on your side needs to be watching. A serious developer tracks plugin advisories through a vulnerability database rather than waiting for the site to misbehave.

Nonces are not authorisation

This is the misunderstanding I see most often in code reviews. A WordPress nonce proves that a request came from your own form and not from another site. It does not prove that the person making the request is allowed to do the thing. Verifying a nonce and then acting without checking capabilities is a real vulnerability, and it is common, because the nonce check makes the code look secure. Every state-changing handler needs both: verify the nonce, then check that the current user actually has the capability for the action.

Capability checks, admin-ajax and REST endpoints

Two specific holes worth asking about. First, the AJAX system has separate registration for logged-in and logged-out users, and registering the public variant by copy-paste habit exposes an admin function to the entire internet. Second, every REST route needs a permission callback; leaving it off is a route open to anyone who finds it. Ask a candidate to describe the difference between checking a capability and checking a role. The correct instinct is to check capabilities, because roles are just bundles of capabilities and sites redefine them.

Escaping, sanitising and prepared statements

Sanitise what comes in, escape what goes out, prepare every query with parameters. WordPress ships helpers for all three and the coding standards ruleset for PHP CodeSniffer will flag most violations automatically, which is why a team that runs it in CI has fewer of these problems than a team that reviews by eye. Ask whether they escape late, at the point of output, rather than early and then forget which variables are already safe. Late escaping is the discipline that scales.

Why installing a security plugin is not a security posture

Security plugins do useful things. They add a firewall of sorts, they rate-limit login attempts, they scan for file changes. What they cannot do is fix an authorisation bug in your custom code, patch an abandoned plugin, or stop an administrator account belonging to a contractor who left last year. A posture looks different: current core and plugins with a tested update path, least-privilege accounts reviewed on a schedule, no shared logins, two-factor on administrators, file editing disabled in the dashboard, database and files backed up somewhere the web server cannot reach, and a restore that has actually been performed rather than assumed. The plugin is the smallest part of that list.

What Actually Makes WordPress Slow

Most WordPress optimisation work is caching applied over a bad query. It produces a good score on a testing tool and does nothing for the people who are actually having a slow experience, because those people are the ones the cache does not serve.

The uncached request is the one that matters

A full page cache serves anonymous visitors from a stored copy and never runs your PHP at all. That is genuinely valuable and it is also why a lot of sites look fast in testing and feel slow to use. Logged-in users bypass the page cache. So does anyone with a cart, anyone in checkout, anyone in the admin, and every search result. On a store, the slowest and most valuable journey on the site is precisely the one the cache cannot touch. Measure the uncached response time before you believe anything else.

Queries, and the loop that runs a hundred of them

The classic WordPress performance bug is a template that loops over posts and fetches something per post, turning one page into two hundred database round trips. Query Monitor makes this obvious in about ten seconds and is the first thing a competent developer installs on a slow site. Ask a candidate what they open first when a page is slow. If the answer is a caching plugin, they are guessing. If the answer is a profiler, a query log or Query Monitor, they are diagnosing.

Autoloaded options and the missing object cache

Covered above as an interview question, and it belongs here too, because it is the most commonly missed cause of a site that is slow everywhere rather than slow on one page. Combine an oversized autoload payload with no persistent object cache and every request pays for both. Adding Redis with an object cache drop-in often produces a larger improvement than anything done to the front end, and it is invisible to the tools that grade a page from the outside.

The front end, and the plugin that loads on every page

Image weight is still the biggest single front-end factor on most WordPress sites, followed by plugins that enqueue their scripts and styles globally when they are needed on one template. A slider plugin used on the homepage should not be loading on every blog post. Dequeuing selectively is unglamorous work that reliably moves the numbers. Note that the responsiveness metric in Core Web Vitals is now interaction to next paint, which replaced first input delay in 2024, and it is far less forgiving of heavy JavaScript than the metric it replaced.

Why caching over a bad query is a trap

Caching hides a slow query rather than removing it. The moment the cache is cold, or the traffic is logged in, or an editor publishes and invalidates a swathe of it, the original cost comes straight back and usually all at once. Worse, it removes the pressure to fix the real problem, so the query gets slower over the following year while nobody notices. Fix the query. Then cache it. That order is not a preference, it is the difference between a site that degrades gracefully under load and one that falls over.

Headless WordPress: When It Is Right and When It Is Fashion

Decoupling WordPress means using it purely as a content store and rendering the front end elsewhere, usually in a JavaScript framework. It is a legitimate architecture that is chosen for the wrong reasons more often than for the right ones.

The cases where it genuinely pays

Three hold up. One editorial backend feeding several destinations, such as a website, a native app and a partner feed, where duplicating the content model would be worse. A front end that belongs to a team with its own design system and its own deployment schedule, where forcing them into PHP templates would slow everyone down. And a content model complex enough that you want the query layer under your control rather than the theme hierarchy's. If your reason is on this list, decoupling is a reasonable engineering decision.

What you give up, and people forget this part

Preview stops working until you rebuild it. Plugins that output markup into the page, which includes most SEO plugins, most form plugins and anything that renders a shortcode, stop working the way they were designed to. You now own two deployments instead of one, two sets of dependencies, and a front end that most WordPress developers cannot maintain. Your editors will notice all of this before your visitors notice any benefit. Budget for rebuilding preview specifically; it is the complaint that arrives first and loudest.

WPGraphQL or the REST API

Both are viable. The REST API ships with core, needs no extra plugin, and is straightforward for a few well-defined resources. WPGraphQL is a plugin that gives you a single typed endpoint and lets the front end ask for exactly the fields it needs, which is a real advantage on a page assembling content from several types and avoids the chain of round trips that REST tends to produce. The trade is another dependency in the critical path and a schema that has to be maintained as your content model changes. Neither choice is wrong; a candidate who insists one is has not built both.

The honest test

Ask yourself what the decoupled front end will do that a well-built theme could not. If the answer is speed, fix the theme instead; it is far cheaper and the fix will still be there in three years. If the answer is that the front-end team prefers React, that is a staffing preference dressed as architecture, and it may still be the right call, but price it as one. If you do go headless, you are now hiring two skills rather than one, and our React developers usually pair with the WordPress engineer rather than replacing them.

What Junior, Mid and Senior Mean in WordPress

The titles travel badly in this ecosystem because so many people are self-taught and years of experience correlate weakly with depth. Here is what we actually mean when we use them, so that a shortlist tells you something.

Junior

Works comfortably inside an existing theme and an established pattern. Can build templates, style them properly, wire up ACF or a similar field layer, and follow the project's conventions. Will not yet spot that a query is going to be a problem, and should not be the only person on a site that takes payments. Give them a defined ticket and a reviewer and they are productive from week one.

Mid-level

Writes plugins from scratch without copying a boilerplate they do not understand. Reaches for hooks by instinct rather than editing files. Knows why post meta is not always the answer, has debugged a real production problem, and can be trusted to review a junior's pull request. This is the level most projects actually need, and it is the level with the widest quality spread, which is why the screening described below focuses hardest here.

Senior

Decides architecture and can defend the decision. Chooses between post meta, a custom table and an external service on the basis of query patterns and volume rather than habit. Has taken over a neglected site and brought it back without a rewrite. Can profile a slow page and explain the fix in terms a non-technical stakeholder understands. Will push back on your brief, which is the point of hiring one. If a senior candidate agrees with everything you say in the interview, you are talking to a mid-level developer with a better CV.

Specialists who do not sit on the ladder

Some of the most valuable people here are narrow rather than senior. A WooCommerce specialist who has run large stores through several major upgrades. A performance person whose entire job is making slow sites fast. A block developer whose React is genuinely good. A migration specialist who moves large sites without losing URLs or search rankings. For a fixed problem, the narrow specialist usually beats the generalist and costs less time to onboard.

Three Hiring Situations We See Repeatedly

What follows are composites, assembled from the recurring shape of enquiries rather than from any particular engagement. No client is being described. They are here because if one of them matches your situation, the brief you were about to write is probably the wrong one.

You inherited a site nobody has maintained

The agency relationship ended eighteen months ago. Since then someone in marketing has been clicking update when the dashboard nags, and last month one of those updates took the contact form down for a day, so now nobody updates anything. There are fifty-something active plugins, at least four of which have not been touched by their authors in years. Core is behind. There may be edits in the theme, and possibly in core, and nobody knows.

What actually goes wrong here is the fixing, not the finding. The instinct is to start updating, and updating a neglected site without a proven rollback is how a slow site becomes a dead one. The right first week has almost no changes in it: take a backup, restore it somewhere else to prove the backup is real, stand up a staging copy, diff core against the official release, inventory the plugins against their last release dates, look at what is in the autoload payload, and list every administrator account. Only after that does anyone touch the live site, and then in small reversible steps with the least frightening plugin first. Hire an engineer with the temperament for archaeology, not the fastest builder available.

Your plugin has quietly become a product

Something that started as a small internal tool now has customers, or drives revenue, and it is still a single PHP file with a few hundred lines in it and no tests. Every change is nerve-racking. The person who wrote it has left or has moved on to other work.

This is a software engineering problem wearing a WordPress hat. What it needs is a proper structure with an autoloader, real separation between the WordPress integration and the domain logic so the logic can be tested at all, a test suite that runs in CI, and a release process with versioning and an upgrade routine for the data. Whoever you hire needs opinions about all of that. Screen them as you would screen any backend engineer, with the platform knowledge as an additional requirement rather than the main one. This is the scenario where the assembler versus engineer distinction is most brutal, because an assembler simply cannot do this job at any speed.

Your WooCommerce store has outgrown how it was built

Sales grew, the catalogue grew, and the build did not change. Admin is slow. The reports page times out. Checkout occasionally does something strange under load. Somewhere in there are half a dozen overridden Woo templates that have not received an upstream fix in two years, and a stack of small extension plugins bought at various points, some of which are no longer supported.

The temptation is a rewrite. Usually the correct answer is narrower and much cheaper. Find out which storage mode the orders are actually using and whether the custom code is compatible with it. Profile the slow admin screens instead of guessing at them. Pull the overridden templates back towards their current versions. Check whether cart fragments are firing an uncacheable request on every single page load, which is a common and entirely avoidable drag on a busy store. Then, and only then, decide what genuinely needs rebuilding. Hire a WooCommerce specialist for the diagnosis before you hire a team for the rebuild.

How We Screen WordPress Engineers in India

India has an enormous WordPress workforce, which is a mixed blessing. The volume is real and so is the variance, and any process that relies on CV keywords will drown. Ours is built to fail people quickly on the things that matter.

The placement exercise

We give the candidate a working site and a feature request and watch where the code lands, without telling them that is what we are measuring. Editing the parent theme or a core file ends the exercise there. Everything after that is about judgement: is the change in a child theme or a site plugin, are the assets enqueued properly, is the output escaped, would this survive an update.

The reading exercise

Candidates read code more than they write it here, because that is what the job is. We hand them an archive template that is slow and ask them to explain why before changing anything. The good answers talk about what the query is doing and how the loop behaves as the post count grows. The weak answers reach for a caching plugin in the first minute. It is a reliable divider.

The production question

Tell me about a WordPress site that broke while real people were using it. What happened, what you did in the moment, and what you changed so it could not happen again. Someone who has genuinely carried a site has a story with specifics in it: a plugin update, a full disk, a cron job that stopped running because the site had no traffic to trigger it. Someone who has only built and handed over does not, and it shows within thirty seconds.

Written English, because this is a written job

Across a timezone gap most communication is asynchronous, so the ability to write a clear pull request description, a useful bug report and an honest status update matters as much as the code. We assess this from written work rather than from a call, because a candidate who interviews well verbally can still be the person whose handover note nobody can follow. You should test it too. Ask for a written explanation of a technical trade-off before you commit to anyone.

Why the timeline is short

Recruiting a WordPress engineer into an urgent problem is a bad combination, because the urgency is usually caused by a site that is already misbehaving and a recruitment cycle does not care about that. Sourcing, interview rounds, an offer, then however many weeks the person owes their current employer: a decision taken in one quarter routinely produces a start date in the next. Our engineers are already employed here between projects, which is the only reason we can put a shortlist in front of you inside 48 hours and have someone working on your site within 7 days. There is no trick behind those two numbers. Nobody has to be found first.

How an India-Based WordPress Engagement Runs Across the Timezone Gap

Here is the arithmetic without any softening. India Standard Time is UTC+5:30 and India does not observe daylight saving, so our clocks never move. The distance between us changes twice a year entirely because yours do.

The numbers

An ordinary office day here opens at 09:30 IST and closes at 18:30. Convert both ends and you get a window that opens at 04:00 UTC and shuts at 13:00 UTC. Every figure below is measured against that.

  • London gets roughly four shared hours in winter and five in summer, from your start until the Indian day ends at 13:00 UTC. The most workable of the lot.
  • Sydney gets two hours in the Australian summer and three in winter, at the start of your afternoon.
  • Auckland gets about an hour at best, and nothing at all during New Zealand daylight time.
  • New York and Toronto get zero. A nine o'clock start on the Eastern seaboard is 14:00 UTC in winter, an hour after the Indian office has closed.
  • San Francisco gets less than zero, if that were possible. The gap is most of a day.

Overlap with North America is not free and nobody should pretend otherwise. It is bought by moving the Indian day into the evening. A shift of 13:30 to 22:30 IST is 08:00 to 17:00 UTC, which gives New York three shared hours on standard time and four in summer. That is somebody's evening, every evening, so it is a staffing arrangement to agree in writing before anyone starts rather than a thing to discover in week three.

What the overlap is actually for

Four hours a day is more than enough if you spend it on the right things. Use it for decisions, demos, pairing on something genuinely hard and unblocking. Do not use it for status, which belongs in writing. The teams that struggle offshore are usually the ones that fill the overlap with meetings and then have nothing written down when the overlap closes.

The WordPress-specific problem: who is awake when the site is down

This deserves its own answer because WordPress work has a different emergency profile from most development. A plugin update breaks checkout. A site gets defaced. A theme change pushed on a Friday turns out to break on mobile. These things happen outside the overlap by definition, because there is more outside than inside it. The honest answers are limited and worth choosing between deliberately: agree a specific on-call arrangement and staff it as its own thing with its own cost, restrict deployments to the overlap window so that changes never land unattended, or accept a response time that starts at the beginning of the next Indian day and design your release process around that. What does not work is assuming someone will be there. Round the clock coverage is a rota, not a courtesy, and a rota has people and money attached to it.

Written-first working

The practices that make this work are unglamorous. Tickets with enough detail to be picked up without a conversation. Pull request descriptions that explain the why and not just the what. A decision written down when it is made, in a place both sides can find it. A short written update at the end of each Indian day, covering progress, anything stuck, and the specific questions that only you can answer, posted while you are still asleep so it is the first thing on your screen. None of this is specific to India. It is simply what asynchronous work requires, and teams that already work this way barely notice the gap.

Code review and definition of done

Work happens in your repository, on branches, behind your review rules. That is the control that matters, because it means nothing reaches your live site without someone on your side seeing it. For WordPress specifically we would rather agree up front what done means, since the loose answer is where offshore quality complaints usually come from. Ours generally includes the coding standards check passing, output escaped, no changes to core or a parent theme, no new autoloaded options without a reason, tested on staging against a copy of your real content rather than four dummy posts, and a note in the pull request about what to watch after it ships. Amend that list to suit your project, but agree it before the first ticket, not after the first argument.

Ownership, Access and Getting Out Cleanly

Three questions every buyer should ask and many forget until they need the answer.

Who owns what gets built

You do. Intellectual property assignment, confidentiality, and the handling of any personal data the site touches all get written into the agreement before anybody opens an editor, with the wording negotiated with you rather than handed over as a fixed document. If you are an agency using our engineers on your own client work, say so at the start so the arrangement reflects it. Whatever plugins and themes get written for you are yours, in your repository, from the first branch.

Access, and giving less of it

WordPress access control is coarser than most people realise, and administrator is a very powerful role. A developer usually does not need one on production. They need a staging environment that mirrors production, repository access, and a deployment path that runs through review. Where production access is genuinely required it should be time-limited, individually named rather than shared, and revoked when the work ends. This is worth being firm about even when it is inconvenient, because the account that never got removed is a recurring theme in the sites we are asked to clean up.

Exit and handover

Assume you will end the engagement one day, because eventually you will. The protection is not a contractual promise, it is that the work was done in the open from the beginning: your repository, your hosting, your accounts, decisions written where you can find them, and a README that tells the next person how to run the thing locally. When that is true from week one, a handover is a conversation and a document. When it is not, a handover is a forensic exercise. Handover and notice terms themselves are agreed with you when the engagement is set up rather than assumed here. That is separate from a plain mismatch: say the fit is wrong and a different WordPress developer stands ready inside 48 hours, one name among several we can put forward rather than the single candidate you already turned down.

Ways to Structure the Engagement

Three shapes, chosen by how much of the work is defined up front. We will tell you which one your brief actually describes, which is not always the one it asks for.

A dedicated developer

The engineer joins your team, your board and your review process, and takes direction from you. Right when the work is continuous and the priorities shift, which is most product work. The query pattern that shows up most often in search is exactly this one, and it is the model people mean when they ask for a dedicated WordPress developer in India.

A scoped project

One outcome, written down, with the acceptance criteria settled before anyone starts. Suits a build, a migration, a plugin whose requirements are already stable, or a remediation working through a fixed list. It goes badly when the requirements are still moving, because arguing about change requests will cost more than the code did.

An ongoing retainer

Continuous care rather than a project: core and plugin updates tested on staging before they go live, monitoring, backups verified by restore, security advisories tracked, and small changes as they come up. The right answer for a site that is finished but still matters.

If you are hiring across several stacks at once, the broader hire developers in India page covers how mixed teams are put together and what changes when more than one skill is involved.

Frequently Asked Questions

What is the difference between a WordPress developer and someone who assembles sites from plugins?

An assembler solves every requirement by finding a plugin for it, and stops when no plugin exists. An engineer reads the hook reference, writes the twenty lines that do the job in a small site-specific plugin, and leaves the rest of the install alone. The practical difference shows up eighteen months later in how many plugins are active, how many of them are abandoned, and whether anyone can update core without holding their breath.

How do you screen for real WordPress engineering rather than plugin assembly?

We hand candidates a working theme with a feature request and watch where they put the code. Editing the parent theme ends the exercise. We then read a slow archive template together and ask them to explain, before touching anything, why it is slow, which usually means talking about meta queries and post counts rather than reaching for a caching plugin. Last we ask about a live incident they handled and what they changed afterwards.

We inherited a WordPress site with no documentation. Where does an engineer start?

With a read-only survey before any change. That means a full backup taken and restored somewhere else to prove it works, an inventory of active plugins against their last update dates, a diff of core files against the official release to find edits, a look at what is autoloaded out of the options table, and a check of who holds administrator accounts. Only then does anyone decide what to fix first. Changing things before you know what is there is how a bad week becomes a bad quarter.

Do your WordPress developers handle WooCommerce, or is that a separate hire?

Treat it as a separate skill even when it is the same person. WooCommerce has its own data model, its own CRUD classes, its own order storage arrangement, and failure modes involving tax, stock and payment states that a content site never produces. Plenty of capable WordPress developers have never debugged a partial refund against a subscription. We ask directly rather than assuming the skill transfers.

How much overlap will we actually get with a WordPress team in India?

India stays on UTC+5:30 the whole year and never changes its clocks, so only your side moves. An office here opening at 09:30 IST has already been working for five and a half hours in UTC terms, and it shuts at 13:00 UTC. A London team catches roughly four of those hours through the winter, five once British Summer Time arrives. Sydney manages two or three. New York catches none at all, because the Indian day has finished before anyone in Manhattan opens a laptop. Buying US overlap means paying someone in India to work an evening, and that is a staffing decision to agree in writing first.

Is headless WordPress worth it for our site?

Usually not, and the honest test is whether you can name the thing a rendered theme cannot do. Good reasons exist: one editorial backend feeding an app and several front ends, a design system your web team already owns in React, or a front end that must deploy on its own schedule. Bad reasons include page speed, which is nearly always cheaper to fix in the theme, and a preference for JavaScript. Decoupling also costs you preview, plugin output and a chunk of the ecosystem.

Who owns the code, and what happens if we stop the engagement?

You own it. Ownership of what gets written, confidentiality, and how any personal data on the site is treated are all put in writing up front, with the wording negotiated rather than presented to you as fixed. Work happens in your repository under your review rules, so no private copy of the site accumulates anywhere you cannot see. Handover terms belong in that same first conversation, and we would much rather have it then than on the way out.

Our site was built with a page builder. Can you still work on it?

Yes, and it changes who we put on it. Builder content is generally stored in a proprietary shape inside post meta rather than as portable block markup, so the work needs someone fluent in that particular builder rather than a strong block developer. It also means you should think carefully before committing further, because the deeper the content goes into the builder the more expensive any future move becomes. We will say plainly whether we think you should extend what you have or plan an exit from it.

Tell us which of the three jobs you have

A build, a plugin, or a site somebody else left behind. Describe the situation in a few sentences and we will tell you what kind of WordPress engineer it needs, including when the answer is that you do not need one.

Hiring for PHP More Broadly