Spread is a powerful and flexible Causal function. It allows you to spread a value, or a set of values, over a time period. You can think of it as similar in functionality to sumproduct in Excel, but more intuitive (and of course, more powerful)
Spread has two arguments: “x”  the value or set of values, and “y”  the amount you’re spreading x by.
For example, if all new customers have to pay a $100 signup fee in their first month, and from the second month onwards they pay $10 per month for their subscription  you could calculate your monthly revenue using spread.
 In this instance, your “x” would be your New Customers each month, and the “y” amount you’re spreading it by would be that payment structure.
 In Causal, this would look as follows.
How does it actually work? What’s the underlying calculation?

In essence: we are spreading all new customers todate, by the payment structure over time.

In the first month, Oct 2021, there are 100 new customers who all pay their $100 signup fee. $100 x 100 customers = $10k. Simple.

In the second month, Nov 2021, there are 200 new customers who pay their $100 signup fee, and 100 existing customers who pay their $10 per month ongoing subscription. $100 x 200 customers = $20k, $10 x 100 customers = $1k. $20k + $1k = $21k.

In the third month, Dec 2021, there are 300 new customers who pay their $100 signup fee, and now 300 existing customers (100 from Oct, 200 from Nov) who pay $10 per month for their ongoing subscription. $100 x 300 customers = $30k, $10 x 300 customers = $3k. $30k + $3k = $33k.

And so on…
It is important to note that the Spread function expects both arguments (x and y) to be spans. Spans are a range/set of values.

To make both arguments spans, you’ll need to change the timestep that each argument references, from ‘Current’ (the default), to ‘0:t’. 0 represents the 1st timestep and t represents the current timestep. For more info on spans and time in general, see here
 Note: ‘x’, the value/set of values, aligns with the months in the model, however ‘y’, the amount you’re spreading ‘x’ by, aligns with the timesteps in the model (so instead of October 2021 it is time step 0. Therefore every new month of customers starts with payments at timestep 0). Said differently, for the payment variable in the Causal screenshot above, you can ignore the months across the top and think of them as 0, 1, 2 etc.
Other common use cases of Spread are:
Sales cycles (where ‘x’ is leads generated, and ‘y’ is the % that close over time)
Retention curves (where ‘x’ is new users, and ‘y’ is the % that retain over time).
If you have any additional use cases you’ve used spread for  comment on this post to share them And of course, if you have any questions, reach out to us, either via this post, or on our live chat. Happy modelling!