Skip to content
  • There are no suggestions because the search field is empty.

Promotion ROI Calculations

Context

Vividly calculates Return on Investment (ROI) for promotions to answer one critical question: Did this promotion generate more incremental profit than it cost to run? ROI is calculated using your planned lift, expected sales, list price, product margin, and trade spend. The same core formula is used in both Promotions Planning (live promotions) and Scenario Planning / Scenarios (draft promotions you're testing). The key difference is that Scenarios always uses expected (planned) values, while Promotions Planning can also surface actual post-event ROI for eligible accounts.

When to Use This Article

  • You want to understand why a specific ROI value is appearing on a promotion or promotion line
  • You're building promotions and want to know what inputs drive ROI
  • You're comparing scenarios and want to understand what the ROI column represents
  • ROI is showing N/A and you want to know why
  • You want to understand the difference between line-level and promotion-level ROI

Prerequisites

Roles / Permissions All users with access to Promotions Planning or Scenarios
Promotions Planning access Available on all Vividly plans
Scenario Planning access Requires the SCENARIO_PLANNING feature flag — contact your Customer Success Manager to enable
Actual ROI (Analytics) Requires ROI Analysis feature gate + syndicated data (SPINS, Nielsen, IRI)
Lift Must be configured on the promotion type
Product Margin Must be set at the Product Group or Product level
Pricing Must be configured at the Customer + Product Group level (First Receiver & Direct Customer only)
Promotion dates Must include in-store dates (buy-in or scan-back window required for Performance Ratio)

Part 1 — The Core ROI Formula

1. The formula in plain English

ROI measures how much incremental profit you generated above your trade spend, relative to what you spent.

Core ROI Formula

ROI = (Gross Margin − Trade Spend) ÷ Trade Spend

How to read your ROI result:

Result

What it means

0.50 (50%)

You earned $0.50 of profit for every $1.00 spent — you got $1.50 back per dollar invested

0 (0%)

Break-even — trade spend exactly equals incremental profit

−0.30 (−30%)

You lost $0.30 for every $1.00 spent — promotion cost more than it returned

N/A

ROI cannot be calculated — a required input is missing or zero (see Troubleshooting)

2. What “Gross Margin” means in this formula

Gross Margin is the incremental profit your promotion generated — not total sales, but the extra profit driven by the promotion above your baseline.

  • Incremental Units — Additional units sold because of the promotion (beyond baseline)

  • List Price — Price per unit used for the promotion

  • Product Margin % — Your profit margin on those units (as a decimal — e.g., 50% = 0.50)

3. The Full Calculation Chain — Step By Step

Vividly builds Gross Margin from the bottom up:

Step 1 — Incremental Units

Incremental Units = Expected Sales × ( Lift ÷ (1 + Lift) ) × Performance Ratio

Step 2 — Incremental Revenue

Incremental Revenue = Incremental Units × List Price

Step 3 — Gross Margin

Gross Margin = Incremental Revenue × Product Margin %

Step 4 — ROI

ROI = (Gross Margin − Expected Spend) ÷ Expected Spend

ℹ️ Note: ROI is only calculated when both Expected Spend > 0 and Gross Margin > 0. If either is zero or negative, ROI displays as N/A.


Part 2 — Key Inputs Explained

4. Lift

Lift is the expected percentage increase in sales during a promotion period, expressed as a decimal (e.g., 15% lift = 0.15).

The formula Lift ÷ (1 + Lift) isolates the incremental fraction of total sales.

Example: A 15% lift means: 0.15 ÷ 1.15 = 0.1304 → approximately 13% of total expected sales are incremental (driven by the promotion)

5. Performance Ratio

The Performance Ratio adjusts for situations where your in-store promotion period is shorter than your buy-in or scan-back window. It ensures you only count the lift that occurred while the promotion was active in store.

Condition

Performance Ratio Formula

Buy-in window AND in-store window both exist

In-store window days ÷ Buy-in window days

Scan-back window AND in-store window both exist

In-store window days ÷ Scan-back window days

Scan-back window AND buy-in window exist (no in-store)

Scan-back window days ÷ Buy-in window days

None of the above apply

Performance Ratio = 1.0 (no adjustment)

Example: Buy-in window = 30 days. In-store promotion = 21 days. Performance Ratio = 21 ÷ 30 = 0.70. Only 70% of expected sales are counted as incremental.


Part 3 — Line-Level vs. Promotion-Level ROI

6. Line-level ROI

Every promotion is made up of one or more promotion lines (e.g., a scan-back line for Product Group A, an MCB line for Product Group B). Each line gets its own ROI calculation.

Example — 3-Line Promotion

Line 1 (Scan, Product Group A): Expected Spend $1,000 • Gross Margin $1,500 → ROI = 50%



Line 2 (MCB, Product Group B): Expected Spend $800 • Gross Margin $1,200 → ROI = 50%



Line 3 (Ad, All Products): No lift / no margin applied → ROI = N/A

7. Promotion-level ROI

The overall promotion ROI rolls up all line metrics into one number:

Total Gross Margin = Sum of Gross Margin across all lines
Total Expected Spend = Sum of Expected Spend across all lines

Promotion ROI = (Total Gross Margin − Total Expected Spend) ÷ Total Expected Spend

Example (continuing from above):

Total Gross Margin = $1,500 + $1,200 + $0 = $2,700
Total Expected Spend = $1,000 + $800 + $600 (Ad) = $2,400
Promotion ROI = ($2,700 − $2,400) ÷ $2,400 = 0.125 → 12.5%

Note: Even if an individual line shows N/A (e.g., an Ad line with no lift), its expected spend still rolls into the promotion-level denominator — which can lower your overall promotion ROI.


Part 4 — Expected ROI vs. Actual ROI

Expected ROI

Actual ROI

What it uses

Planned lift + expected units + expected spend

Real POS/syndicated data (after promotion is closed)

Available when

As soon as a promotion is planned with lift configured

After promotion status = Closed + syndicated data loaded

Where to find

Promotions Planning & Scenario Planning

Insights → Promotion Analytics 2.0 → ROI Analysis tab only

Important: ROI is only as reliable as its inputs. If product margins, list pricing, or lift values are missing or incorrect, the ROI output will be unreliable. Verify your data setup before drawing conclusions.


Part 5 — ROI in Each Module

1. Promotions Planning

Where To Find ROI?
  1. Navigate to "Planning" in the left sidebar and open any promotion.

  2. ROI is displayed on each promotion line and at the promotion-level summary header.

  3. The ROI shown here is Expected ROI — calculated from your planned lift and expected sales as entered in the promotion.

  4. After a promotion is closed and syndicated data is available, Actual ROI appears in Insights → Promotion Analytics 2.0 → ROI Analysis — not in the Planning view itself.

Which Team Should Use Which Margin Setting?

Team

Recommended setting

Purpose

Sales Teams

Set to 1 (100%)

Shows pure volume and revenue impact without exposing sensitive cost data

Finance Teams

Actual COGS-based margin

Measures true profitability — whether the promotion generated incremental profit net of trade spend

Warning: Whether to use actual product margins is an organizational decision, not a technical one. Discuss with your team before configuring — it directly determines who sees profitability data and how results are interpreted.


Scenario Planning (Scenarios)

How To View ROI in a Scenario?

  1. Navigate to "Scenarios" in the left sidebar and click "Scenario Planning".

  2. Open an existing scenario or click "Create Scenario" to start a new one.

  3. Add or create Draft promotions within the scenario.

  4. For each promotion in the scenario list, you will see: Expected Spend, Revenue, Gross Margin, ROI, and Trade Rate.

  5. The scenario-level header rolls up all promotion metrics into aggregate totals.

How Scenario ROI is calculated?

Scenario Planning uses the exact same Expected ROI formula as Promotions Planning (see Parts 1–3 above). Because all promotions in a Scenario are in Draft status, they always use planned/expected values — no actual deductions or POS data.

Note: Draft promotions in Scenarios are fully isolated. They do not affect your live promotion analytics, deduction reconciliation, or forecast calculations. ROI shown in Scenarios is purely for planning comparison.

Comparing ROI across scenarios

  1. In the Scenario Planning section, click "Compare Scenarios".

  2. Check the boxes next to up to 5 scenarios you want to compare.

  3. Click "Generate Comparison".

  4. Review side-by-side charts showing Trade Spend, Revenue, and Trade Rate by month.

  5. For a direct ROI comparison, review the per-promotion ROI values within each individual scenario view.


How to Interpret Your ROI Result?

Result

What it means

Positive (> 0)

The promotion generated more incremental profit than it cost — it is profitable

Zero (= 0)

Break-even — trade spend exactly equals incremental profit

Negative (< 0)

The promotion cost more than the incremental profit it generated — it ran at a loss

N/A

ROI cannot be calculated — see Troubleshooting below


Troubleshooting

Problem: ROI Shows as N/A on a Promotion Line

  • Likely cause: One or more required inputs are missing — Expected Spend is zero/negative, Gross Margin is zero/negative, or the promotion type does not include lift.

  • Fix:
    1. Confirm the promotion line has a non-zero expected spend.
    2. Confirm the promotion type is configured with lift.
    3. Confirm product margin is set for the associated product group or product.
    4. Confirm pricing is configured at the Customer + Product Group level.

Problem: ROI Shows as N/A at the Promotion Level Even Though Some Lines Have ROI

  • Likely cause: Total gross margin across all lines is zero or negative (high-spend lines without lift are outweighing profitable lines), or total expected spend sums to zero.

  • Fix: Review each line's individual Gross Margin and Expected Spend. Ensure all lines intended to contribute to ROI have lift, margin, and pricing configured.

Problem: ROI is Much Lower than Expected

  • Likely cause: The Performance Ratio is reducing incremental units significantly — this happens when the buy-in window is much longer than the in-store window.

  • Fix: Review the buy-in and in-store date windows on the promotion. If the in-store window is short relative to the buy-in window, the Performance Ratio will be a small fraction. Adjusting date windows to more accurately reflect the actual promotion period will improve accuracy.

Problem: I Don’t See The “Scenarios” Section in the Left Sidebar

  • Likely cause: The SCENARIO_PLANNING feature flag is not enabled on your account.

  • Fix: Contact your Customer Success Manager to request access to Scenario Planning.

Problem: I Can See Expected ROI But Not Actual ROI For Closed Promotions

  • Likely cause: Actual ROI requires syndicated POS data to be loaded into Vividly and is only visible in the ROI Analysis tab under Insights → Promotion Analytics 2.0.

  • Fix: Confirm your account has syndicated data configured. If so, navigate to Insights → Promotion Analytics 2.0 → ROI tab. If you don’t have access to this tab, contact your Customer Success Manager to enable the ROI Analysis feature gate.


Frequently Asked Questions

Does ROI In Scenario Planning Affect My Live Plan or Analytics?

  • No. Draft promotions in Scenarios are fully isolated and do not impact live promotion analytics, deductions, or forecast calculations. ROI shown in Scenarios is purely for planning comparison purposes.

Why Does My Promotion-Level ROI Look Different From The Individual Line ROIs?

  • Promotion-level ROI aggregates all lines — including lines with no lift (like Ad lines) that still contribute their expected spend to the denominator. A high-spend line with no incremental revenue will pull the promotion-level ROI down relative to individual line ROIs.

Should I Set Product Margin To 100% Or Use Our Actual Margin?

  • It depends on your team's goals. Sales teams typically set product margin to 1 (100%) to see pure volume and revenue impact without introducing profitability complexity. Finance teams should use actual margins (based on real COGS and list price) to measure true profitability. This is an organizational decision — discuss with your team before configuring.

What Happens To ROI If A Promotion Line Has No Lift?

  • If a line has no lift (e.g., an Ad placement), there are no incremental units, so Gross Margin = 0 and ROI = N/A for that line. The line's expected spend still rolls into the promotion-level total, which can reduce overall promotion ROI.

Why Does a Negative Product Margin Make ROI Show as N/A Instead of a Negative Number?

  • When the gross margin is negative (the product is selling below cost), Vividly returns N/A rather than a negative ROI. This prevents a misleading double-negative result. The underlying gross margin value is still accessible in the data.