

Most SaaS teams create a new deal every time a customer renews.
It feels logical. A renewal is a new transaction, so it gets a new deal. But that logic breaks your pipeline, inflates your forecast, and makes it impossible to see what your revenue actually looks like.
We build HubSpot for SaaS startups every week. The single deal per customer model is one of the first things we fix when we inherit a portal built another way. It's also one of the things most HubSpot agencies get wrong because creating new deals for renewals is easier to scope and explain. The problem: it just doesn't work.
When every renewal gets a new deal, your pipeline fills with records that aren't really new revenue.
Your VP of Sales looks at the pipeline and sees $800k. Half of it is renewals from existing customers. The other half is new business. But the pipeline treats them the same. You can't tell which is which without filtering, exporting, and rebuilding the numbers manually.
Investors ask for net revenue retention. You don't have it. They ask for expansion MRR. You don't have that either. You have a pipeline full of deals that mixes new customers with renewing ones and calls it all "open revenue."
Allium, a Series A blockchain SaaS company backed by Kleiner Perkins, needed exactly this fixed. Their renewal and expansion workflows were creating new deals every cycle. We rebuilt the model around a single deal per customer with revenue tracked as properties on the existing record. Their VP of Sales described it as a scalable system built specifically for their SaaS business, taking renewals and extensions into account from the start.
One deal per customer. That deal lives in your pipeline from the first close through every renewal and expansion.
Changes to that customer's revenue get tracked as properties on the existing deal, not as new pipeline entries. Here's the revenue taxonomy we build on every portal:
HubSpot is the system of record. Google Sheets is the calculation layer, synced daily. You don't need a BI tool to get investor-ready revenue reporting. You need clean properties and a consistent model.
This model is also what makes GRR and NRR calculable without a spreadsheet fight every board meeting.
Gross Revenue Retention comes from your Churned MRR and Contraction MRR properties. Net Revenue Retention adds Expansion MRR on top. When those values live as properties on existing deals, the calculation is clean and repeatable. When renewals are scattered across new deals, you're doing archaeology every time an investor asks for retention numbers.
Paces, a YC-backed Series A energy SaaS company, needed exactly this. We built their revenue tracking model in HubSpot with ARR, MRR, and retention metrics that came directly from deal properties. Their reporting went from spreadsheets to investor-ready dashboards in weeks. That's what a clean underlying model makes possible.
The single deal model has three exceptions. These are the only situations where creating a new deal makes sense.
Everything else, standard renewals, small seat additions, discounts, stays on the existing deal. Update the properties. Don't create a new record.
If you're unsure whether something qualifies, ask: does this change the fundamental nature of the customer relationship or just the size of it? Size changes update the deal. Relationship changes create a new one.
When a customer cancels, the deal moves to Closed Lost.
But Closed Lost without context is useless. You need to know why. Build a required Churn Reason property on the deal record with controlled dropdown values:
Make it required on the Closed Lost transition. If a rep can skip it, they will. That field is the only way to run a real churn analysis six months from now.
There's one scenario where a new deal makes sense on a renewal cycle: when you want the renewal in its own pipeline for tracking and forecasting purposes.
Build a workflow that auto-creates a renewal deal 90 days before the contract end date on the original deal. Associate it to the same company and contact. Set the deal owner based on your ownership model. This keeps the original deal clean as a record of the customer relationship while giving your CS team a working record to track the renewal motion.
Early stage, your AE owns everything. There aren't enough deals to split the motion and adding complexity before you need it creates confusion.
Once you're scaling, split it. CS owns renewals. AEs own expansions.
The logic is simple. Renewals are about relationship and retention. Expansions are about new revenue. Those are different skills, different conversations, and different incentives. An AE closing net new deals shouldn't also be managing a renewal call with a customer deciding whether to stay.
Build that ownership split into your deal properties before you hire your third CS rep. Add two fields to every deal: Deal Creator and Deal Owner. Deal Creator captures who sourced it. Deal Owner tracks who's responsible for it now. When ownership transitions from AE to CS on renewal, that's a property update, not a new deal.
Retrofitting ownership logic onto a team of ten is painful. Build it at five.
Open your HubSpot pipeline. Look at your last ten closed customers.
Count how many have more than one deal. If the answer is more than two or three, you're creating new deals for renewals and your revenue data is fragmented.
Pick one customer with multiple deals. Merge the renewal deals back into the original. Move the revenue values to properties on that deal. Then build the workflow to auto-create renewal deals 90 days out going forward.
For a full walkthrough of how to structure HubSpot renewal tracking for a SaaS business, book a call below.
Book a free consultation. We'll review your pipeline model in 15 minutes. Book here
No, with three exceptions. Standard renewals, seat additions, and discounts should be tracked as property updates on the existing deal, not as new pipeline entries. Create a new deal only when there's an ownership change, a genuinely separate subscription, or a materially different product line. Everything else stays on the original deal.
Build an Expansion MRR property on the deal record and update it when a customer upgrades or adds seats. For major changes like a new product tier or a new contract, create a new deal with Deal Type set to Expansion. Track New MRR, Expansion MRR, Contraction MRR, and Churned MRR as separate properties. Use Google Sheets as a daily sync layer for ARR calculations. HubSpot is the system of record, Sheets is the calculation engine.
Move the deal to Closed Lost and require a Churn Reason property before the transition completes. Build a dropdown with controlled values: Price, Product gaps, Competitor, Company shutdown, No budget, Poor fit from the start, Unknown. Make the field required on the Closed Lost stage. Without it, you'll never be able to run a meaningful churn analysis.