Skip to content
Last updated Give Feedback

Plans

The Plans panel (/plans in super-admin) defines what ecommus sells. Per ADR-030, the catalog is structured in 4 categories:

  1. Website packages — primary sale, tier matrix per niche
  2. Plugin add-ons — à-la-carte, post-vânzare
  3. Theme add-ons — post-vânzare, niche-restricted
  4. Support plans — only recurring revenue line

The model is one-time per-domain perpetual with free perpetual updates within the same major version. Operator can edit prices in the DB without redeploy. The catalog is structured so the same SKUs work in SaaS mode (Stripe Subscription) when SaaS launches post-customer-#50.

Tier matrix per niche × 4 niches (ecommerce / services / real-estate / travel). Each niche has 4 tiers — Starter / Pro / Growth / Enterprise — with the same axis structure.

AxisStarterProGrowthEnterprise
Domains113unlimited
Niche packages112up to 4
Default themedemo standardchoice from 3 demosall demos+ 8 h/year custom dev
Plugins bundledcore (~5)core + popular (~10)+ advanced (~18)all available
Mobile storefront✓ + branded build
Mobile admin✓ + POS
Marketplace publisher
Multi-store within install✓ (2)unlimited
B2B featuresbasicfull
White-labeloptional
Multi-warehouse
Free support30 d90 d6 mo12 mo
Updates perpetually
Custom dev hours8 h/year
Dedicated SM + SLA
Early access major versions

Starter must be complete for a small RO business — ANAF e-Factura, Stripe/Netopia, Sameday, VAT 21%, EAA accessibility are all included regardless of tier (legal mandates can’t be paywalled).

NOT in matrix (intentional):

  • Number of products / orders / customers — no quantity caps; customer’s hosting handles their growth.
  • AI features — plugin-separate (BYOK Anthropic / OpenAI / DeepL); not bundled in tier.
  • Storage / bandwidth — customer’s hosting, not relevant to us.

Pricing is operator-discretion and editable from /plans UI. Base SKU per niche × tier yields 16 starter SKUs. Add-on bundles (POD, marketplace publisher, etc.) are separate (Category 2 below).

Multi-domain stacking discount applies on the website-package price when a customer buys a 2nd / 3rd / 4th+ separate site (-30% / -40% / -50%). Same-brand-translation TLD pairs (acme.ro + acme.de redirect-translated) count as one license.

2. Plugin add-ons (post-sale, à-la-carte)

Section titled “2. Plugin add-ons (post-sale, à-la-carte)”

Plugins are only available to customers who already hold a website-package license for the relevant niche. Plugins are NOT sold standalone — the framework is closed-source, and standalone plugin sales would imply OSS.

Per-domain pricing, one-time perpetual, free updates within same major. Examples (full catalog in super-admin/plugins):

  • Marketplace integrations: marketplace-emag, marketplace-amazon, marketplace-channelengine
  • Payment drivers: payment-paypal, payment-euplatesc, payment-revolut-business
  • Accounting sync: accounting-smartbill, accounting-quickbooks, accounting-xero
  • POD: pod-printful, pod-printify
  • Subscriptions: niche-ecommerce-subscriptions
  • SEO: seo-autopilot suite
  • AI: ai-catalog-pilot, ai-photographer, ai-customer-service (BYOK)

Some plugins are bundled in higher tiers (e.g. Growth+ ships marketplace-emag by default for ecommerce niche). The bundle relationships are configured in the /permissions panel.

3. Theme add-ons (post-sale, niche-restricted)

Section titled “3. Theme add-ons (post-sale, niche-restricted)”

When an existing customer wants to swap to a different theme from our catalog (still within their niche), this is a paid event — a separate license attached to the same domain that authorises the new theme.

Themes are NOT sold standalone, and they are NOT a way to acquire the framework cheaply. The customer always has a website-package license first. Themes are demos that sit on top of the framework; the real value is in the framework + plugins.

Customisation requested by the customer (color, logo, copy, layout overlay, custom sections) is a separate theme customization service — see License for the cosmetic / overlay / per-customer-plugin scope ladder. NO FORK — the canonical theme stays canonical so updates flow.

4. Support plans (only recurring revenue line)

Section titled “4. Support plans (only recurring revenue line)”

Every website-package purchase ships with 30 days free support (basic email). After that:

TierPeriodsIncludes
Free 30dincluded with purchasebasic email support
Basic3 / 6 / 9 / 12 monthsemail + ticket, 24-72 h response
Priority3 / 6 / 9 / 12 months+ chat, 4-8 h SLA, dedicated channel
Enterprise12 months+ dedicated success manager, 1 h SLA, monthly review

Pricing per tier is operator-discretion (/plans UI). Renewal triggers a Stripe charge + license-server re-issues the JWT with extended support_until — pushed to the install at the next heartbeat (no restart).

Support plans are the only thing that times out periodically. Everything else (license, updates, plugin downloads) is perpetual.

What customer loses when support window ends

Section titled “What customer loses when support window ends”
  • Helpdesk SLA → best-effort only
  • Cloud-tied features (AI orchestration, ANAF SPV proxy, hosted email) → cease
  • Premium plugin downloads on npm.ecommus.cloud → continue (perpetual ownership)
  • Framework runtime → unchanged

The framework does not phone home and disable, ever.

{
"id": "<uuid>",
"slug": "ecommerce-pro",
"name": "Ecommerce — Pro",
"category": "website-package", // website-package | plugin | theme | support
"tier": "pro", // for website-package category
"kind": "perpetual", // perpetual | trial | saas-monthly
"niche_packages": ["ecommerce"],
"features": ["multi_tenant", "audit_log"],
"default_licensed_plugins": [
"niche-ecommerce",
"efactura-ro",
"shipping-sameday"
],
"default_licensed_themes": ["theme-fashion"],
"free_support_days": 90,
"max_domains": 1,
"white_label": false,
"marketplace_publisher": false,
"price_eur": 999, // operator-discretion
"stripe_price_id": "price_...",
"active": true
}

When operator issues a license against this plan, the JWT inherits tier + kind + niche_packages + features + default_licensed_plugins + default_licensed_themes. Per-license overrides are possible for one-off Enterprise deals (audit-logged).

Editing a plan does not automatically re-license existing customers. Their JWT keeps the snapshot at issue time. To roll the change out:

  • Click Re-issue licenses on this plan → server re-renders + re-signs every license tied to the plan with the new defaults; pushes via heartbeat
  • Customer install picks it up at the next heartbeat (no restart)

Stripe price changes go through Stripe (you can’t edit a Stripe price object — create new + archive old). The panel walks the operator through this dual mutation.

What this enables for SaaS launch (post-customer-#50)

Section titled “What this enables for SaaS launch (post-customer-#50)”

The kind discriminator is the seam. When SaaS launches:

  • Same SKUs work
  • kind: "saas-monthly" flips Stripe billing from one-time to recurring
  • expires_at becomes monthly rolling (re-set on invoice.paid webhook)
  • Everything else (features, niches, plugins, themes, domain binding) identical

No catalog rewrite required. Just billing-side wiring on the license-server.