Step 1: Prepare your integrations and databases

First, connect the data sources you plan to use model revenue recognition. Runway has CRM, data warehouse, and google sheet integrations available.

You can also manually copy data into a Runway database. You will need to follow database configuration directions.

The Runway team can help you write a query that will bring in the fields that you will need for revenue recognition modeling from your integration source.

Typically, for a revenue recognition model the contract or deal databases are segmented by a unique ID and Customer Name, depending on the fields your business uses to track contracts.

The following items brought into Runway as number and date drivers are standard for a revenue recognition model:

  • Contract Amount
  • Contract Term length
  • Contract Start Date
  • Contract End Date

Note the example of a simple contract database below:

  • Contract ID and Customer Name dimensions are set as Segments
  • Contract Start Date, Contract Value and Contract Term (Months) are Drivers
  • Payment Cadence is an Other column, meaning it is metadata tied to each Contract ID and Customer Name segment

Step 2: Set up contract start date, end date and term length

To recognize revenue over the length of a contract, you will need Start Date, Contract Term and Contract End Date drivers.

Calculate contract end date using start date and term (months)

  1. Add a date driver column by clicking the + at the right hand side of the database and selecting date driver

  2. Name the date driver Contract End Date

  3. Click on the driver column name and select Add Default Formula. Default formulas allow you to set a formula for every segment of the driver.

  4. Use DateAdd() to calculate the Contract End Date based on Contract Start Date and Contract Term Length.

    Note that the units must be wrapped in single-quotes, e.g. months as ‘m’

Calculate contract term (months) from contract start date and end date

  1. Add a number driver column by clicking the + at the right hand side of the database and selecting number driver

  2. Edit the name for the number driver column

  3. Clicking on the driver column name, select Add Default Formula to set a formula for every segment of data (in this example, a formula for Contract Term Length will be propagated to each intersection of Contract ID and Customer Name)

  4. Use DateDiff() function to calculate a Contract Term Length based on contract start date and Contract End Date.

Step 3: Build logic to recognize revenue over length of contract

Here’s how to create a formula that will spread your revenue over the period that services get delivered.

  1. Add a number driver column to the database by clicking the + to the right of the last database column.

  1. Name this driver Monthly Recognized Revenue.
  2. Click into the driver name and select Add default formula to open the default formula editor for the driver column.
  3. Begin typing Contract Value to surface the Contract Value driver.
  4. You will see two options to reference the Contract Value driver.
    • A database column reference with the naming convention Database Name.Driver Column.
      • This option gives you the affordance to apply date filters and filters for dimensions you have not set as database Segments. For revenue recognition purposes, you will want to choose the database reference option so you have access to date filters.
    • Direct Driver reference option, which appears as Contract Value This Segment.
      • This option offers cleaner name format and the ability to filter based on database segments.

  1. Click the driver pill to open the formula editor options.
  2. Click **+ Add Rule **to add filters to the formula. These will make sure the contract value hits your model only between Contract start and End dates.
    • Set Contract Start Date.Month is on or before This month
    • Set Contract End Date.Month is after This month
    • SegmentisThis Segment will ensure the rules you set get applied across all segments of the driver, which in this example, means across all slices of Contract ID x Customer Name. You can review how to **create dynamic formulas **using This Segment here

  1. Finally, divide by Contract Term Length (Months) to calculate a monthly value. Each driver will be populated from Contract Start to Contract End date.

To check if the formula is calculating correctly, select all months of values and check whether count and sum in the calculation preview match the Contract Term Length and Contract Value

Step 4: Drive revenue forecast formulas by referencing Contracts data

Finally, you will need to wire up the Contract database to drive Revenue forecasts upstream in your model. This is the last step required to ensure that your topline is actively driven by the Monthly Revenue Recognition driver you’ve built.

  1. Navigate to a Revenue driver if it already exists in your Runway instance or create a new driver in a Model or on a Page

  2. Click into the forecast formula of the driver and type sum()

    • You can create a sum() two ways:
      • Using a driver reference that directly references Monthly Recognized Revenue All Customer Names All Contract IDs
    • You may also create a sum over the**database column reference ** which gives you the affordance to apply filters based on non-Segment dimensions
  1. Click the carat to the left of the Revenue driver to drill into inputs in-line
    • This lets us quickly check that Monthly Recognized Revenue drivers for each Customer x Contract ID segment pull into the aggregation as expected
    • Based on the drill-in, you will be able to see whether Monthly Recognized Revenue values begin and end on the correct dates
    • Each Monthly Recognized Revenue driver has a Runway arrow that will open up a detail pane that will let you investigate the drivers formulas, inputs and Plans