BunnyCDN for WHMCS connects WHMCS services to Bunny.net pull zones. Administrators can provision and import zones, while customers can activate eligible services, manage hostnames, check SSL, purge cache and view statistics.
Bandwidth suspension in this module is local bookkeeping. A zone marked suspended in WHMCS continues serving traffic at Bunny.net and can continue generating charges. Plan a separate operator response to overages.
Requirements and installation
- Use WHMCS 8.9 or later, PHP 8.1 or later with cURL, a Bunny.net account and a valid module license.
- Merge the supplied
modulesdirectory into the WHMCS root. The package includesmodules/addons/bunnycdn/andmodules/servers/bunnycdn/. - Activate BunnyCDN in WHMCS Addon Modules, enter the license key and assign administrator access.
- Open Addons → BunnyCDN → Settings. Enter the Bunny.net Account API key, not a Storage API key.
- Set the pull-zone prefix, optional customer documentation URL and bandwidth tracking as needed. Save, then test with an eligible service and an origin you control.
Origins must be valid HTTP or HTTPS URLs reachable publicly. The module rejects origins resolving to private or reserved addresses. This check is not a guarantee against later DNS changes.
Choose a deployment method
Standalone CDN product
- Create a WHMCS product and select the
bunnycdnserver module. - Configure the product's normal provisioning and pricing settings.
- If needed, add dropdown configurable options named exactly
Pricing ZoneandBandwidth Limit. - Use
StandardorVolumefor Pricing Zone. Bandwidth examples include100GB,500GBand1TB. - Provision a test service and confirm that its pull zone and customer management page appear.
Standard and Volume are Bunny.net CDN network tiers. Check Bunny.net's current coverage and pricing rather than treating them as fixed geographic or price guarantees.
Paid addon
Create a WHMCS product addon and assign it to the hosting products that should offer CDN. Use an addon name containing CDN, Bunny or bunnycdn, as the module uses those names to recognize an entitlement. The hosting service and purchased addon must be Active. Customers then activate CDN from the service page by entering their origin URL.
Included CDN
Select the hosting products under CDN-Enabled Products in the module settings. Customers with an Active eligible service can activate CDN from its service page without buying another addon.
Additional client-only zones
The administrator can grant access through Allowed Clients. An approved client can create additional zones without a service mapping. These use Standard pricing and have no bandwidth limit. This permission does not bypass ownership or eligibility checks when a service is supplied.
Hostnames, DNS and SSL
- Activate the zone with its origin URL. Initial provisioning gives it a system
.b-cdn.nethostname; it does not create a custom hostname. - Add the custom hostname from the management interface, for example
cdn.example.com. - At the DNS provider, point that hostname to the CNAME target shown for this specific zone. Do not copy another zone's target.
- After DNS resolves correctly, use Activate SSL once if issuance is needed.
- Use Refresh SSL Status to check progress. Refreshing status does not request another certificate.
New zones have AutoSSL enabled. Certificate issuance depends on DNS and the certificate provider; do not promise a fixed completion time. Repeated activation requests before DNS is ready can trigger issuance limits. If another proxy hides the CNAME, use DNS-only routing while verifying the Bunny.net configuration and follow Bunny.net's requirements for ongoing operation.
Welcome email
The addon installs the Product/Service template BunnyCDN Service Activated. Assign it as the welcome email for a standalone product. WHMCS sends that selected welcome email after provisioning, with live zone data supplied by the module. For addon or included CDN activated later by the client, the module sends the activation template then; disable that template if you do not want the deferred email.
Useful merge fields include {$bunnycdn_origin_url}, {$bunnycdn_cdn_url_full}, {$bunnycdn_cname_target} and {$bunnycdn_manage_url}. Tell customers to add a custom hostname before creating its CNAME. Existing templates with the same name are preserved during upgrades, so review their wording yourself.
Bandwidth tracking
Configure the exact option name Bandwidth Limit on the relevant product and enable bandwidth limiting in the addon. Supported numeric values include 100GB, 500 GB and 1.5TB. Labels such as Large are not numeric limits.
The module's daily WHMCS cron checks monthly usage for zones with a stored limit, records local suspension on overage and creates an administrator to-do item. It does not have a universal 3 AM schedule and does not stop Bunny.net traffic. Check the to-do and provider usage, contact the customer and decide whether to upgrade or stop the service. Deleting a provider zone is destructive and should not be treated as a routine warning action.
Daily administration
Use the addon to create a zone for a client, import an existing Bunny.net zone and map it to the correct client and service, manage custom hostnames, inspect usage or purge cache. Verify ownership before importing. Purging cache does not delete the origin files.
Troubleshooting and updates
- If API access fails, check the Account API key, PHP cURL, outbound HTTPS to
api.bunny.netand the WHMCS activity log. - If activation is missing, check Active service status, the selected CDN-enabled product or Active qualifying addon, and module activation.
- If SSL is pending, check the displayed CNAME target and public DNS first. Refresh status rather than repeatedly requesting certificates.
- If bandwidth tracking is missing, check the stored limit, option spelling and normal WHMCS cron. Continued traffic after local suspension is expected.
Before upgrading, back up the database, module files and customized email templates. Replace the supplied files and test activation, hostname management and customer access. Contact ArkHost support with versions and redacted errors, never the API key.