Guides / SaaS Pricing Iteration: Managing Legacy Plans, Grandfathering, and Migrations

SaaS Pricing Iteration: Managing Legacy Plans, Grandfathering, and Migrations

A woman and a man stand in an office, looking at sticky notes on a glass wall.

Changing SaaS pricing often breaks legacy contracts and reporting. Instead of “cloning” products (creating Gold_Plan_v2), operations teams should use effective dating to create a “Time Machine” for their catalog. Instead of ‘cloning’ products (creating Gold_Plan_v2), operations teams should rely on effective‑dated subscription charge segments and, where enabled, Dynamic Pricing. This lets a single product and rate plan drive different prices over time while preserving history on the subscription, enabling seamless grandfathering and automated price uplifts without data fragmentation.

Key Takeaways:

  • Stop Cloning SKUs: Duplicating products for every price change breaks historical analytics and splits data.

  • Use Effective Dating: Assign “Start” and “End” dates to charges to version pricing dynamically.

  • Grandfather via Availability: Keep legacy rates active for renewals but hide them from new sales channels to avoid “Zombie SKUs.”

The Solution: Effective Dating (The Time Machine)

The fundamental flaw in most billing systems is that they treat pricing as static. In reality, pricing is temporal. A price is only valid for a specific period of time.

A future-proof product catalog uses effective date management to handle this time dimension. In Zuora, the catalog defines the default dates and pricing, while subscription rate plan charge segments and Dynamic Pricing tables hold the actual history of price changes over time.

The “Time Machine” Workflow: A Migration Example

Let’s say you need to increase the price of your “Pro Monthly” plan from $50 to $60 for all new customers starting January 1st.

The Wrong Way (Cloning):

  • Create Pro_Monthly_v2 at $60.
  • Hide Pro_Monthly_v1 from the sales tool.
  • Result: Reporting is broken; the system thinks you launched a brand new product.

The Right Way (Versioning):

  1. Access the Product rate Plan: Navigate to the existing “Pro Monthly” Rate Plan in your catalog.
  2. Expire the Old Price: Select the existing $50 charge. Set the effective end date to December 31, 2024. This tells the system, “After this date, this price no longer exists for new sales.”
  3. Launch the New Price: On or before Jan 1, 2025, update the Product Rate Plan Charge list price to $60. New subscriptions created after that change pick up the $60 list price. Existing subscriptions retain their prior price via subscription charge segments; no cloning required. If you want renewals to automatically adopt the latest price, set the charge’s price change option to ‘Use Latest Product Catalog Pricing’ (optionally backed by Dynamic Pricing).

 

The Outcome:

  • Sales Reps: On Jan 1st, sales reps quote through Zuora CPQ (or your CPQ), which only surfaces the current price ($60) because the $50 price has expired.”
  • Existing Customers: Their subscriptions are locked to the specific version of the charge they bought. They continue paying $50 until you explicitly migrate them.

 

Data Science: Your dashboard shows “Pro Monthly” revenue growing, with a clean historical trend line.

The "Grandfathering" Strategy: Innovation Without Friction

Grandfathering (which is keeping existing customers at their original rate while moving new customers to market rates)is the most common retention strategy in SaaS. But, operationally, it often leads to “Zombie SKUs” that live forever in the system, cluttering up the quote flow.

Best Practice: Control Availability, Not Just Price

To grandfather successfully, you must separate the product definition from the selling window.

Best-in-class catalogs allow you to control the lifecycle status of a rate plan:

  • “Active for New Sales”: The plan is visible in CPQ and on the website.
  • “Inactive for New Sales/Active for Renewals”: The plan is hidden from CPQ but fully functional for billing and renewals.

 

The “Zombie” Cleanup:

When you version your pricing, you immediately toggle the legacy version to “Inactive for New Sales.” This ensures no sales rep can accidentally quote the old price, but the billing engine can still process the thousands of renewals tied to that legacy price point.

Advanced Move: Automated Price Uplifts

For companies that want to gently migrate legacy customers to market rates, many rely on automated price changes. Instead of manually migrating customers, you configure the catalog to apply a logic rule at renewal:

  • Rule: “At renewal, choose: No Change, increase by a fixed Percentage, or Use Latest Product Catalog Pricing. For CPI‑based uplifts, configure a workflow or integration to supply CPI indices into Zuora (for example as attributes), and optionally use Dynamic Pricing to apply those CPI‑driven adjustments at renewal.”
  • Rule: “Use Latest Product Catalog Pricing.” (This forces the subscription to adopt the current “street price” upon renewal).

 

This capability allows you to execute a migration strategy without manually touching a single customer record. For even greater precision, you can use Dynamic Pricing to compute list price at runtime based on attributes (customer segment, region, channel) and effective dates. This allows you to apply context-specific adjustments automatically during the renewal event without manual intervention.

DevOps for Pricing: The Deployment Manager

In the enterprise, a price change is a deployment. It impacts revenue recognition, tax calculation, and sales compensation. Making “hot fixes” to prices in your production environment violates governance best practices (and often constitutes a SOX compliance failure).

Leading organizations use a deployment manager to treat pricing configuration with the same rigor as software code.

The Governance Workflow:

  1. Sandbox Environment: Product Ops builds the new “2025 Pricing Strategy” in a safe sandbox. They test edge cases: What happens if a user upgrades mid-month? Does the tax calculate correctly in Germany?
  2. Compare & Diff: The Deployment Manager tool compares the Sandbox catalog against the Production catalog, highlighting exactly what has changed (e.g., “Charge A increased by $10”).
  3. Audit Log: Finance reviews the “Diff” and approves the change.
  4. Promotion: The approved changes are pushed to Production.

 

This process provides a governed revert option. If a catalog deployment breaks a checkout flow, you can revert that deployment run to restore the previous configuration in a controlled, auditable way—something spreadsheets and hard‑coded apps simply can’t provide.

Secureframe adopted a codeless product catalog to enable rapid packaging changes. This put “tighter guardrails” on their sales quotes, ensuring that as they iterated pricing, every quote sent to a prospect reflected the most current, compliant product definition.

Technical Insight:

Zuora’s Deployment Manager provides a governed, auditable process for promoting catalog changes (compare, deploy, revert).

Strategic Agility with Zuora

Your ability to iterate on pricing is a direct competitive advantage. If you can test a new packaging model in weeks while your competitor takes months, you win.

Zuora’s Product Catalog is designed to remove the technical debt from the pricing strategy.

  • Internal Case Study (Z-on-Z): Zuora restructured its own product catalog to support ‘automated contract modifications,’ enabling the team to handle non-standard deals and complex hybrid bundling more swiftly.
  • Secureframe: By adopting a codeless catalog, Secureframe put “tighter guardrails” on their sales quotes, ensuring that as they iterated pricing, every quote sent to a prospect reflected the most current, compliant product definition.

 

Don’t let your database dictate your strategy. Decouple your pricing from your code and iterate fearlessly.

See Zuora’s Deployment Manager in action

Frequently Asked Questions (FAQ)

1. What is the difference between SKU cloning and versioning? 

Cloning creates a completely new database record (SKU) for a price change, fracturing data history. Versioning keeps the same SKU but adds a new “price entry” valid only for a specific time range. 

2. How do you grandfather customers without creating new SKUs? 

You use “Effective Dating” to expire the old price for new orders while keeping it active for existing subscriptions. You then control the “Product Availability” settings to ensure sales reps can only see the current market price. 

3. What is a Deployment Manager in SaaS pricing? 

A Deployment Manager is a governance tool that allows you to build and test pricing changes in a Sandbox environment and then “promote” them to Production, ensuring auditability and preventing errors.