zuora-dynamic-pricing-design
Design a Commerce Catalog setup with dynamic pricing — gather requirements, inspect tenant state, and propose the catalog structure before execution
Skill by zuora
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/zuora-zuora-dynamic-pricing-design
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: design
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/zuora-dynamic-pricing-design
What's inside
- Skill name
zuora-dynamic-pricing-design- Description
- Design a Commerce Catalog setup with dynamic pricing — gather requirements, inspect tenant state, and propose the catalog structure before execution
- License
- MIT
- Instructions
- 306 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- allowed-tools: must be a space-separated string
Files (1)
- SKILL.md
SKILL.md (first lines)
You are designing a Commerce Catalog setup with dynamic pricing. Your job is to gather requirements, inspect the tenant's current state, and propose a complete catalog structure — NOT to create anything yet.
## Preflight: Check DynamicPricing is enabled
Before proceeding, call `manage_commerce_charges` with `{"help": true, "operation": "create_charge"}`. If the tool is not available (not listed / not found), stop and tell the user:
> The DynamicPricing feature is not enabled on this tenant. Enable it at **Settings > Billing > Manage Features > Commerce**, then retry.
Note: The Commerce Catalog and Classic Catalog are mutually exclusive.
## Input
The user's request: $ARGUMENTS
Input may be free-text requirements, an approved prior design, **and/or a CSV / spreadsheet path or attachment**. Treat any tabular price file as design input — do not assume a fixed vendor schema (column names, product families, or MSP layouts vary).
## Tool routing
Use `manage_commerce_context_attributes` with `list_attributes` to inspect existing schemas. Use `query_objects` to check existing products, plans, and custom fields. Use `manage_commerce_charges` with `help: true` for charge model guidance. Use `manage_custom_fields` to inspect and create custom field definitions. Use `Read` / `Bash` to inspect CSV/spreadsheet contents when a file path or attachment is provided. Use `mcp__zuora-mcp__ask_zuora` only as a fallback for unresolved product-behavior questions (e.g., "can dynamic pricing coexist with discount charges?") after checking the charge help and references first.
## Workflow
### Step 1: Clarify requirements
Determine the scope:
- **Full catalog setup** — new product + plan + charge with dynamic pricing
- **Add dynamic pricing to existing charge** — new attributes and rate cards on an existing charge
- **Update rate card** — modify prices, add attribute values, add rows
- **CSV / spreadsheet → design** — map an arbitrary price table into the design proposal (see CSV section below)
For new setups, gather:
- Product name, description, category (`base` or `add-on`)
- Plan name, billing currencies
- Charge model: `flat_fee`, `per_unit`, `tiered`, `volume`, `tiered_overage`, `overage`, `discount_percentage`, `discount_fixed_amount`
- Charge type: `recurring`, `one_time`, `usage`
- What business dimensions drive pricing (e.g., region, customer segment, commitment type, quantity band)
- Expected pricing for each dimension combination
- Default pricing (fallback when no rate card matches)
- Billing cycle preferences
- Unit of measure (for per_unit, tiered, volume, usage charges)
- **Effective dating** — does any price need to change on a future date, or does the price history need to be preserved? (e.g., "US price is $10 today, rises to $12 on 2026-04-01"). If yes, capture the effective start date for each price point. See the effective dating section below.
**Product grouping principle:** If the user describes what looks like multiple products that share the same base name but differ by pricing (e.g., "On-Demand" vs "Reserved" vs "Spot"), consolidate them into ONE product with ONE charge that has MULTIPLE rate cards differentiated by attributes. Don't create separate products for pricing variations.
**Attribute mapping level:** Some attributes can validly map to multiple objects (e.g., "Region" could live on Account, RatePlan, or a usage record). When the mapping level is ambiguous, confirm with the user. Choose based on at what granularity the value changes:
- **Account** — fixed per customer, shared across all subscriptions (e.g., customer region, segment)
- **Subscription** — can differ between subscriptions for the same customer (e.g., commitment type: one sub is "reserved", another "on-demand")
- **RatePlan** — set per rate plan instance within a subscription (e.g., service tier chosen for that specific plan)
- **Usage** — varies per event/record (e.g., resource type, cloud region of the API call). Only available on usage charges.
A single charge can combine attributes at different levels (e.g., `CustomerTier` on Account + `ResourceType` on Usage).
**Effective dating (time-varying pricing):**
Dynamic pricing rate cards support effective dating so a price can change on a future date while the prior price is preserved as history. This is driven by a **reserved attribute named `EffectiveDate`** — it is NOT a business dimension, does NOT map to any object field, and does NOT need a custom field created.
How it works in the catalog:
- `EffectiveDate` is a reserved attribute of type `Datetime`. On each rate card row it takes the `>=` operator only (it marks the row's start / "effective from" instant). Any other operator is rejected.
- The value is an ISO-8601 datetime **with a zone offset**, e.g. `2026-04-01T00:00:00Z` or `2026-04-01T00:00:00-08:00`. A bare local date with no offset is rejected.
- If a rate card row omits `EffectiveDate`, it defaults to "effective from now" (`>= current time`).
- For the **same business-attribute combination**, adding a new row with a later `EffectiveDate` does NOT overwrite the old price. The system automatically closes the previous row to a bounded window ending 1 second before the new start, and the new row becomes the open-ended current price. This builds a price timeline:
- Old row: US → $10, effective `[original start, 2026-03-31T23:59:59]`
- New row: US → $12, effective `>= 2026-04-01T00:00:00Z`
- Rows are grouped for timeline purposes by their business attributes only (`EffectiveDate` is excluded from the grouping key). So each unique dimension combination carries its own independent price history.
When to surface effective dating in the design:
- The user wants a scheduled/future price change ("raise EU price to €9 starting next quarter").
- The user wants to backfill or preserve historical prices rather than replace them.
- Two rows in the same request that share the same business attributes AND the same effective date are a duplicate and will be rejected — flag this if the requirements imply it.
If pricing never changes over time, no `EffectiveDate` attribute needs to be shown to the user — the system still records an implicit "effective from now" internally.
### Step 2: Inspect tenant state
#### 2a: Check existing context schemas and attributes
Call `manage_commerce_context_attributes` with `list_attributes` to see what's already configured. Available context schemas include: Business Structure, Catalog, Channel, Custom, Customer Context, Location.
#### 2b: Check mapped fields
Attributes can map to **standard fields** or **custom fields** (`__c` suffix) on multiple Zuora objects. Use `query_objects` with `help: "fields"` and the target `objectType` to discover available fields.
- `account` — standard or custom fields
- `subscription` — standard or custom fields
- `rate_plan` — standard or custom fields
- `usage` — usage record fields
Standard fields already exist — no creation needed. Only custom fields (`__c` suffix) require creation.
**Ambiguous mappings:** When an attribute could reasonably live on multiple objects, ask the user which level to map it at. Explain the granularity:
- **Account** — one value per customer, applies to all subscriptions
- **Subscription** — can vary across subscriptions for the same customer
- **RatePlan** — set per rate plan instance within a subscription
- **Usage** — varies per usage record; only available on usage charges
A single charge can combine attributes at different levels.
If custom fields are needed, use `manage_custom_fields` with `list_custom_fields` to check what exists. Note missing custom fields as prerequisites:
- Object type (Account, Subscription, RatePlan, etc.)
- Field name (must end with `__c`)
- Field type (`string` or `integer`)
- Label and description
#### 2c: Check existing catalog entities
Use `query_objects` to inspect:
- Existing products: `objectType: "Product"`
- Existing rate plans: `objectType: "ProductRatePlan"`
- Existing charges: `objectType: "ProductRatePlanCharge"`
This helps determine whether to create new entities or attach dynamic pricing to existing ones.
### Step 3: Charge model guidance
Call `manage_commerce_charges` with `help: true` to get detailed field requirements, constraints, and examples for the chosen charge model.
Key model decisions:
- **flat_fee** — fixed amount per period (simplest)
- **per_unit** — price × quantity (per seat, per license)From zuora/zuora-coding-agent, MIT.
More from zuora/zuora-coding-agent
- 0.582score
zuora-dynamic-pricing-build
zuora
Execute a Commerce Catalog dynamic pricing setup — create custom fields, attributes, products, plans, charges, and rate cards on the tenant
SkillAFreshness: A★ 2Claude Code +9 - 0.550score
zuora-cpq-js-design
zuora
Design Zuora CPQ Quote Studio or CPQ X JavaScript extensibility using supported hooks, events, quoteState, pageState, metricState, parentQuoteState, ZQFClient…
SkillBFreshness: B★ 2Claude Code +9 - 0.550score
zuora-cpq-review
zuora
Review Zuora CPQ Apex, Visualforce, Quote Studio LWC, hooks, events, quote state usage, ZQFClient usage for package >= 10.58, registration, tests…
SkillBFreshness: B★ 2Claude Code +9 - 0.550score
zuora-cpq-apex-design
zuora
Design legacy Zuora CPQ Apex, Component Library, Visualforce, zQuoteUtil global method, controller extension, or plugin-interface customizations
SkillBFreshness: B★ 2Claude Code +9 - 0.550score
zuora-cpq-validate
zuora
Validate Zuora CPQ Apex, Visualforce, Quote Studio JavaScript, LWC hooks, event names, event payloads, quote state usage, ZQFClient usage for package >=…
SkillBFreshness: B★ 2Claude Code +9 - 0.550score
zuora-cpq-js-build
zuora
Generate Zuora CPQ Quote Studio or CPQ X LWC headless or sidebar components, hooks, supported events, quoteState access, ZQFClient usage for package >= 10.58…
SkillBFreshness: B★ 2Claude Code +9 - 0.550score
zuora-cpq-apex-build
zuora
Generate legacy Zuora CPQ Apex, Visualforce, Component Library, zQuoteUtil, controller extension, or plugin-interface artifacts directly into a Salesforce DX…
SkillBFreshness: B★ 2Claude Code +9 - 0.543score
zuora-html-template-designer
zuora
Design and generate Zuora invoice, credit memo, and debit memo HTML templates from prompts and pdfs.
SkillBFreshness: B★ 2Claude Code +9 - 0.541score
zuora-meter-build
zuora
Build, update, run, and operate Zuora Mediation meters.
SkillBFreshness: B★ 2Claude Code +9 - 0.532score
zuora-context
zuora
This skill should be used when the user mentions "Zuora API", "Zuora SDK", "Zuora Billing", "Zuora Revenue", "Zuora CPQ", "Zuora Payments", "subscription…
SkillBFreshness: B★ 2Claude Code +9 - 0.504score
zuora-cpq-context
zuora
Auto-route Zuora CPQ requests including CPQ X, Quote Studio hooks and events, quoteState, pageState, metricState, zqfClient, headless or sidebar LWC…
SkillCFreshness: C★ 2Claude Code +9 - 0.500score
zuora-cpq-migration-design
zuora
Map, convert, modernize, or migrate legacy Zuora CPQ Visualforce, Apex, Component Library, zQuoteUtil, or plugin-interface customizations to Quote Studio…
SkillCFreshness: C★ 2Claude Code +9
Signals
- Stars
- 2
- Forks
- 3
- Open issues
- 1
- Last commit (this folder)
- Sep 28, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/zuora/zuora-coding-agent
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from zuora
- 0.582score
zuora-dynamic-pricing-build
zuora
Execute a Commerce Catalog dynamic pricing setup — create custom fields, attributes, products, plans, charges, and rate cards on the tenant
SkillAFreshness: A★ 2Claude Code +9 - 0.550score
zuora-cpq-validate
zuora
Validate Zuora CPQ Apex, Visualforce, Quote Studio JavaScript, LWC hooks, event names, event payloads, quote state usage, ZQFClient usage for package >=…
SkillBFreshness: B★ 2Claude Code +9 - 0.550score
zuora-cpq-apex-build
zuora
Generate legacy Zuora CPQ Apex, Visualforce, Component Library, zQuoteUtil, controller extension, or plugin-interface artifacts directly into a Salesforce DX…
SkillBFreshness: B★ 2Claude Code +9 - 0.550score
zuora-cpq-apex-design
zuora
Design legacy Zuora CPQ Apex, Component Library, Visualforce, zQuoteUtil global method, controller extension, or plugin-interface customizations
SkillBFreshness: B★ 2Claude Code +9 - 0.550score
zuora-cpq-review
zuora
Review Zuora CPQ Apex, Visualforce, Quote Studio LWC, hooks, events, quote state usage, ZQFClient usage for package >= 10.58, registration, tests…
SkillBFreshness: B★ 2Claude Code +9 - 0.550score
zuora-cpq-js-build
zuora
Generate Zuora CPQ Quote Studio or CPQ X LWC headless or sidebar components, hooks, supported events, quoteState access, ZQFClient usage for package >= 10.58…
SkillBFreshness: B★ 2Claude Code +9
Cite this page
zuora-dynamic-pricing-design skill. Agent Mart. https://agentmart.dev/skills/zuora-zuora-dynamic-pricing-design (last updated 2026-10-24)