AzuraCast WHMCS Module

Complete documentation for installing, configuring, and managing the AzuraCast WHMCS Module — the most comprehensive automation solution for radio hosting businesses powered by AzuraCast and WHMCS.

Overview

The AzuraCast WHMCS Module automates the entire lifecycle of radio stations — from order to termination. When a customer places an order, the module automatically provisions a fully configured AzuraCast station, creates user credentials, assigns permissions, and sends a welcome email with all connection details.

It integrates seamlessly into both the WHMCS Admin Area (for operators) and the WHMCS Client Area (for customers), providing a premium self-service experience with an embedded radio player, SSO deep-linking, and real-time station management.

Key Features

Auto-Provisioning

Automatically create AzuraCast stations, users, roles, and mount points when an order is placed.

🛠

5-Step Setup Wizard

Guided wizard configures servers, products, custom fields, and email templates in minutes — no manual setup required.

🔒

SSO Deep-Linking

One-click login to AzuraCast panel features directly from the WHMCS client area — no separate credentials needed.

🔄

Lifecycle Management

Suspend, unsuspend, terminate, and upgrade stations automatically based on WHMCS service status.

🎧

Client Self-Service

Embedded radio player, live now-playing, start/stop controls, password reset, and broadcast credentials.

💻

Embed Widgets

Embeddable HTML player, now-playing widgets, schedule displays, and request forms for customer websites.

📊

Admin Sync Tool

Detect and resolve inconsistencies between AzuraCast stations and WHMCS services with one click.

📨

Email Integration

Custom email template with 10+ merge fields for station credentials, stream URLs, and login details.

System Requirements

💻
WHMCS Version
8.x or 9.x
PHP Version
8.1 – 8.4
🔒
IonCube Loader
Required
🔑
License Key
Required
ℹ️ IonCube Loader

The module ships with encoded files for PHP 8.1 and PHP 8.3 (covering 8.1–8.4). Make sure IonCube Loader is installed and active on your web server. Most hosting panels (Plesk, cPanel) include IonCube by default.

AzuraCast Server

  • AzuraCast installed via Docker (recommended) or Ansible
  • API Key with full administrator permissions
  • Network access between your WHMCS server and AzuraCast server (HTTPS recommended)
  • AzuraCast version 0.19+ (tested up to 0.23.x)
💡 Tip

If your AzuraCast server is behind a CDN or proxy (e.g., Cloudflare), you can provide both the hostname and the direct IP address during setup. The module will use the direct IP for API calls.

Download & Installation

After purchasing the module, download the ZIP archive from your client area or the link provided in your order confirmation email.

Extract the Archive

Extract the downloaded ZIP file. You will see the module folder containing three subdirectories that mirror the WHMCS root structure:

AzuraCast WHMCS Module ZIP file extracted showing the module folder
Downloaded ZIP archive and extracted module folder
AzuraCast module folder contents showing includes, modules, and global-email-template directories
Module folder structure: global-email-template, includes, and modules
📁 Folder Structure

The three folders map directly to your WHMCS installation root:

  • modules/ — Server module + Addon module files
  • includes/ — Hook files for client area integration
  • global-email-template/ — Optional: pre-built email template (HTML file for manual import)

Upload to WHMCS

Upload all three folders to your WHMCS root directory, merging them with the existing folder structure. You can use FTP/SFTP, SCP, or your hosting panel's file manager.

Option A: Via FTP / SCP

WHMCS root directory shown in FTP client with modules and includes folders
Upload via FTP/SCP — merge modules/ and includes/ into WHMCS root

Option B: Via Plesk / cPanel File Manager

Plesk file manager showing WHMCS root directory with uploaded module files
Upload via Plesk File Manager — navigate to httpdocs/ and upload
⚠️ File Permissions

After uploading, ensure the files have the correct ownership matching your WHMCS installation. On Plesk, this is typically your-domain_username:psacln. Wrong permissions can cause “500 Internal Server Error” or “Oops” pages.

