# Create and Manage Product Option Groups

### PUQcloud Panel

##### [Order Now](https://puqcloud.com/puqcloud-panel.php) | [Download](https://github.com/puqcloud/PUQcloud) | [FAQ](https://faq.puqcloud.com/)

#### Why Option Groups?

Option Groups let you package reusable choices (like **Firewall levels**, **CPU tiers**, **RAM sizes**) and attach them to many products at once. You get consistent naming, pricing, and ordering — and one place to update them.

- - - - - -

#### Step-by-step, with pro tips

##### 1) Create the Group

- Go to **Products → Option Groups** → **+ Create**.  
    Screenshot list view.
    
    [![image-1758024679732.png](https://doc.puq.info/uploads/images/gallery/2025-09/scaled-1680-/image-1758024679732.png)](https://doc.puq.info/uploads/images/gallery/2025-09/image-1758024679732.png)
    
    Screenshot “Create Option Group” modal[![image-1758024679765.png](https://doc.puq.info/uploads/images/gallery/2025-09/scaled-1680-/image-1758024679765.png)](https://doc.puq.info/uploads/images/gallery/2025-09/image-1758024679765.png)

**Naming rule of thumb**

- **Key**: machine-friendly &amp; permanent (e.g., `Firewall`, `CPU`, `puqPmLXC-disk`).
- **Name**: client-facing &amp; translatable (e.g., “Firewall Protection”).
- Avoid spaces in **Key**; use hyphens or camelCase for consistency.

- - - - - -

##### 2) Set General Properties

Open the group and configure:

- **Hidden**: set to **No** to display to clients.
- **Convert Price**: **Yes** if pricing should auto-convert across currencies.
- **Multilingual content**: fill **Name**, **Short Description**, **Description**, plus **Notes** for internal admins.  
    Screenshot General tab
    
    [![image-1758024727339.png](https://doc.puq.info/uploads/images/gallery/2025-09/scaled-1680-/image-1758024727339.png)](https://doc.puq.info/uploads/images/gallery/2025-09/image-1758024727339.png)

<p class="callout info">**Pro tip:** Put upgrade logic in the **Description** (“Level 2 adds IP reputation filter”), so clients know what changes between levels.</p>

- - - - - -

##### 3) Add Visuals (optional, but nice)

Add an **Icon** for quick recognition and a **Background** for storefront cards.  
Screenshot Images tab

[![image-1758024839999.png](https://doc.puq.info/uploads/images/gallery/2025-09/scaled-1680-/image-1758024839999.png)](https://doc.puq.info/uploads/images/gallery/2025-09/image-1758024839999.png)

<p class="callout info">**Branding tip:** Use neutral, product-agnostic icons so this group can be reused across offerings.</p>

- - - - - -

##### 4) Add Options (the items clients actually choose)

Go to **Options** → **+ Create** and add each selectable item (e.g., *Firewall level 0/1/2/3*).  
Screenshot Options list with order controls[![image-1758024854462.png](https://doc.puq.info/uploads/images/gallery/2025-09/scaled-1680-/image-1758024854462.png)](https://doc.puq.info/uploads/images/gallery/2025-09/image-1758024854462.png)  
Screenshot “Create Option” modal

[![image-1758024854491.png](https://doc.puq.info/uploads/images/gallery/2025-09/scaled-1680-/image-1758024854491.png)](https://doc.puq.info/uploads/images/gallery/2025-09/image-1758024854491.png)

- Keep **Key** short (e.g., `firewall-level-1`).
- Use the **order arrows** to arrange from lowest → highest tier.
- Toggle **Visible** to quickly remove an option from the storefront without deleting it.

<p class="callout info">**UX tip:** List from “basic → advanced”. Clients upgrade more confidently when progression is obvious.</p>

- - - - - -

##### 5) Edit an Option &amp; Add Prices

Click **Edit** on an option:

- Fill **Key**, optional **Value** (if your module reads a value), **Hidden**, **Notes**.
- Upload **Icon/Background** for this option (optional).
- Localize **Name**, **Short Description**, **Description**.  
    Screenshot Edit Option page
    
    [![image-1758024902746.png](https://doc.puq.info/uploads/images/gallery/2025-09/scaled-1680-/image-1758024902746.png)](https://doc.puq.info/uploads/images/gallery/2025-09/image-1758024902746.png)

Now add a price row:

- Click **+ Add Price** → choose **Currency** &amp; **Period** (One-time, Daily, Monthly, etc.).
- Fill **Setup**, **Base** (recurring), **Idle** (if billed when idle), **Switch up/down** (upgrade/downgrade delta), **Uninstall** (one-time removal fee).  
    Screenshot “Add Price” modal
    
    [![image-1758024914898.png](https://doc.puq.info/uploads/images/gallery/2025-09/scaled-1680-/image-1758024914898.png)](https://doc.puq.info/uploads/images/gallery/2025-09/image-1758024914898.png)

<p class="callout info">**Pricing tip:** Only add price rows you actually need. If an option is informational, leave pricing blank.</p>

- - - - - -

#### Example: “Firewall Protection” (ready-to-copy model)

**Group Key:** `Firewall`  
**Options (ordered):**

1. Firewall level 0 — baseline filtering
2. Firewall level 1 — adds IP reputation lists
3. Firewall level 2 — + geo-blocking
4. Firewall level 3 — + L7 rules &amp; rate limiting

**Minimal price matrix idea**

- Level 0: Base 0.00 (included)
- Level 1: Base 3.00 (Monthly)
- Level 2: Base 6.00 (Monthly)
- Level 3: Base 9.00 (Monthly)  
    (Use **Convert Price = Yes** for multi-currency catalogs.)

- - - - - -

#### Attaching the Group to Products

1. Open a **Product** → **Options** tab → link your **Option Group**.
2. Save and preview the product order page to verify order, visibility, and prices.

<p class="callout info">**Governance tip:** Reuse one **Firewall** group across multiple products; update once, benefit everywhere.</p>

- - - - - -

#### Quality checks (2-minute audit)

- ✅ Group is **Visible** and option order makes sense.
- ✅ Each option has localized **Name** (and descriptions where needed).
- ✅ Price rows exist **only** where you charge.
- ✅ Group is attached to every relevant product.
- ✅ Upgrade paths are clear (level numbers or size increments).

- - - - - -

#### Troubleshooting &amp; gotchas

- **Group doesn’t show on the product:** It isn’t attached on the product’s **Options** tab.
- **Wrong currency on price:** Add a row per currency or enable **Convert Price**.
- **Client can’t see an option:** The option is **Hidden** or priced for a period the product doesn’t use.
- **Reordering doesn’t reflect on storefront:** Refresh cache and verify product still points to the same group.

- - - - - -

#### Maintenance playbook

- Use **Notes** to record internal logic (e.g., “Level 2 requires WAF module v2.1+”).
- When deprecating, switch an option to **Hidden** first, then remove after migrations.
- Version your groups with a suffix only when schema changes (e.g., `Firewall-v2`).