⚙️ Optimizer

Input your goal and per-channel and total budget spend constraints, and receive a budget that is optimized for your selected target (profit, ROI, or revenue)

📥 Inputs

  • Realistic channel budgets
  • Planned promotions or holidays
  • Committed spend levels
  • Objective - Outcome Target, Efficiency Target, or Maximize Profit
  • Constraints
  • Model Selection

🗳️ Objectives

Efficiency Target

Selecting the Efficiency Target allows you to maximize the cost-based efficiency of all of the marketing dollars spent during the time period selected. This value includes the effect that will be realized both immediately and in the future.

When to use: Use this when you want to spend as much as possible while maintaining a certain level of efficiency.

Total outcome

Total outcome is the complete effect on the KPI produced by the spend on a channel during the selected period, regardless of when this effect will be realized.

For channels that have a time shift, some of the outcome will be realized immediately on the day of spend, but the full effect will not be realized until some point in the future. The length of time, and pattern for when the full effect will be realized is estimated based on the time shift curve which can be viewed directly using the Shift Curves report.


“KPI” above is referring to the relevant business metric Recast is modeling (ex. Revenue, Conversions, etc)

When to use: Use this objective when you are trying to hit a certain goal in conversions or revenue as efficiently as possible


For ROI Models: Total Outcome * contribution margin - Total Spend

For CPA models: Total Outcome * value per acquisition - Total Spend

When to use: Use when you want to maximize the value of your conversions minus marketing spend

🪢 Model Selection

If you have multiple models with Recast, you can optimize so that the results is maximized across multiple models. Select which models to include in your optimization by clicking the button "Optimize across multiple models" and checking the box next to the model name. Next, input a model multiplier to give relative weighting to each of your models. Learn more by visiting Optimize across multiple models.

:owlbert-thinking: Strategy

In the conservative case, the model will primarily include channels that have low uncertainty

In the moderate case, the model will primarily include channels that have low uncertainty but may also explore channels with greater uncertainty and the possibility of greater returns

In the aggressive case, the model will optimize for returns rather than minimizing uncertainty. This means the model will explore channels that may have greater uncertainty but the possibility for greater returns.

🔳 Introduction to setting constraints

The optimizer can be constrained to only search through budgets that you would be capable of implementing. The way that constraints work is as follows:

  • Each row in the constraints table below is a separate constraint.
  • Each row constrains the optimized spend to be between the “min” and “max” across all of the channels included in the “channels” section

The example below will constrain facebook_prospecting plus facebook_retargeting to be between $0 and $1,000,000 of spend between 2024-05-12 and 2024-05-31, and will constrain influencers to be exactly $100,000 of spend during the same time period.

Optimized spend is in addition to spend specified in the uploaded budget, so you may specify “min” and “max” to be negative, if you are trying to find optimal ways to reduce spend relative to your original plan. See the section on “Finding how to reduce spend by a fixed amount” for more details


If your model has context variables click the dropdown button to check the values that will be used.

➕ Additional channel-level constraints

In addition to the main constraints set above, the optimizer allows for additional channel-level constraints that may be set by clicking “edit” on any channel, that will open a modal that looks like this:

Minimum spend

The Minimum Spend constraint allows you to specify the minimum you plan to spend in a channel. For example, if you have a contract with a channel to spend $X every month, you can specify that amount in the constraint.

Drop days

Certain channels may have drop days where you spend you spend your budget for that channel in large chunks, instead of a little bit each day. Drop days are the number of days between each set of spend into a channel. 1- means you spend into a channel everyday, 2- means you spend into a channel every other day, 3- means you spend into a channel every 3 days and so on. Setting drop days prevents the optimizer from spending into the channel every day.

The optimizer will recommend the number of days to set as the frequency of spend for channels without daily spend. Using this recommendation can help you prevent unrealistic spend recommendations.

Failure to set a realistic "drop days" may lead to spend on too many days, which will make the spend appear less saturated.

How to add spikes

Spikes are days when you expect greater or lower than usual. These could include promotions like Black Friday sales or Amazon Prime day. Click the “show” button next to the Spikes heading to see all your currently active spikes. To add a new date click “Add date” next to each spike. To add a new promotion, click “add date” next to Promo. If you want to remove a spike, add a new label, or if you are having trouble identifying spikes, contact [email protected] for help.

How to use a reference budget

You may optionally set a budget for channels that you have not constrained above by dragging and dropping a CSV or by uploading a file from your computer. It must be in exactly the same format as the template file provided here.

➡️ Budget Template

For channels that have constraints, the budget will be ignored. Any channel that is not part of the constraints will use the values in the budget provided. If you do not provide a budget, unconstrained channels will be set to zero.

⁉️ Common use-cases

How to find the “unconstrained recommendation”?

A useful first step with the optimizer can be finding the “unconstrained recommendation”. This means not setting any minimum or maximum constraints on your channels despite possibly having constraints. The unconstrained recommendation will optimize your spend exclusively with the purpose of maximizing your objective. This will allow you to gauge a baseline outcome, recommended spend and ROI per channel before inputting your constraints and seeing how they affect your objective.

How to fix spend?

Recast allows you to allocate a fixed budget optimally. This is useful if you have a set budget you have to spend and do not want to spend more or less than this fixed amount across all your channels.

To set a fixed budget:
Create a constraint in the optimizer tool and include all your channels.
In both the fields marked “Max” and “Min” input the fixed amount you would like to spend across all your channels combined.
Recast will create a budget that does not exceed your stated maximum

For more Optimizer use cases visit How To: Plan your Budget and How to: React to Budget Changes.

How can I optimize when some of my channels are set in stone?

Many clients have a two stage optimization process, one where they set high level budgets for a longer time period (month) and one where they set smaller budgets (weekly or daily) for more flexible channels (e.g. Facebook), but they can’t change the more upper funnel advertising purchases (like TV) that have already happened.

For an “in-month” optimization, where some channels are locked in and some channels are still optimizable, we recommend using the “upload budget” feature shown below. In this scenario, you would drag your lower funnel channels into the constraints and optimize for them, and then you would place the spend amounts you have set in stone for your upper funnel channels in the template CSV and upload it as a budget. The optimizer will then take these figures into account and use them to estimate how aggressive or conservative it needs to be with your lower funnel channels in order to reach your objectives.