Verify Installation

After upload, confirm these paths exist on your server:

whmcs-root/
  modules/
    servers/azuracast/           # Server module
      azuracast.php
      lib/API.php
      lib/StationManager.php
      lib/LicenseGuard.php
      hooks.php
      cron.php
      sync.php
      templates/client/overview.tpl
    addons/azuracast_manager/    # Addon module
      azuracast_manager.php
      lib/License.php
      hooks.php
      index.php
  includes/
    hooks/
      azuracast_services_display.php
      azuracast_sync_button.php

Addon Activation

After uploading the files, activate the AzuraCast Manager addon module in your WHMCS admin panel.

  1. Navigate to Addon Modules

    Go to Configuration → Addon Modules in the WHMCS admin area. Find “AzuraCast Manager” in the list and click the Activate button.

    WHMCS addon modules list with AzuraCast Manager activate button highlighted
    Click “Activate” on the AzuraCast Manager addon
  2. Configure the Addon

    After activation, the configuration panel expands. Enter your license key, select which admin roles should have access, and click Save Changes.

    AzuraCast Manager configuration with license key field and access control options
    Enter license key, set access control, and save
⚠️ Database Cleanup

The “Database Cleanup” checkbox permanently deletes ALL AzuraCast data (products, fields, config options, templates, servers). Only use this when completely removing the module. This cannot be undone.

License Setup

A valid license key is required for the module to function. You receive your license key after purchase. Enter it in the addon configuration field and click Save.

Verify License

After saving, click the “License Active” badge to view your license details including the registered owner, product, email, issue date, and expiration.

License verification popup showing active license status and details
License verification popup showing active status

Setup Wizard

The Setup Wizard guides you through the complete initial configuration in 5 easy steps. It automatically creates your server connection, products, custom fields, and email template.

Step 1: Connect Your AzuraCast Server

Enter your AzuraCast server connection details:

  • Server Name — A friendly name for display in WHMCS admin (e.g., “AzuraCast Production”)
  • Hostname or IP — Your AzuraCast server address without https://
  • Direct Server IP (optional) — Only needed if the hostname is behind a CDN/proxy
  • API Key — Must have full administrator permissions (How to create an API key)
Setup Wizard Step 1 showing server connection form with hostname, IP, and API key fields
Step 1: Enter your AzuraCast server details

Click “Test Connection & Add Server” to verify the connection. On success, you’ll see the AzuraCast version and the server will be added to WHMCS.

Connection test passed showing AzuraCast version and server added successfully
Connection test passed — server added with status “Active”
✔ Multi-Server Support

You can add multiple AzuraCast servers. Click “Add Another Server” to connect additional servers before proceeding.

Step 2: Create Radio Hosting Products

The wizard creates 4 pre-configured example products with sensible defaults for common radio hosting plans:

Package Bitrate Listeners Mounts Storage Monthly
Starter 64 kbps 50 1 1 GB €2.50
Basic 128 kbps 100 2 5 GB €4.99
Pro 256 kbps 500 5 15 GB €9.99
Enterprise 320 kbps Unlimited 10 50 GB €19.99
Setup Wizard Step 2 showing preview of 4 radio hosting products to be created
Step 2: Preview of the 4 example products before creation
Products successfully created with WHMCS product IDs assigned
Products created successfully with assigned WHMCS IDs
ℹ️ Note

These are example products. You can modify names, pricing, and all configuration options later in Products/Services. You can also skip this step and create products manually.

Step 3: Create Custom Fields

Each AzuraCast product requires 14 custom fields (9 admin-only + 5 customer-facing). The wizard scans all products and creates any missing fields automatically.

Setup Wizard Step 3 showing custom field status for all products
Step 3: Custom field status before creation
All 56 custom fields created successfully across 4 products
All custom fields created — 14/14 per product

Custom Field Types

