A workflow no plugin covers
Invoices that follow local legal rules, receipts for bank transfers, a checkout that reads the field the profile writes. I build it as a plugin with its own settings, not as snippets in a theme.
Plugins that survive the next update, and get extended instead of forked.
Custom plugins from a written specification to a release that survives platform updates. WooCommerce work where a store actually runs: invoicing, receipts, payment gateways, order flows and customer profiles. And publishing to WordPress.org where it makes sense, with the review, the readme and the release workflow handled.
The work that shows up after a store goes live: the workflow no plugin covers, the plugin that breaks on every update, the code nobody wants to own.
Invoices that follow local legal rules, receipts for bank transfers, a checkout that reads the field the profile writes. I build it as a plugin with its own settings, not as snippets in a theme.
Usually it reaches into WooCommerce's internals instead of going through its APIs. I move the data access onto the supported path, so the next release is not an event.
When WooCommerce moved orders out of the posts table, every order-meta call had to change. I have done that on a plugin with thousands of live installs, where breaking them was not an option.
Send me the repository and I will tell you what shape it is in before you commit to anything.
Readable hooks, templates a theme can override, and settings that export as a file. Other developers change the behaviour without forking the code.
The review process, the readme, the assets and the release workflow. I have done it repeatedly: nine plugins are live across three organisations.
"Survives updates" is easy to write. This is what it has meant on the largest thing I maintain, release by release.
First public release
Right to left, the Jalali calendar, Persian numerals, national and economic ID fields and thermal receipt printers were requirements from the first version, not later additions.
Bulk operations
ZIP archives of PDFs, batch printing, and export of every setting as JSON or PHP, after the support queue showed stores downloading invoices one order at a time.
HPOS, completed
Every order-meta call rewritten for WooCommerce's new order storage, in the same cycle as an 80mm thermal template, per-document page sizes and mPDF 8.2.7.
CVE-2025-54869
Reported privately through Patchstack's disclosure programme, fixed under its deadline, and shipped through the normal WordPress update.
Bulk downloads hardened
Archive filenames randomised, and the files deleted from disk after delivery.
Still shipping
Tested against WordPress 6.9.7, and the support forum still gets answered.
Ultimate Invoice is published by Pepro Dev; I lead its development and maintenance.
The full product pageThe decisions that kept that plugin alive through six years of WordPress and WooCommerce releases. I bring them to every build, public or private.
The same five steps for a new plugin or for a rescue of an old one.
A short call
Thirty minutes. You describe the problem, I tell you honestly whether I am the right person.
A written scope
Before any code, you get a document that says what will be built, what will not, how long, and what it costs. You approve it or we adjust it.
Milestones on a staging site
You see progress. Nothing lands on production without your sign-off.
Handover
Documentation, a recorded walkthrough, and everything in your repository, not mine.
Maintenance, if you want it
Monthly or on demand. Optional, and separate.
I work white-label, and often. Pigment is an agency, so I know how that arrangement works from both sides.
A good fit when
The problem is technical, the scope can be written down, and you want the person who builds it to still be reachable in a year.
Not a fit when
You need it next week, or the budget assumes a template.
I am not a designer, a theme customiser, or an agency. For design and full-service work, Pigment Agency is where I would send you, and I would probably end up doing the development anyway.
The ones that come up before a plugin is scoped.
If that is what you want, yes, including the review process, the readme, the assets and the release workflow. I have done it repeatedly.
Usually yes. Send me the repository and I will tell you what shape it is in before you commit to anything.
Yes. Some of my past work is under one and does not appear on this site.
I will quote after the first call, once I know what the work actually is. I do not quote from a form.
We agree that during scoping. It depends on where you are, and I would rather solve it before the work starts than after.
UTC+3:30. That is a full working overlap with Europe and the Gulf, and it covers the first half of the North American day. I work asynchronously and write things down, so you should not need to be online at the same time as me.
// services/
Tell me what you are trying to build or fix, what already exists, and what a good outcome looks like. I reply within two business days, and I will tell you honestly whether I am the right person.