Modelhooks

Modelhooks is a key feature to the Standard Model that makes the Bring Your Own Model functionality work. Here's how it works to make the process of integrating Foresight modules, custom revenue models, and non-Foresight models as easy as possible.

The Standard Model is a fully modular model that seperates the financial core - financial statements, operating costs, hiring plan, cap table, valuation, and actuals reporting - from the growth and revenue projections, allowing you to easily change or replace the default revenue model built into the Standard Model. 1

The bridge between the financial core and the revenue projections is the Modelhooks 2 sheet, which exposes the key integration points between the revenue projections and the financial model in one easy place.

By default, Modelhooks links the revenue projections (the Get Started - Revenue Model and Revenue Model sheets) with the financial core of the model (Forecasted Financial Statements, Summary, Key Reports, Cap Table, Valuation, Actuals, and more). The Modelhooks sheets has rows for any numbers that are linked between those two sections in the Standard Model. For a user of the Standard Model, this is seamless and it comes prelinked, and you can safely hide this sheet as you should not have to make any inputs in this sheet.

There are three core integration scenarios that Modelhooks faciliates:

  1. Integrating Foresight Modules
  2. Adding in new revenue streams
  3. Building custom growth and revenue models
  4. Integrating non-Foresight models

Let’s talk about how each scenario works.

Integrating Foresight Modules

Here’s one of the first things to understand about how the Foresight models work: since they (largely) share a common structure, you can link them together in many ways. The advanced add-ons - SaaS, Ecommerce, and Services - and the free tools - SaaS Forecasting Tool, Sales and Inventory Tool, Wholesales Sales, Marketing, and more - use a common structure that uses the same monthly, quarterly and annual time scale, which makes the integration process easier.

The second core element that makes integration easier is through the Export functionality in the advanced modules. The modules do growth and revenue forecasts in more detailed and advanced methods than the default revenue model in the Standard Model. For example, while the Standard handles 1 average “order”, or “plan”, or customer, the SaaS handles by default up to 8 different plans (and can be extended to many more), and the Ecommerce handles by default up to 25 SKUs and two sales channels (and can be extended to many more).

