AxiWHMCS: Operation and Integration Guide

Axigen Documentation

AxiWHMCS is the Axigen WHMCS Server Provisioning Module — a drop-in WHMCS plugin that automates the lifecycle of Axigen mail-server domains and mailbox accounts directly from inside WHMCS. It is intended for hosting providers who use WHMCS for billing and automation and run Axigen as their mail platform.

The module communicates with Axigen via the Axigen CLI protocol (TCP, optionally SSL) and supports multi-server clusters with round-robin load balancing.

AxiWHMCS supports two distinct WHMCS product types:

  • Axigen Domain — full domain provisioning (groupware, storage locations, admin limits, mailing lists, groups, aliases).

  • Axigen Account — individual mailbox provisioning inside an existing Axigen domain (storage quota, message limits, account class, password).

AxiWHMCS works with Axigen X6 (10.6.x) and Axigen X7 (10.7.x).


1. Architecture

AxiWHMCS sits on the WHMCS host as a standard server provisioning module. Each provisioning action triggered by WHMCS (create, suspend, unsuspend, change package, terminate, change password, usage update) opens a TCP connection to the Axigen CLI port, sends the relevant CLI commands, and returns the result to WHMCS.

For clusters, WHMCS server groups can contain multiple Axigen servers; AxiWHMCS picks a target on each provisioning request using round-robin selection. Domain-level provisioning and account-level provisioning take separate code paths and present separate configuration UIs.


2. Prerequisites

Component

Required version

WHMCS

8.x

PHP

7.2 or higher

Axigen Mail Server

Any supported version with CLI service enabled

Network

TCP / IP reachability between the WHMCS host and the Axigen CLI port (default 7000, or 7001 for SSL)

The Axigen CLI service is enabled by default. Confirm it is reachable from the WHMCS host before installation:


3. Installation

  1. Download the AxiWHMCS module archive from the Axigen Additional Modules page.

  2. Extract the archive on the WHMCS host so the module folder lands at:

  3. From inside that folder, install the runtime dependencies and the ModulesGarden framework:

  4. Activate the module: in the WHMCS admin area, navigate to Setup → Addon Modules, locate AxigenProvisioningModule, and click Activate.

The module is now available for server and product configuration.


4. Server configuration in WHMCS

Each Axigen server that AxiWHMCS will provision against is registered as a WHMCS server.

  1. In WHMCS admin, go to Setup → Servers → Add New Server.

  2. Fill in the server fields:

    FieldValue
    NameA human-readable label (e.g. axigen-prod-01)
    HostnameThe Axigen server hostname or IP
    ModuleAxigenProvisioningModule
    UsernameAn Axigen administrator account
    PasswordThe administrator’s password
    SecureEnable for SSL CLI (port 7001); leave disabled for plain CLI (port 7000)
    Port7000 (plain) or 7001 (SSL). If left blank, the module uses the default for the secure flag.
  3. Click Test Connection. The module opens a CLI session, authenticates, and returns success or a diagnostic error.

  4. Save.

For multi-server hosting, repeat the steps for each Axigen server. Then create a Server Group under Setup → Servers → Create New Group, assign the servers, and choose the Fill Type (round-robin is recommended; AxiWHMCS uses the WHMCS-selected target on each provisioning call).


5. Product configuration

AxiWHMCS exposes two product types, configured per WHMCS product.

5.1 Common settings

For every product:

  1. In Setup → Products / Services → Products / Services, create or edit a product.

  2. On the Module Settings tab, set:

    • Module Name: AxigenProvisioningModule

    • Server Group: the group containing your Axigen server(s)

    • Product Type: Axigen Domain or Axigen Account

The remaining fields on the Module Settings tab change depending on the chosen product type.

5.2 Axigen Domain — fields

Use this product type when the customer-facing offering is an entire mail domain.

Section

Fields

Domain

Domain placeholder / mapping; default reply / postmaster addresses

Groupware

Enable groupware on the provisioned domain (yes / no)

Storage locations

Domain, object, and message storage paths (server-side)

Storage limits

Maximum file count and individual file size per storage location

Migration

Optional IMAP / SMTP source for new-account migration on first login

Admin limits

Maximum number of accounts, mailing lists, groups per provisioned domain

5.3 Axigen Account — fields

Use this product type when the customer-facing offering is a single mailbox inside an existing Axigen domain.

Section

Fields

Target Domain

Dropdown of domains discovered from the selected server group

Account Class

Dropdown of account classes available on the selected target domain

Account Settings

Storage quota, max number of stored messages, message size limits, etc.

The Target Domain and Account Class dropdowns are populated dynamically by AxiWHMCS via a CLI call to the server group on the Module Settings screen. If a dropdown is empty, the most common cause is that the server group has not been picked yet, or that the Axigen administrator account does not have permission to enumerate domains and / or classes.