FieldTypePurpose
station_idAdmin-onlyAzuraCast station ID
azuracast_emailAdmin-onlyAzuraCast login email
azuracast_user_idAdmin-onlyAzuraCast user ID
azuracast_role_idAdmin-onlyAzuraCast role ID
azuracast_passwordAdmin-onlyPanel login password (encrypted)
source_passwordAdmin-onlyBroadcast source password (encrypted)
admin_passwordAdmin-onlyAdmin password (encrypted)
Stream URLAdmin-onlyDirect stream URL
Public Page URLAdmin-onlyPublic player page URL
Station NameCustomerStation name (order form)
Station DescriptionCustomerStation description (order form)
Station GenreCustomerMusic genre (order form)
Station WebsiteCustomerStation website URL (order form)
Broadcasting SoftwareCustomerPreferred streaming software (order form)

Step 4: Email Template

The wizard creates a custom email template “AzuraCast Station Credentials” that is sent to customers when their station is provisioned. It includes all connection details, login credentials, and stream URLs.

Setup Wizard Step 4 showing email template creation with merge fields
Step 4: Email template created with custom merge fields

Step 5: Setup Complete

All done! The wizard summarizes everything that was configured: servers, products, custom fields, and email template.

Setup Wizard completion screen showing summary of configured items
Setup complete — all components configured and ready
🎉 Ready to Go!

Your module is fully configured. New orders will automatically provision AzuraCast stations. You can now review the Dashboard or customize your products.

Dashboard

The AzuraCast Manager Dashboard provides a centralized overview of your license status, server connections, product health, email template configuration, and quick actions.

License Information

The top section displays your license key, activation status, registered owner, product type, billing cycle, and expiration date. A green License Active badge confirms your license is valid.

AzuraCast Manager dashboard showing license information, server configuration, and product status
Dashboard: License info, server configuration, and product status overview

Servers

Lists all configured AzuraCast servers with hostname, IP, HTTPS status, and connection status. Click Edit to modify server settings or Remove to delete a server connection.

Product Status

Shows all AzuraCast products with their custom field health. Each product should show 14/14 Complete. If fields are missing, use the “Create All Missing Fields” quick action.

Dashboard product status showing all 4 products with complete custom field status
Product status and email template management

Email Template

Displays the current email template status. Use “Set on All Products” to assign the template as the welcome email for all AzuraCast products, or “Reset Template” to recreate it with default content.

Available Merge Fields

Lists all custom merge fields provided by the module for use in email templates:

Merge FieldDescription
{$azuracast_station_name}Station Name
{$azuracast_station_id}Station ID
{$azuracast_login_url}Panel Login URL
{$azuracast_email}Login Email
{$azuracast_password}Login Password (decrypted)
{$azuracast_source_password}Source / DJ Password (decrypted)
{$azuracast_admin_password}Admin Password (decrypted)
{$azuracast_stream_url}Direct Stream URL
{$azuracast_public_url}Public Player Page URL
{$azuracast_portal_url}Client Portal Link
Dashboard showing merge fields list, sync tool section, and quick actions
Merge fields, Sync Tool section, and Quick Actions

Quick Actions

  • Create All Missing Fields — Scans all AzuraCast products and creates any missing custom fields. Existing fields are not modified.
  • Run Setup Wizard Again — Reopens the step-by-step wizard to review or reconfigure your server, products, fields, and email templates.
  • Open Sync Tool — Launch the Sync Tool to detect and resolve inconsistencies between AzuraCast and WHMCS.

Product Configuration

Each radio hosting product can be individually configured with pricing, module settings, and custom fields. The Setup Wizard creates sensible defaults, but you can customize everything.

Product Details

Navigate to Configuration → Products/Services to see all your AzuraCast products under the “Radio Hosting” group.

WHMCS Products/Services page showing Radio Hosting product group with 4 AzuraCast products
Products/Services page — Radio Hosting group

Click on a product to edit its details including name, description, product group, and order form settings.

Product Details tab showing product name, description, tagline, and configuration options
Product Details tab — name, description, and display settings

Pricing

