The Problem
You need to communicate with clients: maintenance windows, promotions, policy changes. WHMCS has no built-in way to display prominent announcements in the client area.
What WHMCS Offers
- Announcements page: Clients have to navigate there. Most never do.
- Email blasts: Lost in spam folders. Low open rates.
- Template editing: Hardcode HTML into templates. Breaks on updates. No admin control.
The Gap
Maintenance announcements: Server maintenance tonight. You email clients. 80% don't see it. Tickets flood in when services go down "without warning."
Promotions: Black Friday sale running. Clients don't know unless they check the announcements page. They won't.
Multi-language: Belgian hosting company? Need Dutch, French, and English announcements. WHMCS announcements don't auto-switch by language.
Workarounds
Edit header template:
- Hardcode banner HTML
- No admin interface
- Breaks on WHMCS updates
- Non-technical staff can't update
Custom hook:
- Write PHP to inject content
- Still need to edit code to change messages
- Developer required for every change
The Solution
Top Banner displays a customizable announcement bar at the top of the client area. Configurable from admin panel. No template editing.
How It Works
- Hook injects banner via
ClientAreaHeadOutput - Appears at top of client area pages
- No template modifications
- Survives WHMCS updates
Display Modes
Static banner: Single message, optional link.
News ticker: Scrolling text, multiple messages (one per line), pause on hover.
Multi-Language
- Detects client's WHMCS language setting
- Shows appropriate translation automatically
- Falls back to default if translation missing
Examples
Maintenance:
Banner: "⚠️ Scheduled maintenance tonight 02:00-04:00 CET"
Type: Static, orange background
Result: Every client sees it on login
Promotion:
Banner: "Black Friday: 50% off all hosting with code BF2025"
Type: Static with link to /store
Result: Promotion visible to all clients
Multi-language:
Dutch: "Gepland onderhoud vannacht 02:00-04:00"
French: "Maintenance prévue cette nuit 02h00-04h00"
English: "Scheduled maintenance tonight 02:00-04:00"
Result: Each client sees their language
Installation
- Purchase from here
- Upload to
/modules/addons/top_banner/ - Activate in Setup → Addon Modules
- Enter license key
Configuration
General Settings
Admin Area → Addons → Top Banner
- Enable Banner: Toggle on/off without losing config
- Banner Type: Static or news ticker
- Content: Message text (supports emojis)
- Link URL: Optional clickable link
Translations
Module detects installed WHMCS languages. Enter translated message for each, leave empty to use default as fallback.
Styling
- Background: Solid color, opacity, gradient support
- Text: Color, size, weight, alignment
- Typography: Google Fonts (Roboto, Open Sans, Poppins, etc.) or custom
- Border: Radius, width, color
- Shadow: Preset styles or custom
Advanced
- Close button: Dismissible with session or permanent persistence
- Page targeting: All pages or specific URLs only
- Animations: Entrance animation, ticker scroll speed, pause on hover
- Icon: Optional FontAwesome icon
Technical Details
- Hook:
ClientAreaHeadOutput - Database:
mod_top_bannertable, utf8mb4 charset - Security: CSRF protection, input sanitization, XSS prevention
File structure:
modules/addons/top_banner/
├── top_banner.php
├── hooks.php
├── license.php
└── lang/
Troubleshooting
Banner not showing:
- Check module enabled
- Check content not empty
- Check page targeting settings
- Clear browser cache
Wrong language:
- Check translation exists for that language
- Empty translation falls back to default
Google Font not loading:
- Check font name matches Google Fonts exactly
- Verify firewall allows fonts.googleapis.com
License errors:
- Verify license key
- Check domain authorized with ArkHost
- Verify firewall allows HTTPS to arkhost.com
Requirements
- WHMCS 8.0+
- PHP 7.4+
- MySQL with utf8mb4 support
Changelog
Version 1.0
- Initial release
- Static banner and news ticker
- Multi-language support
- Full styling options
- Google Fonts integration
- Page targeting
- Dismissible with persistence
- Animation settings
Support
When reporting issues:
- WHMCS version
- PHP version
- Module version
- Theme in use
- Steps to reproduce