6. Provisioning behavior

The actions WHMCS dispatches to AxiWHMCS, and what each one does on the Axigen side:

WHMCS action

Axigen Domain product

Axigen Account product

Create

CREATE Domain with the configured settings

CREATE Account in the configured target domain

Suspend

Disables the domain (services blocked)

Disables the account (login blocked)

Unsuspend

Re-enables the domain

Re-enables the account

Terminate

DELETE Domain (irreversible)

DELETE Account (irreversible)

Change Package

Re-applies the new product’s settings to the existing domain or account

Same

Change Password

Updates the domain admin password (Domain product)

Updates the account password

Test Connection

CLI session test — does not change state

Same

Usage Update

Reads current storage usage and message counts; reports back to WHMCS for quota display and overage triggers

Same

All actions are logged to the WHMCS module log (per the WHMCS standard) for audit and troubleshooting.


7. Multi-server clusters

When a WHMCS server group contains multiple Axigen servers, AxiWHMCS picks a target on each provisioning call based on the server group’s Fill Type. The recommended type is Use the least full server or Round-robin, both of which spread provisioning evenly.

Once a domain or account is created on a specific Axigen server, all subsequent actions for that WHMCS service (suspend, unsuspend, terminate, etc.) are routed to the same server — WHMCS records the assigned server on the service.

For load balancing of user traffic (SMTP, IMAP, HTTPS) across multiple Axigen servers, see the Axigen clustering documentation. AxiWHMCS itself only governs the provisioning path.


8. Operations

8.1 Health and connectivity checks

The fastest health check is the Test Connection button on each WHMCS server. It opens a CLI session, authenticates, and exits. If it fails, the cause is one of:

  • The CLI port is not reachable from WHMCS (firewall, network).

  • The administrator credentials are wrong.

  • SSL is enabled in WHMCS but the CLI service is plain on Axigen, or vice versa.

8.2 Logs

Source

Location

WHMCS module log (provisioning actions)

WHMCS admin → Utilities → Logs → Module Log

AxiWHMCS internal trace

Same module log (the module writes structured entries with the action, target server, CLI commands sent, and Axigen response)

Axigen CLI log (server side)

Axigen log location for the CLI service (see Axigen documentation for your platform)

Enable the WHMCS module log under Setup → General Settings → Other → Module Debug Logging during initial setup or when troubleshooting.

8.3 Routine operations

  • Adding a new Axigen server to the cluster: register it as a new WHMCS server, add to the server group. New provisionings will start landing on it; existing services stay on their original server.

  • Decommissioning an Axigen server: in the WHMCS server, set Maximum Allowed Accounts to a number lower than the current usage, or remove it from the server group. Existing services on it remain provisioned and operational; nothing new is created on it. Migrate the existing services manually if the server is going away.

  • Rotating the admin password: update the password on Axigen first, then update the Password field on the WHMCS server, click Test Connection to confirm.


9. Troubleshooting

Symptom

Likely cause

Resolution

Test Connection fails with a network timeout

Firewall blocking the CLI port, or the CLI service is not listening on the expected interface

Confirm nc -zv <host> 7000 (or 7001) succeeds from the WHMCS host. Check the Axigen CLI service binding.

Test Connection fails with an authentication error

Wrong username / password, or the admin account is disabled

Verify the credentials by logging in to Axigen WebAdmin or via axigen-cli.

Test Connection succeeds but provisioning fails with SSL handshake error

SSL flag mismatch between WHMCS server config and Axigen CLI service

Either enable SSL on Axigen and use port 7001, or untick Secure in WHMCS and use port 7000 — the two ends must agree.

Domain creation succeeds but groupware is not enabled

Groupware disabled in product config, or the Axigen domain class does not allow groupware

Re-check Groupware in the product settings. If the dropdown is greyed out, the admin account may not have permission to set it on this domain class.

Account creation fails with Domain not found

The product’s target domain has been removed on Axigen since the dropdown was populated

Edit the product, re-pick the target domain (the dropdown reloads from the server).

Account creation succeeds but Usage Update reports zero

The first usage report runs after the next scheduled WHMCS task; or storage quotas are not enforced on the chosen account class

Wait for the next WHMCS cron run or trigger usage update manually. Confirm the account class enforces quotas.

Module log shows Connection refused after working previously

Axigen CLI service was restarted or stopped

Restart the CLI service on the Axigen side; confirm it is running and bound to the expected port.

Change Package re-applies storage limits but does not reduce existing data

This is by design — quotas apply to new usage, existing files are not deleted

If you need to free space, ask the customer to delete content, or use Axigen tools to enforce a hard cap.


10. References