Configure recurring pricing for each billing cycle (monthly, quarterly, semi-annually, annually, etc.).

Product Pricing tab showing monthly and annual pricing configuration
Pricing tab — configure billing cycles and amounts

Module Settings

The Module Settings tab controls how each product provisions stations on AzuraCast. These 12 configurable options define the station specifications:

#OptionDescription
1Station PrefixPrefix for auto-generated station names (e.g., “Station”)
2Default BitrateStream bitrate in kbps (64, 128, 256, 320)
3Streaming EngineIcecast or SHOUTcast v2
4Max ListenersMaximum concurrent listeners (0 = unlimited)
5AutoDJEnable automatic playback with Liquidsoap
6Max MountsMaximum number of mount points
7Public PageEnable the public station page on AzuraCast
8Storage (GB)Media storage quota
9Live DJsAllow live DJ/streamer connections
10Podcast Storage (GB)Podcast storage quota
11Song RequestsAllow listeners to request songs
12Recording Storage (GB)Recording storage quota
Product Module Settings tab showing all 12 AzuraCast configuration options
Module Settings — all 12 configurable station options
ℹ️ Auto Setup

Set the “Auto Setup” option at the bottom to control when stations are provisioned: on order, on first payment, on pending order acceptance, or manually.

Custom Fields

The Custom Fields tab shows all 14 fields for the product. The 5 customer-facing fields appear on the order form and let customers personalize their station during checkout.

Product Custom Fields tab showing customer-facing fields for the order form
Custom Fields — customer-facing fields on the order form
⚠️ Important

Do not rename or delete admin-only custom fields (snake_case names). The module relies on these exact field names for station provisioning and data storage.

Email Templates

The module provides a custom email template that is automatically sent to customers when their radio station is provisioned.

Template Editor

Navigate to Configuration → Email Templates and find “AzuraCast Station Credentials” under Product/Service Messages.

WHMCS Email Templates page with AzuraCast Station Credentials template highlighted
Email Templates list — AzuraCast Station Credentials

Click to edit the template. The default template includes sections for:

  • Welcome message with client and service information
  • Panel login credentials (URL, email, password)
  • Broadcast passwords (source, admin)
  • Stream URLs (direct stream, public player page)
  • Client portal link for station management
Email template editor showing subject line and email body with merge fields
Email template editor with subject line and body

Available Merge Fields

The module registers custom merge fields that you can use in any email template. They are available in the “Available Merge Fields” panel on the right side of the template editor.

Email template editor showing available AzuraCast merge fields panel
Available merge fields in the template editor sidebar

Server Configuration

The AzuraCast server is automatically configured during the Setup Wizard. You can review and modify it at Configuration → System Settings → Servers.

WHMCS Servers page showing AzuraCast server and server group configuration
Server configuration — AzuraCast server and server group

Key settings include:

  • Server Name — Display name in admin panel
  • IP Address — AzuraCast server IP for API connections
  • Server Group — Used to assign products to this server
  • Fill Type — “Add to the least full server” for multi-server setups
💡 API Key Storage

The AzuraCast API key is stored in the server’s Access Hash field (encrypted in the WHMCS database). The module automatically decrypts it when making API calls.

Client Area

The module provides a premium client area experience with an embedded radio player, SSO deep-linking to AzuraCast features, and all station management tools in one place. The annotated screenshots below use numbered markers to identify each UI element.

Hero Player & Controls (1–23)