Each of the modules has a sheet called “Export”, which contains the data that will be passed into the financial model through Modelhooks. The linkage is built automatically, here’s how you do it.

  • Open both the Standard Model and the module you’re using.
  • Select the sheets in the Add-on model to copy into Standard Model (all of them except the Readme sheet). Make sure to select them as a group, using control+click (PC) or command+click (Mac) (details, because that will keep their calculations linked together and it’s a fast process to move the Add-on model over.
  • Copy the sheets into the Standard Model.
  • Save the file. Now the module will still be linked together, and it will live inside the Standard Model.
  • Then, go to the Get Started - Financial Model sheet and scroll down to the “Modelhooks” section. Here, you can change the sheet that’s used to pull numbers into Modelhooks. Use the dropdown to select the Export option.
  • If you’re using the Ecommerce module, the module uses the Revenue Model sheet for the acquisition and funnel calculations, and you need to keep it. If you’re using the SaaS or Services module, the module replaces the Revenue Model and you’ll want to delete the pre-existing Revenue Model sheet in the Standard Model.
  • The Modelhooks should now be pulling in data from the module, you can verify this in the Summary, Key Reports, Forecast, and other sheets. 3

The free tools do not have the Export functionality pre-built, but you can always manually link them into Modelhooks using the same methodology used for building custom growth and revenue models. We’ll tackle that next.

Adding in new revenue streams

The common revenue model in the Standard Model is built to handle a wide variety of businesses, but in many cases you’ll want to make edits to it or add in more revenue streams. For example, the Standard’s structure handles up to 2 different revenue streams from 1 customer base, but perhaps you need 3 revenue streams, or 2 revenue streams across 2 customer bases. What do you do?

Modeling multiple revenue streams isn’t hard, it just takes a basic understanding of the structure so you can do it efficiently. The revenue lines in Modelhooks link into the Forecast and Actuals sheets in the financial core, so any numbers you enter into those lines will automatically flow through the model. Each of the labels on the revenue lines are also inputs; by default they link to the revenues and contra-revenues forecasted in the default revenue model, but if those default accounts are not relevant, you can overwrite them and replace them with new revenue lines.

Therefore, if you want to model a new revenue stream, one way is to create your new revenue stream on a new sheet - using the same timescale and date headers as on the other sheets, and whatever methodology you want to use to forecast that revenue stream - and then link it to one of the unneeded revenue lines on Modelhooks.

Additionally, you can add in new lines into Modelhooks if you need more rows to cover more revenue and contra-revenue accounts: just note you have to make the same edit to Forecast and Actuals sheets and copy the formulas on those sheets so that the new lines you created actually flow into the model.

Building custom growth and revenue models

If the common revenue model just isn’t a fit, or if you would just prefer to forecast growth and revenues differently, then the usual solution is to build a custom growth and revenue model. As an example, here’s how I do that:

  • First, I delete everything on the Revenue Model sheet except for the timescale rows (year #, month #, etc.). That way the custom revenue model has the same consistent time scale with rest of the model, but I now have a blank canvas to work with to build a new custom growth and revenue model.
  • Then I either delete everything on the Get Started - Revenue Model sheet (except for the date input) or I just delete the sheet (and then link the date that starts the monthly timescale on the Revenue Model sheet to the date input on Get Started - Financial Model). It’s not necessary to have this sheet, it can depend on what’s the right structure for the the inputs for you, but I generally have a separate assumptions sheet.
  • Then I build a new set of revenue projections on the blank Revenue Model sheet. I may put the inputs on the Get Started - Revenue Model sheet, or I may not do that if the structure is simple or doesn’t require that structure.
  • Once I’m done with the new revenue forecasts, then I link in the relevant lines into the Modelhooks sheets, first by setting up the metrics section for the metrics I want to track, then setting up the revenues and cost of sales lines. For some businesses, that might be all that is required. For others, I may use the additional fields on Modelhooks to link data into those lines.
  • That’s it!

Integrating non-Foresight models

Let’s say you already have a revenue forecast you like, whether you built it or you’re using a non-Foresight template. And let’s say you like the revenue forecast, but don’t think it does cash forecasting, or funding forecasts, or the cap table, or LTV, CAC, or other metrics reporting as well as Foresight.

That’s fine: use the Bring Your Own methodology to link your non-Foresight revenue model into the Standard Model.

  • Duplicate the revenue forecast sheets from the non-Foresight model into the Standard Model
  • Evaluate the timescale and see if you need to make any edits so that the timescales match up between the models
  • Then link it into Modelhooks in the same way as described above, using the relevant lines as needed. It’s not required to build an Export sheet, or do anything fancy: just find the relevant information in your non-Foresight model, and link it into the Modelhooks inputs laid out.
  • This integrates the two models, and allows you to use your own revenue forecast method with the Standard Model structure.

This enables the Starter Model to be a modular model – a model with a standardized financial core with an easy methodology to integrate with any revenue forecast – to make it as easy as possible for you to use a template and minimize the amount of time you have to spend to make it work for you.

What if I have important information in your model that Modelhooks doesn’t expose? For more advanced integrations involving custom calcs in your non-Foresight model that aren’t in the financial core, I create a new line in Modelhooks, then link it into the financial core, depending on the right accounting treatment.


  1. Not to be outdone, the Starter Model also allows you to integrate Foresight add-ons, custom revenue models and non-Foresight models into the costs and financial statements. It’s not as apparent or as simple as the Modelhooks functionality built into the Standard, but the simplicity of the revenue projections in the Starter make it very easy for you to add in new sheets - or copy sheets from external models - and feed your revenue projections into the revenue lines on the Forecast sheet. Additional integration may be necessary, perhaps for businesses with inventories, or subscription revenue models with deferred revenue liabilities, or other revenue models with balance sheet impacts, but if you can handle the accounting, it’s still a fairly easy process. The Modelhooks sheet in the Standard makes the integration process very easy (and automatic if you’re using a Foresight model), and thus most of the documentation centers on the Standard, but it’s still possible to build modular models with the Starter Model as a base. 

  2. Yes, the term “modelhooks” is heavily inspired by webhooks and the broader concept of hooks and computer programming. 

  3. How does it do this, exactly? The Modelhooks sheet and the Export sheet share the same structure, and most importantly, the same timescale. But the dates and the exact layout of rows don’t have to be the same. On the last column on each sheet is a column called “data_row”, and in that column are data labels that identify each row. The formulas in Modelhooks look at the dates and look at the data labels to identify where the same bit of information exists on the Export Sheet (say, revenues for month 3), and then links to the appropriate place that corresponds to revenues for month 3 on Modelhooks. Doing it this way, the layout of rows for Export and Modelhooks can change and be edited, but the data labels will enable Modelhooks to find the right information even if it’s not the same exact cell reference on Export. 

Was this helpful? Yes / No

Thanks, I appreciate the feedback.