Skip to main content

Revenue: Deal data model

Learn all about Deals in Planhat's revenue data structure, introduced in early 2026

Written by Carly Hammond
Updated over 2 weeks ago

Summary

  • Deal is the "parent" revenue model. Deals can have one or more Line Items associated with them as "children" (although Deals can also exist without Line Items)

  • Deals are used to track potential revenue ("Open" Deals), actual revenue ("Closed Won" Deals), and "Closed Lost" Deals

  • This includes both recurring and non-recurring revenue

  • It includes renewals and upsells/downgrades

  • You can move Deals along pipelines (in a Board Page) to track where they are in the sales or renewal etc. process

Who is this article for?

  • All Planhat Users

  • This article is for anyone who would like a little more detail than our revenue overview article

This article refers to new revenue features in Planhat, launching in early 2026, so you may not have access to them yet. Please speak with your Planhat CSM if you would like to discuss the rollout.

Introduction

In early 2026, we are introducing a new series of data models for revenue, further enhancing Planhat's offering as an operational revenue platform, where you can manage your sales/subscriptions both pre-sales (opportunities) and post-sales (licenses and fees). In this specific article, we'll focus on the Deal model.

๐Ÿ“Œ Definition: "data model" or "model"

  • In Planhat, data is organized in various "data models" (also called simply "models") - similar to the "objects" you may be familiar with in other tools

  • For example:

    • The Company model is used for organizations that you deal with (customers or prospects)

    • The End User model is for external people - your customers, prospects or other contacts

    • And there are many other models for other purposes

  • Each model has its own characteristics designed for its use case, such as system (default/standard) fields

  • The individual instances of data inside those models are called records - e.g. Company records could be Dell, Nestlรฉ or Nissan

Let's begin with a quick summary of the Deal model:

๐Ÿ”‘ Deal - key points

  • Deal is the "parent" revenue model. Deals can have one or more Line Items associated with them as "children" (although Deals can also exist without Line Items)

  • Deals are used to track both potential revenue as "Open" Deals and actual revenue as "Closed Won" Deals, as well as "Closed Lost" Deals

  • This includes both recurring and non-recurring revenue

  • It includes renewals and upsells/downgrades

  • You can move Deals along pipelines (in a Board Page) to track where they are in the sales or renewal etc. process

In this article, we'll go through these points in further depth.

If you're an existing Planhat customer and are familiar with our previous revenue data models, here's a summary of the changes.

๐Ÿ“Œ Deal - comparison with legacy revenue models

  • Broadly speaking, Deal replaces the Opportunity model

  • Deal is different in its parent/child relationship with Line Items, however, and also Deal is used for tracking revenue after the point of sale as well as before


What are Deals?

The Deal model is the central model in the new (released early 2026) Planhat revenue data structure.

Deals represent both potential, future revenue (opportunities where you are trying to win business from a prospect); and confirmed, existing revenue (where you have won that opportunity and likely signed a contract with a customer). Deals follow the whole of this revenue lifecycle, following the journey along a pipeline.

This revenue can be recurring revenue (licenses, or "Subscriptions") and/or non-recurring revenue (one-off payments, or "Fees").

The details of these revenue components within a Deal are recorded in Line Items - for example, a Line Item could be a license for a "Advanced Data Platform". Each Deal can have multiple Line Items associated with it: the Deal is the "parent", and each Line Item is a "child". It's also possible to have a Deal without any Line Items.

Each Deal itself must be associated with a Company - Company being the Planhat data model corresponding to organizations that are your prospects or customers - so Company is the ultimate parent. For example, a Deal could be "Renewal Deal for Apple".

Here is an example Deal (showing as a Preview):


How to create a new Deal

You can create a brand new Deal in the same way as records of other models - by clicking "+ Deal" on a Deal-based Page or in Data Explorer with Deal selected.

Initially, the Deal won't have associated Line Items. While you don't have Line Items attached to the Deal, you can manually set ARR/MRR and Total Contract Value if desired.

You can add Line Items to a Deal either individually or in bulk. If adding in bulk, you select Products via checkboxes, select Packages, or select "Closed Won Deals". In other words, it's quick and easy - you don't need to enter the Line Item details from scratch - and you have lots of options.