Client area hero banner with numbered annotations 1-23 showing all UI elements
Client area hero banner — annotated UI elements (1–23)
#ElementDescription
1Actions SidebarLeft sidebar with action links: Start Station, Stop Station, Reset Password, Request Cancellation
2Breadcrumb NavigationPortal Home → Client Area → My Products & Services → Product Details
3Play ButtonGlass-effect play button — starts the in-browser audio player
4Stop ButtonGlass-effect stop button — stops audio playback
5Radio Player SSOSSO deep-link button to the AzuraCast public radio player page
6Dashboard SSOSSO deep-link button to the AzuraCast station dashboard
7Station Manager SSOSSO deep-link button to the AzuraCast station manager
8Status BadgeONLINE / IDLE / OFFLINE real-time station status
9Station Name & TaglineStation title and subtitle/genre description
10Station MetadataStreaming engine (Icecast/SHOUTcast) and Station ID
11Album ArtCover artwork of the currently playing track (fetched from AzuraCast)
12Elapsed TimeCurrent playback position timestamp
13Progress BarAudio playback progress indicator
14Total DurationTotal track duration timestamp
15Now Playing InfoSong title and artist of the currently playing track
16Artist NameArtist name displayed below the track info
17Listener CountReal-time number of current listeners
18Request a TrackLink to request a song (if song requests are enabled)
19Recent Tracks ListScrollable list of the last 5 played tracks
20Dashboard Credentials Header“AzuraCast Dashboard Credentials” card for manual AzuraCast login
21Email FieldAzuraCast login email address (with copy button)
22Password FieldAzuraCast login password (masked, with show/copy buttons)
23Reset Password ButtonGenerates a new random password and updates AzuraCast
Close-up of the radio player hero banner with play controls and now playing information
Radio player close-up — now playing, controls, and SSO buttons

Station Features & Stream Connection (24–44)

Client area station features grid with numbered annotations 24-44
Station features, stream connection, and station status — annotated (24–44)

Station Features Grid (24–34)

Each tile is an SSO deep-link — customers click and are automatically logged in to the corresponding AzuraCast page:

#Feature TileDescription
24Section Header“Station Features” section title
25Music FilesUpload & manage audio files on AzuraCast
26PlaylistsCreate & schedule playlists
27PodcastsManage podcast episodes
28Web DJBroadcast live directly from the browser
29DJ AccountsManage DJ/streamer login credentials
30Web HooksConfigure Discord, Telegram, and other webhook integrations
31Mount PointsManage stream mount points and formats
32Station SettingsConfigure station options and preferences
33BrandingCustomize station look & feel
34Embed WidgetsGenerate embeddable players and widgets for external websites

Stream Connection (35–39)

#ElementDescription
35Section Header“Stream Connection” section with stream details
36Stream URLDirect stream URL with one-click copy button
37Primary Mount PointMain mount point with bitrate badge (e.g., /radio.mp3 128kbps)
38Stream NameNamed stream alias with bitrate indicator
39Player LinksDownload buttons for M3U and PLS playlist files

Station Status (40–44)

#ElementDescription
40Section Header“Station Status” overview panel
41Public PageEnabled / Disabled — Public station page visibility
42Song RequestsEnabled / Disabled — Listener song request feature
43Live DJsEnabled / Disabled — Live DJ/streamer connections
44Stream TypeIcecast or SHOUTcast — Frontend streaming engine

Broadcast Credentials (45–51)

Connection details for broadcasting software (BUTT, Mixxx, OBS, SAM Broadcaster, etc.), with separate Icecast and Shoutcast formats:

Broadcast credentials section with numbered annotations 45-51
Broadcast credentials — annotated (45–51)
#ElementDescription
45Section HeaderCollapsible “Broadcast Credentials” section with toggle
46Icecast ServerAzuraCast hostname for Icecast clients (with Direct IP below)
47Icecast PortStation port for Icecast connections
48Icecast Mount NameMount point path (default: /)
49Shoutcast ServerAzuraCast hostname for Shoutcast clients (with Direct IP below)
50Shoutcast PortStation port for Shoutcast connections (note: some clients need port +1)
51Source PasswordDirect source connection password (masked, with show/copy buttons). DJ format: dj_username:dj_password
ℹ️ Full Page Overview

For a complete view of all client area sections, see the screenshot below showing the entire page layout.

Full page overview of the AzuraCast client area showing all sections from hero to broadcast credentials
Complete client area page — full overview from hero to broadcast credentials

Sync Tool

