MinIO plans overview
Plans are what your customers buy — storage, bandwidth, bucket counts, region restrictions, and pricing. One click syncs them to WHMCS as products with configurable options.
Last updated 20 days ago
MinIO plans overview
A plan is the unit you sell. Each row in mod_impulseminio_plans pairs to a WHMCS product when synced. Plans carry the customer-visible name, quotas, optional server restrictions, and pricing.
The module ships three example plans flagged "(Example — configure before selling)". They are blocked from syncing to WHMCS until you give them real names and prices — you can't accidentally sell at $0.
What's on a plan
Open the Plans tab. Click Edit on any example, or + Add Plan for a fresh one.
- Name & Slug — customer-visible name and a stable internal identifier.
- Storage MB — hard quota. Enforced by MinIO via
setBucketQuota; uploads exceeding the limit return HTTP 403. - Bandwidth GB — monthly egress quota. Tracked from Nginx stats; soft. Exceedance triggers an alert and overage billing if configured.
- Max buckets / Max access keys — per-customer counts, enforced in the customer dashboard.
- Max replication jobs — licensed only.
0hides the replication card from the customer dashboard. - Allow public buckets / custom domains — feature flags. Public-bucket access requires a configured Cloudflare for SaaS integration.
- Plan server restrictions — optional. Pin the plan to a subset of servers. Empty means available on every active server.
- Monthly / Annual price — what you charge customers, in your default WHMCS currency.
Edits to a plan don't retroactively change quotas on existing customers. Use the per-service quota sync on the Customers tab if you want to push new values out.
Pinned vs auto routing
For each plan, you choose how customer orders route to a server:
- Pinned — restrict the plan to a specific server or set via Plan server restrictions. Every customer on this plan lands on one of the pinned servers regardless of region. Use this to separate tiers onto different hardware.
- Auto (default) — the load balancer routes by region: first the default server for the region, then any server in the region with capacity, then a cross-region fallback.
The Plans table shows a [PINNED] or [AUTO] badge in the Infrastructure column for each plan.
Sync to WHMCS
Once your plans are configured, click Sync All Plans to WHMCS on the Plans tab. This:
- Creates a WHMCS product per plan in your default product group (or one you pick).
- Wires the product to ImpulseMinio's server module so orders provision via the addon.
- Generates configurable options for region selection and any per-region price differentials.
- Sets the product description, pricing cycles (monthly + annual), and welcome-email template.
Re-running sync is idempotent. Existing products are updated in place; unchanged plans are skipped.
Overage billing (optional)
Configure overage rates per plan under Overage Billing. The hourly usage cron measures actual usage and raises a WHMCS invoice line item when a customer exceeds quota. Disabled by default — hard-capped plans reject the upload at HTTP 403 instead.
Hiding unwanted variants
The Plans tab supports Hide to keep a plan out of the customer order form without deleting it. Note: some WHMCS themes scan every suboption regardless of the hidden=1 flag, so a hidden plan may still appear in those themes' product pages.
If the hidden=1 flag isn't enough on your theme, the reliable fix is to drop the plan's row out of the configurable option set directly with SQL:
UPDATE tblproductconfigoptionssub SET hidden = 1 WHERE id IN (/* plan suboption ids */); Or remove the suboption from the affected product group entirely. The matching ImpulseCore troubleshooting article covers the theme-scanning gotcha in more detail — see below.
Going live
Before you go live, delete or edit every example plan. A loud yellow banner appears at the top of the Plans tab whenever any example plan still exists.