

Front-end domain search form rendered on a marketing page.
Domain Search for WHMCS is a lightweight WordPress plugin that adds a polished domain search form to your site and hands the visitor off to your existing WHMCS billing portal to complete registration.
It is purpose-built for hosting providers, domain resellers, ICANN registrars, and white-label hosting brands who already use WHMCS as their billing platform.
[domain_search_for_whmcs] on any page.Most WHMCS integrations are heavy or hard-coded. This one is the opposite: a single, dependency-free shortcode that drops into any layout. It does one thing and does it cleanly.
Drop-in shortcode — [domain_search_for_whmcs] works in posts, pages, widgets, FSE template parts, page-builder shortcode blocks, or via do_shortcode() in PHP.
Unlimited custom shortcodes — create branded forms each pointing at a different WHMCS install with its own placeholder. Reference them as [domain_search_for_whmcs id="sc_xxxxx"].
Modern admin dashboard — tabbed UI, click-to-copy shortcodes, an “At a Glance” overview (custom shortcode count, active host, HTTPS status), and a built-in Support tab.
Built for speed — one ~1.7 KB CSS file. No JavaScript, no jQuery, no Ajax, no remote assets, no tracking pixels.
Theme-agnostic styling — six stable, well-named CSS classes you can target from any theme or page builder.
Developer extensibility — five filter hooks let plugins and themes change behavior without forking. See Developer Filters below.
Secure by default — nonce verification, capability checks, sanitized I/O, properly escaped output.
Translation-ready — every string wrapped in the domain-search-for-whmcs text domain.
Privacy-friendly — no data collection, no cookies, no remote services. See Privacy below.
You do not need to expose any WHMCS API credentials in WordPress. The plugin never calls WHMCS APIs; it just hands off the visitor.
https://billing.example.com) and a placeholder (“Find your domain”).[domain_search_for_whmcs] to any post or page.That’s it. Visitors who type a domain and submit will land on your WHMCS cart with the search pre-filled.
Default shortcode (uses the Default Settings tab values):
[domain_search_for_whmcs]
Custom shortcode (uses settings from a specific custom shortcode):
[domain_search_for_whmcs id="sc_1234567890_456"]
The id value is generated when you create a custom shortcode and is shown in the table on the Custom Shortcodes tab. Click it to copy.
If a custom id is provided but doesn’t exist (e.g. it was deleted), the plugin falls back to the default settings rather than rendering nothing.
The plugin exposes five filters for runtime customization. All filters fire inside the shortcode renderer, so you can vary output per page, per user, or per locale.
Filter the resolved WHMCS base URL right before the form is rendered.
add_filter('dsfwhmcs_whmcs_url', function($url, $atts) {
// Send logged-in users to the staff portal.
return is_user_logged_in() ? 'https://members.example.com' : $url;
}, 10, 2);
Returns: string — the WHMCS base URL.
Filter the placeholder text dynamically.
add_filter('dsfwhmcs_placeholder', function($placeholder, $atts) {
return get_locale() === 'fr_FR' ? 'Trouvez votre domaine' : $placeholder;
}, 10, 2);
Returns: string — the placeholder text.
Filter the full form action URL (default: {whmcs_url}/cart.php).
add_filter('dsfwhmcs_form_action', function($action, $whmcs_url, $atts) {
return trailingslashit($whmcs_url) . 'domainchecker.php';
}, 10, 3);
Returns: string — the action URL.
Switch the form method. Defaults to GET; return 'POST' for legacy WHMCS configurations that prefer it.
add_filter('dsfwhmcs_form_method', function() {
return 'POST';
});
Returns: string — 'GET' or 'POST'.
Filter the rendered HTML before it’s returned to WordPress. Useful for wrapping the form, injecting analytics attributes, or replacing markup wholesale.
add_filter('dsfwhmcs_shortcode_html', function($html, $atts) {
return '<div class="my-wrapper">' . $html . '</div>';
}, 10, 2);
Returns: string — the final HTML.
cart.php?a=add&domain=register URL (WHMCS 6.0+)Check the WHMCS URL in Default Settings. It should be the base URL of your WHMCS install (e.g. https://billing.example.com) — not https://billing.example.com/cart.php. The plugin appends cart.php itself.
Make sure your theme isn’t blocking plugin stylesheets. The plugin enqueues a file named domain-search-for-whmcs.css on the front-end. If your theme has aggressive CSS overrides, target the .dsfwhmcs-* classes from the Customization tab.
This usually means the URL was reached without the query parameter. Check that no caching plugin is stripping query strings from form submissions.
Update to 3.1.0+. The tab strip is now horizontally scrollable on narrow screens.
That’s a WordPress core behavior. Update to 3.0.0+ where the plugin uses <hr class="wp-header-end"> to push third-party notices below the header.
Domain Search for WHMCS is privacy-respecting by design.
wp_options table. This is removed on plugin uninstall.You should still ensure your WHMCS install has its own privacy policy in place, since the visitor will be entering personal data on that side of the integration.
This plugin does not connect to any external service.
The visitor’s browser submits the search form directly to your own WHMCS installation — a first-party endpoint that you control. Nothing is sent to WordPress.org, third-party domain APIs, analytics services, or the plugin author.
This plugin contains no minified or compiled assets. All PHP, CSS, and JavaScript shipped in the plugin is human-readable source.
The plugin is hosted on WordPress.org. Issues and pull requests can be submitted via the support forum or by emailing shipon@zendforce.com.