WHMCS ships seven different order-form templates, and most operators don't realize they can mix and match across product groups. The right form for your VPS pricing isn't the right form for your shared hosting plans, and using one template for everything is leaving conversion on the table.
This is the field guide to picking — and customizing — the right order form per product type.
The 7 order forms WHMCS ships
| Template | Best for | Notes |
|---|---|---|
| standard_cart | Default. Single-product carts with optional add-ons. | Reliable, well-tested, plain. |
| premium_comparison | Tiered plans (Starter/Pro/Enterprise). | Side-by-side feature comparison drives upsell. |
| modern | One-product flows (e.g., a single managed-hosting plan). | Card-style, fewer fields visible per step. |
| boxes | Small catalogs (3-6 products) at a glance. | Grid layout. Less polished than premium_comparison. |
| cart (legacy) | Avoid. | Older WHMCS versions only. Don't use on current. |
| verticalsteps | Domain-first flows. | Walks customer step by step: domain → plan → payment. |
| web20cart | Deprecated, but you may see it on old installs. | Replace with standard_cart on legacy installs. |
How templates attach to product groups
WHMCS lets you assign a different order-form template per product group:
- Setup → Products/Services → Product Groups → edit a group → Order Form Template.
- Pick the template you want for this group.
- Save. Customers buying from this group see your chosen template.
This means you can use premium_comparison for hosting plans (side-by-side upsell) and standard_cart for SSL certificates (single product, just buy it). One install, multiple forms, no conflict.
Which form to pick by product type
| You sell | Use this form | Why |
|---|---|---|
| Shared hosting (tiered plans) | premium_comparison | Side-by-side comparison drives upsell to mid/high tier. |
| Single managed plan | modern | One-product flow, simpler UI. |
| VPS / cloud servers | premium_comparison | Customers compare specs across tiers. |
| Domain reseller | verticalsteps | Domain-first flow matches the customer's mental model. |
| SSL certificates | standard_cart | Direct purchase, no comparison needed. |
| Software licenses | standard_cart or boxes | Depends on count of license types. |
| Addons / extras | standard_cart | Bolt-on purchases for existing customers. |
Step-by-step — customizing one
Order form templates live in /templates/orderforms/. Each is a folder with its own templates and CSS. Don't edit them directly — clone first.
cd /path/to/whmcs/templates/orderforms
cp -r premium_comparison premium_comparison_brand
Then edit premium_comparison_brand/ to taste. Assign the cloned template to your product group.
The files that matter:
products.tpl— the plan-listing / comparison view.configureproduct.tpl— the configure step (billing cycle, add-ons).viewcart.tpl— the cart review before payment.checkout.tpl— payment + customer details.style.css— the form's CSS.
Step 5 — Conversion optimization (where to actually move the needle)
The default forms are functional. The wins come from these specific changes:
1. Reduce required fields at checkout
Every required field is a drop-off point. Audit Setup → General Settings → Order → Required Client Profile Fields. Are you really requiring company name and phone number? For low-friction sales: name, email, country are usually enough. Collect the rest later.
2. Show trust signals near the pay button
Logos of payment gateways accepted. SSL padlock icon. "Money-back guarantee" badge. These directly affect conversion rate, especially for first-time buyers.
3. Show pricing summary persistently
On longer flows, show a sticky cart summary so customers don't lose track of what they're buying. premium_comparison does this; verticalsteps doesn't by default — add a sticky element if you customize.
4. Pre-fill country based on IP
Use a free GeoIP service (or Cloudflare's CF-IPCountry header if you're behind Cloudflare). Pre-fill the country dropdown. Customers feel "this site knows me."
5. Skip the configure step for single-tier products
If a product has only one billing cycle and no configurable options, WHMCS still shows a configure step by default. Patch your template to skip it when nothing's configurable — straight to cart.
The domain step — what to do
By default, hosting orders prompt for a domain. Options:
- Require domain: customer must select / register / transfer / "I will provide later." Highest friction.
- Optional: customer can skip. Better conversion; some customers buy hosting without picking a domain.
- Hidden: WHMCS auto-generates a placeholder. Only use for products that don't need a domain (SaaS licenses, etc.).
Configure per product: Setup → Products/Services → Products → edit → Pricing tab → Require Domain.
How to verify your order form works
- Place a real test order from each product group.
- Test on phone, tablet, desktop.
- Test signed in (existing customer) and signed out (new customer).
- Try every payment gateway.
- Try with a discount code, a free domain, an upsell add-on.
- Measure conversion before/after changes (UTM tracking through GA4 — see my GA4 guide).
Common pitfalls
"Custom order form broke after WHMCS upgrade." You modified a built-in form directly. Always clone first.
"Configurable options don't show on the form." The options group isn't assigned to the product. Configurable Options → edit group → check the product.
"Payment gateways missing from checkout." Either the gateway is inactive, or the gateway-specific currency doesn't match the order currency. Check both.
"Customer email validation rejects valid addresses." WHMCS validates email format strictly. Modern email addresses (e.g., addresses with subdomains, plus-signs) sometimes fail. Verify your regex in /includes/clientfunctions.php or, better, disable strict validation if it's causing friction.
My take — pick by use case, not by aesthetic
I see operators pick the prettiest-looking order form and live with bad conversion. The right form is the one that matches how your customers actually decide:
- Comparing tiers → premium_comparison.
- Just buying a thing → standard_cart or modern.
- Domain first → verticalsteps.
Don't try to be clever. Match the form to the decision.
Going further
- WHMCS order form templates docs
- My theme structure guide — order forms live in their own template system, see that guide for the directory layout.
I A/B test and customize WHMCS order forms for hosting businesses — picking the right template, conversion-rate optimization, payment-gateway selector design. Tell me your conversion target and I'll send a quote in 24 hours.