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. 0 hides 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.

Related