AI coding assistants make WHMCS module development faster where the pattern is documented: module skeletons, API clients, Capsule queries, language files and test lists. They fail where the answer depends on how WHMCS behaves at runtime, on a vendor's real API or on your business rules. Give them the official developer docs, test on a staging copy, and never paste secrets or client data.
Which WHMCS jobs can you now handle yourself with an AI assistant?
Most one-off fixes and small hooks, in my view. Since October 2026 I no longer sell one-off WHMCS fixes as a separate service, because an owner with an assistant, the official documentation and a staging copy can handle most of them. Module design is a different matter, and the last section explains why.
| Job | Assistant plus docs enough? | What to give it |
|---|---|---|
| Finding the cause of an error in the Module Log or a blank page | Usually | The exact error text, your WHMCS and PHP versions, and the relevant docs page. |
| A hook that reacts to one event, such as posting to Slack when a ticket opens | Usually, if tested on staging | The hook's reference page with its parameters. |
| Email template wording or a language override | Yes, often with no code at all | The template or string you want changed. |
| A provisioning module for a platform WHMCS does not support | No | Design decisions first. See the last section. |
| A payment gateway with callbacks | No | Money moves through it, so every path needs a deliberate design. |
| A migration that carries custom modules | No | A plan for data, versions and rollback. |
How do you give an assistant the real WHMCS documentation?
Give it the official page instead of trusting its memory. The WHMCS developer documentation now serves every page as Markdown when you add .md to the address, keeps an llms.txt index of all pages, and has a menu on each page to open it in ChatGPT or Claude or to connect the docs to Cursor or VS Code as an MCP server. Paste the exact page for the function, hook or API action you are using.
Then start from WHMCS's own sample code. The provisioning module getting-started page links a sample module on GitHub and recommends it as the starting point, and the addon, registrar and gateway sections link their own samples. An assistant editing a known-good sample makes fewer structural mistakes than one writing from nothing.
Where do AI coding assistants help on a WHMCS module?
They help most with repetitive structure that follows a documented pattern. This is how I split the work.
| Task | What I ask the assistant for | What I check myself |
|---|---|---|
| Module skeleton | File layout and stubs for MetaData, ConfigOptions and the core functions. | The name uses only lowercase letters and numbers and starts with a letter. Each core function returns the word success or an error message staff can read. |
| API client for the remote panel | A client class built from the vendor's documentation, with timeouts and typed exceptions. | Real calls against a sandbox account, because vendor docs drift. |
| Database work | Queries and table creation through Capsule, the Laravel-based layer described in Interacting with the Database. | No deprecated helpers such as select_query() or full_query(), and no change to WHMCS's default tables, which the same page advises against. |
| Language files and templates | First drafts of language arrays and Smarty templates. | Output is escaped and the strings read naturally. |
| Documentation | An install guide drafted from the code. | Every step followed on a clean install. |
| Review | A list of risks in a diff: input handling, SQL, escaping, error paths. | Each finding verified. A review with no findings proves nothing. |
Where do AI coding assistants fail on WHMCS work?
They fail where the right answer is not in the prompt. I check every AI-assisted change for these.
- Invented names. A hook, API action or helper that does not exist, or that belongs to another version.
- Old patterns. Older WHMCS code is everywhere online, so assistants still suggest the deprecated SQL helpers, or API calls that log in with an admin username and MD5 password. The API authentication page keeps that method only for backwards compatibility. Use API credentials.
- Secrets in the Module Log.
logModuleCall()records each request and response. WHMCS recommends passing usernames and passwords in its$replaceVarsargument so they are scrubbed. Generated code usually leaves it out. - Double payments and double provisioning. The gateway callback documentation calls
checkCbInvoiceIDandcheckCbTransIDbeforeaddInvoicePayment, so a repeated notification is not applied twice. Generated callbacks often skip the second check. A hook can also fire on both order acceptance and invoice payment. - Name collisions. WHMCS's hook documentation says to prefix named hook functions with something unique. Assistants pick generic names that clash with other modules.
- Core edits. Assistants suggest editing core files. Those changes are lost at the next upgrade, so the work belongs in
includes/hooks/or a module. - Real-account edge cases. Partial failures, retries, reseller hierarchies and services suspended by hand are outside what an assistant knows. I decide that behavior and write it into the prompt and the tests.
What should you never paste into an AI assistant?
Never paste secrets, license keys or client data. Use placeholders and invented sample records. The main hazard is configuration.php, and the configuration.php documentation lists what it holds.
| Never paste | Where it lives | Use instead |
|---|---|---|
| The WHMCS license key | $license in configuration.php | A placeholder string |
| Database credentials | $db_username, $db_password | Placeholders |
| The encryption hash | $cc_encryption_hash, which WHMCS needs to decrypt stored data | Nothing. It should never leave the server. |
| API keys and credentials | $api_access_key, API credential identifiers and secrets | Placeholders |
| Client records, invoices, ticket text, database dumps | The WHMCS database | Invented rows with the same columns |
| Module Log and Activity Log entries | Configuration > System Logs | The same entry with names, emails, IP addresses and passwords removed |
| Encoded source of a vendor's module | The vendor's files | A question to the vendor |
If something slips through, treat it as exposed. Change the password, and for an API secret generate a new credential pair and delete the old one, as the API credentials page advises when a secret is lost. Read the data terms of your assistant plan, and get a client's written agreement before code under an NDA goes into any outside tool.
What review and testing does AI-written WHMCS code need?
The same as any code, applied strictly: nothing ships that I cannot explain line by line, and nothing is tested on production.
- Read every line. If you cannot explain it, it does not go in.
- Work in a staging copy of WHMCS with a sandbox account on the remote panel.
- Turn on logging at Configuration > System Logs > Module Log, since it is not always on. Run each core function from the admin service page, compare the log with the remote panel, then run Create and Terminate a second time to confirm a repeat is safe.
- Trigger each hook from every route that can fire it: order, payment, admin action and cron. Count the runs.
- Run
php -lon every file, plus a static analyzer if the project has one, then check every place where input reaches SQL, output or a log. - Test on the WHMCS and PHP versions you run. My WHMCS system requirements guide covers how to check them.
- Follow the install notes on a clean copy and fix whatever the code does not support.
What does a good prompt for WHMCS module work look like?
It states the constraints, includes the documentation, forbids guessing and asks for assumptions. This is the template I adapt.
Below is the WHMCS developer docs page for provisioning modules (Markdown).
Write a server module named "examplepanel" for WHMCS version X on PHP Y.
Rules:
- Each core function returns "success" or an error string for staff.
- CreateAccount and TerminateAccount must be safe to call twice.
- Use only functions shown in the pasted docs. Mark anything else TODO.
- Use the API client class I provide. Do not invent endpoints.
- Pass secrets to logModuleCall() in $replaceVars.
- List every assumption you made at the end.
The output is a draft. The list of assumptions is the most useful part, because it shows me where to look first.
Why does WHMCS module design still need a developer?
Because an assistant writes code for the decisions you give it, and on a module the decisions are the hard part. That is my view, and I sell this work, so weigh it accordingly. Before any code, someone has to decide:
- where the module stores the ID the remote system returns, and what happens when the remote side succeeds but WHMCS records a failure;
- what each core function does on a second call, since staff and the cron can both run it;
- which events trigger which hooks, and which must not;
- what is logged and what is scrubbed;
- how the module's own tables change in version two;
- who maintains it and who answers when billing goes wrong.
An assistant can draft each of these once a person has decided it. It cannot own the result. My hooks guide and provisioning module guide cover the repeat-safe patterns I check against, and a WHMCS security audit is the route if you already have AI-written code you are unsure about. If you want the design done for you, WHMCS custom module development sets out how I work.
If you want Claude Code's speed with a developer who makes those decisions and reviews every change, that is how I work as a Claude Code developer for hire.
Last reviewed 12 October 2026. Disclosure: I sell WHMCS and web development work, so I am not neutral. I am CTO at ElySpace, a freelance developer for Marmaids LLC, and founder of WHMCSPilot and MagizAI. WHMCS specifics come from developers.whmcs.com and docs.whmcs.com as I read them on that date.