ImpulseObjects
Configuring plans & configurable options
Define storage quotas, bucket and key limits, replication limits, and pricing. Sync to WHMCS as products with configurable options.
1. What a plan is
Section titled “1. What a plan is”A plan is the unit you sell. Each plan is a row in mod_impulseobjects_plans and pairs to a WHMCS product when synced. Plans carry the customer-visible name, the storage / bandwidth / bucket / access-key / public-bucket / CORS / replication limits, feature flags, optional server restrictions, optional overage billing, and pricing.
The addon ships with three example plans flagged (Example — configure before selling). They’re skipped by the sync to WHMCS until you rename them — the “(Example” marker in the name is what holds them back, so you can’t sell a placeholder by accident.
2. Edit a plan
Section titled “2. Edit a plan”Go to the Plans & Products tab. Click Edit on any example, or add a new plan.
| Field | What it does |
|---|---|
| Display Name & Slug | Customer-visible name and a stable internal identifier. |
| Storage Quota (MB) | The included storage. Enforced as a bucket quota in RustFS; uploads beyond it are rejected. With overage billing on, the quota is raised to the plan’s sanity ceiling instead (see section 5). |
| Bandwidth (GB/mo) | Monthly egress allowance. Usage is measured hourly from each server’s Nginx statistics and recorded on the WHMCS service; it is not enforced as a cap. |
| Max Buckets / Max Access Keys | Per-customer counts, enforced in the customer dashboard. |
| Max Public Buckets / Max CORS Origins | Limits for public (anonymous read) buckets and CORS origins. Licensed only. |
| Max Replication Jobs | Cross-region bucket replication. 0 = disabled. Licensed only, and customers see it only while Settings → Customer Features → Offer multi-region features to customers is on. |
| Object Versioning / Public Bucket Access / CDN / Custom Domains | Feature flags. Public access and CDN / custom domains need a license; custom domains also need Cloudflare for SaaS configured under Settings → CDN & Custom Domains. |
| Server availability | Under Advanced: Available on every active server (the default) or Restrict to specific servers. Handy if you want a plan to land only on particular hardware. |
| Monthly / Annual Price | What you charge customers. Leave the annual price at 0.00 to offer monthly only. |
Click Save Plan. Saving an edited plan writes its new storage and bandwidth limits onto the existing active and suspended services on that plan.
3. Sync to WHMCS
Section titled “3. Sync to WHMCS”Once your plans are configured, click Sync All on the Plans & Products tab (or sync a single plan). This:
- Creates a WHMCS product per plan in an Object Storage product group (created if it doesn’t exist), and assigns it to a server group with “Object” in its name if one exists.
- Wires the product to ImpulseObjects’s server module so orders provision through the addon.
- Builds a Storage Region configurable option with one choice per region that has an eligible server. Choices are added at $0 — set per-region prices in WHMCS if you want them.
- Sets monthly and annual pricing in every WHMCS currency, plus upgrade paths from each plan to the larger ones.
Re-running sync is idempotent — existing products are updated in place rather than duplicated, and a product name or description you edited in WHMCS is left alone. Prices are always re-synced from the plan.
4. Pinned vs auto server routing
Section titled “4. Pinned vs auto server routing”For each plan, you choose which servers customer orders can land on:
- Restricted — limit the plan to a specific set of servers under Server availability. Use this to separate tiers onto different hardware (e.g. Starter on a budget VPS, Pro on a larger one).
- Auto (default) — the plan is available on every active server. Customers pick a region at order time, and the module picks a server in that region: default-flagged servers first, then the one with the fewest tenants, skipping servers at their Max Tenants. If no server in the chosen region can take the order, it stays Pending with the reason in the module log — it is never placed in another region.
When you use more than one VPS provider, Settings → Providers & Regions → Region Routing Mode also lets you prefer one provider per region; when that provider has no eligible server, routing falls back to the rule above.
5. Overage billing (optional)
Section titled “5. Overage billing (optional)”For storage overages, set an Overage Rate ($/GB/month) on the plan under Storage Overage Billing. Usage is measured hourly; in the 2 days before each renewal date, the addon averages the service’s storage over the billing cycle and adds the overage to the renewal invoice. Customers get warning emails at 80%, 90% and 100% of their included storage.
Disabled by default — leave the rate blank and the plan stays hard-capped at its storage quota. When overage billing is on, the bucket quota is raised to the plan’s Sanity Ceiling (default 5× the plan’s storage) so one customer can’t fill a whole server. Overage billing covers storage only; bandwidth is not billed by the module.