Once you've added one or more Line Items to the Deal, ARR/MRR and Total Contract Value are automatically calculated based on the Line Items. (ARR and TCV will be identical for 12-month Subscriptions.)

If/when a Deal has been won, change the "Stage" (a system/default field) to "Closed Won". This triggers revenue recognition, affecting ARR allocation to the Company and system reports.

For further details on this process, you can refer to our separate article on opening and closing Deals here.

If you would like to learn instead about how to create a renewal Deal (based on an existing Deal), see here.

๐Ÿ“Œ Important to note

Deleting a Deal also deletes any attached Line Items.

This is because Line Items can't exist in isolation - only as part of a Deal.


Pipelines

You can progress Deals through a sales (or renewal) pipeline in Planhat, e.g. from Discovery, to Demonstration, to Qualification, and so on, until eventually the Deal is marked as "Closed" (either "Closed Won" or "Closed Lost").

"Pipeline" isn't a data model or specific feature in Planhat; rather, it's a process you can easily achieve via existing standard Planhat functionality.

For each pipeline, you create a Board Page for the Deal model, and then "group by" a (standard or custom) list field corresponding to the pipeline stages. Each lane/column is then a list value (e.g. "Evaluation").

You can "drag and drop" Deals (represented as cards) between lanes. You can click on a card to open up the Deal's Preview to show more details.

It's easier to understand with a practical example, so check out the screenshot below. You can read further details of how to set up and use pipelines in our separate article here.

Click the image to view it enlarged


Viewing Deals

As we show in the screenshot above, a common setup would be to organize your Deals in a Board Page.

If you'd prefer to view and interact with your Deals in a table format, then you have the usual Planhat options of creating a Data Table or Grouped List Page ...

Click the image to view it enlarged

...or by using Data Explorer (which you can also apply groupings to).

Click the image to view it enlarged

As usual, you can:

  • Apply a wide variety of filters, so you can choose to only display Deals where you are the Owner, or Deals due in a specific quarter, and so on

  • Click on any Deal to open up its Preview, showing further details

If you want to view the revenue of one specific Company rather than a group of Companies, you can view "Open Deals" and "Won Deals" in the "Revenue" tab of each Company Full-Page Profile.

Click the image to view it enlarged


Revenue Charts

You can optionally include a "Revenue Chart" in Deal Previews. This specially designed graph shows allocation by Product/Package.

You choose whether to include the Revenue Chart in a Preview when customizing it in the "Data Model" Global Tool. You can read more about this here.


System fields

Let's take a look at some system (standard/default) fields on the Deal model.

  • Stage - this lost field is used for tracking the progression of each Deal through a pipeline, and to differentiate between potential and confirmed (or lost) revenue

    • It has standard value options "Closed Won" and "Closed Lost". These are fixed/locked (you can't edit the names of those values or delete them)

    • You can also add custom value options to the field to represent different stages (e.g. "Open", or something more specific such as "Negotiation") ...

    • ... or you may prefer to create additional custom fields if you have multiple pipelines. For example, you could have one custom field called "Sales Stage" with values representing the stages of new-business Deals, and another custom field called "CS Stage" for renewal and upgrade Deals

  • Name - the name of the Deal. This is auto-populated ("Deal with [Company]") for ease, if you don't specify your own Deal name; but you can also write/edit your own custom name

  • Created date and Updated date - standard fields tracking Deal record creation/update respectively

  • Close date - used as the start date for Line Items added to the Deal

  • Total Contract Value, ARR and MRR

    • These fields are calculated based on any Line Items on the Deal

    • Their values are manually editable if no Line Items are added

    • Note that Total Contract Value adds up the Value of all Line Items, whether they are of type "Subscription" (recurring) or "Fee" (non-recurring)

  • Fees - total revenue of Line Items of type "Fee" (non-recurring) on the Deal

  • Owner - the User (also called Team Member) responsible for the Deal. This is the Deal creator as default, but you can change this to someone else

  • Followers - other User(s) (also called Team Member(s)) associated with the Deal

  • Source Id and ExternalId

    • These are reference values linking the Deal with external systems

    • Source Id typically refers to a CRM integration; ExternalId is usually your own system

    • You can read more about these IDs in general (not model-specific) here


Further reading

If you'd like to learn more about the other revenue data models, check out the articles below:

Did this answer your question?