The Sync Tool compares all stations on your AzuraCast server with the corresponding WHMCS services. It detects and helps you resolve inconsistencies.

Dashboard

Access the Sync Tool from the AzuraCast Manager Dashboard or via Addons → AzuraCast Manager → Open Sync Tool. The dashboard shows:

  • Total Stations — All stations on the AzuraCast server
  • Linked — Stations properly connected to an active WHMCS service
  • Unlinked — Stations on AzuraCast without a matching WHMCS service
  • Missing — WHMCS services referencing stations that no longer exist
  • Status Mismatch — Suspend/unsuspend status differs between WHMCS and AzuraCast
  • Unused Roles — Leftover user roles no longer assigned to any user
AzuraCast Sync Tool dashboard showing station statistics and unlinked stations list
Sync Tool dashboard — station sync overview

For each unlinked station, you can:

  • Link — Associate it with an existing WHMCS service
  • Restart — Restart the station’s services
  • Delete — Remove the station from AzuraCast

Maintenance Actions

The Maintenance dropdown provides advanced cleanup and repair functions:

Sync Tool maintenance dropdown showing Fix Domain Fields, Clear Old Credentials, Cleanup Unused Roles, and Sync Suspend Status options
Maintenance dropdown with repair and cleanup actions
ActionDescription
Fix Domain FieldsCopies the station ID into the WHMCS domain field for each service. Needed for correct internal linking.
Clear Old CredentialsRemoves leftover login data from a previous module version. Safe to run — current module uses custom fields.
Cleanup Unused RolesDeletes AzuraCast user roles not assigned to any user. Typically leftover after station deletions.
Sync Suspend StatusEnsures each station’s enabled/disabled state matches the WHMCS service status.

Frequently Asked Questions

How does auto-provisioning work?

When a customer places an order and pays (or based on your auto-setup setting), the module automatically: creates a new AzuraCast station with the configured settings, creates a user account with the customer’s email, assigns a custom role with appropriate permissions, sets up mount points and storage quotas, generates source/admin passwords, and sends the welcome email with all credentials.

Which AzuraCast versions are supported?

The module is tested with AzuraCast 0.19+ through 0.23.x. It uses the AzuraCast REST API which maintains backward compatibility. Both Docker and Ansible installations are supported.

Can I use the module with multiple AzuraCast servers?

Yes. Add multiple servers during the Setup Wizard (Step 1) or later via the Dashboard. Create a server group and WHMCS will distribute new stations across servers using the “least full” algorithm.

What happens when a service is suspended?

The module disables the station on AzuraCast (stops streaming) and locks the user account. When unsuspended, everything is restored automatically.

What happens when a service is terminated?

The module deletes the station, user account, and role from AzuraCast, and clears all custom field data in WHMCS. If the station was already manually deleted on AzuraCast, the module handles the 404 gracefully and still cleans up WHMCS data.

Can I customize the client area template?

Yes. The client area is rendered from templates/client/overview.tpl inside the server module directory. You can modify the Smarty template to match your brand, but be careful not to break the JavaScript functionality.

How does SSO (Single Sign-On) work?

When a customer clicks an SSO button (e.g., “Music Files” or “Dashboard”), the module generates an AzuraCast login token, uses an iframe bridge to set the session cookie, and then redirects the customer to the target page. This works seamlessly because the AzuraCast panel and the login token share the same domain.

How do I update the module?

Download the latest version, upload and overwrite the files (same process as initial installation), and clear the Smarty template cache. No database changes are needed — the module handles migrations automatically.

The connection test fails. What should I check?

  • Verify the hostname/IP is correct and reachable from your WHMCS server
  • Ensure the API key has full administrator permissions
  • Check that HTTPS is enabled if using a secure connection
  • If behind Cloudflare, provide the direct server IP in the optional field
  • Check firewall rules allow outbound HTTPS from WHMCS to AzuraCast

How do I get support?

Contact us via the support ticket system in your client area. Include your license key and any error messages for faster resolution.