A white-label development arrangement should be written down before the first ticket, and it should cover process more than code: confidentiality, code ownership, who holds the credentials, which channel work flows through, how fast each side responds, how scope changes are priced, who deploys, what happens when a client asks a technical question, and how the partner's invoice maps to yours. Nearly every white-label relationship that breaks down breaks on one of those points, not on a badly written function. Get the process right and the code quality question becomes easy to check.
Why the arrangement fails on process, not on code
Code you can review. A pull request either follows WordPress coding standards or it does not, uses documented hooks or does not, passes on staging or does not. Process failures are quieter. A developer replies to a client email directly. A credential lives in one person's password manager and that person is on leave. A "small change" is done, then billed, then argued over. None of those show up in a code review, and each of them costs you a client's trust.
Confidentiality and no client contact
The partner never speaks to your client. Not by email, not in a shared Slack channel, not on a call, not through a comment on a ticket the client can see. Write it as an absolute, then define the mechanics: the partner's developers work under accounts your agency creates, and anything the client can see (commit messages, admin user names, plugin author fields, support replies) carries your name or no name.
Add a non-solicitation clause running for a period after the arrangement ends, and a confidentiality clause covering your client list and your pricing. A partner that works white-label as a matter of policy will have these ready. Our own white-label development arrangement for agencies starts from exactly that position: we never contact the agency's clients and we work inside the agency's tools.
IP and code ownership
Everything written for a client project is owned by the agency on payment, and the agency passes ownership to the client under its own contract. State it plainly, and say what "everything" includes: theme code, plugin code, build configuration, documentation and any design assets. Specify the license for anything the partner brings in that already existed (a starter theme, an internal library), and require that anything under the GPL is identified as such, since most WordPress code is.
The practical test is a handover. If the arrangement ended tomorrow, could your agency or a new developer clone the repository and deploy the site? If the answer depends on a build tool on the partner's laptop, ownership is theoretical.
Who holds the credentials
The agency holds the master credentials for hosting, DNS, the domain registrar, payment gateways and any third-party services. The partner gets scoped access: a named admin user on WordPress, an SSH or SFTP user on the host, a deploy key on the repository. Access is granted per project and revoked at the end.
Write down where credentials live (a shared vault, not a spreadsheet, not a Slack message) and who can create and remove access.
Communication channel and cadence
One channel for work, and it is yours. Your project tracker for tickets, your Slack or Teams for conversation, your repository for code. A partner that insists on its own ticketing system creates a second source of truth and a place where things get lost.
Then cadence. A weekly written update per active project is the minimum: what shipped, what is blocked, what needs a decision from you. Agree on time zone overlap too. A partner in India working with an agency in the UK shares most of the working day; with the US West Coast the overlap is early morning there, so the written update rhythm matters more than the meeting rhythm.
Response times
Separate three things: acknowledgment, first meaningful reply and resolution. Acknowledgment within a few working hours for anything. A meaningful reply (a diagnosis, a question, or an estimate) within one working day. Resolution depends on the work and is quoted per ticket. Then define an urgent path for sites that are down or checkouts that are failing, with a different acknowledgment target and a phone number, not just a ticket queue.
How scope changes are quoted
Fixed price against a written scope for each project, and any change to that scope quoted in writing before work starts. The scope document lists what is in, what is out, and the assumptions (which plugins, classic or block checkout, which PHP version). A change request references the scope, states the difference, gives a price and a delivery date, and waits for your approval.
The reason to be strict here is your own margin. You have quoted the client a fixed figure. If the partner absorbs a change silently, you never learn that the original scope was wrong. If the partner bills a change silently, you eat it. A visible change request lets you decide whether to pass it on to the client or absorb it as a relationship cost, which is your call, not the partner's.
Staging and deployment responsibilities
Every project has a staging environment, and nothing goes live without having been on it. Say who provisions staging (usually the agency, on its hosting), who deploys to staging (the partner), who signs off (the agency, and often the client through the agency), and who deploys to production. For WooCommerce stores, pick a deployment window outside peak order hours and write it down. Version control is not optional: code lives in a Git repository the agency owns, and the branch that is on production is identifiable.
What happens when the client asks a technical question on a call
This is the moment white-label arrangements actually get tested. The client asks why the checkout page cannot be cached, or whether the block checkout will work with their payment gateway, and the account manager on the call does not know.
Three workable answers, pick one and write it down. First, the partner briefs you before client calls on anything technical on the agenda, in writing, in plain language you can repeat. Second, a partner developer joins the call as a member of your team, introduced under your agency's name with a role, not a company. Third, you take the question away and answer it within a day. What does not work is guessing on the call. Most agencies use the first option for routine calls and the second for discovery and launch meetings.
How the partner invoices you, and how you bill the client
Keep the two invoices structurally separate. The partner invoices the agency per project (fixed price, milestone based) or per month (retainer, with an allowance and a rate for overage). The agency invoices the client on whatever terms the agency chooses. The partner never sees the client invoice and never needs to.
What the agreement should specify is timing and dependency. Partner milestone payments should not be contingent on the client paying you, because that makes your cash flow the partner's problem and they will price for it.
If you also outsource ongoing care, the same logic applies to the monthly line. A white-label maintenance arrangement should have a per-site price, a defined development allowance, and a rule that anything beyond the allowance is quoted before it is done.
A one-page version
If the full agreement is too much for a first project, a single page with these lines will prevent most of the trouble:
- Partner never contacts the client; everything the client can see carries the agency's name.
- Agency owns all project code on payment; GPL components identified.
- Agency holds master credentials; partner gets scoped, revocable access.
- One channel (the agency's), weekly written update, agreed overlap hours.
- Acknowledgment, meaningful reply and urgent-path targets in writing.
- Fixed price per written scope; changes quoted and approved before work.
- Staging always; Git always; named deployer and a post-deploy check.
- Technical client questions: briefed in advance or answered within a day.
- Partner invoices the agency on its own terms, independent of client payment.
Common questions
Should the white-label partner sign an NDA before seeing the client's site?
Yes, and it should cover the client's identity, not just their data. A general NDA with a non-solicitation clause, signed once at the start of the relationship, covers every project after it. Per-project NDAs slow things down and rarely add anything.
Can the partner use its own developer accounts on the client's WordPress?
Use a named account per developer so the audit trail is real, but name it in a way that reads as your agency's staff. Shared "admin" logins make it impossible to know who changed what, which matters the day something breaks.
What if the client wants to talk to the developer directly?
Decide in advance whether that is ever allowed. Most agencies allow it in a supervised form: the developer joins a call as part of the agency team, introduced by role. The developer's own company name is never mentioned, and the arrangement says so.
Next step
If you are setting up a white-label arrangement and want to see how we handle each of the points above in practice, tell us about the next project you need built and we will send back a scope and the terms we work under.
Want a senior developer to look at your site?
Tell us what you need. You get a written scope and a fixed price, usually within one business day.




