> ## Documentation Index
> Fetch the complete documentation index at: https://docs.topsort.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Incrementality Measurement

> Methods for measuring the true incremental impact of advertising campaigns

export const LastUpdated = ({date, lang = "en"}) => {
  const translations = {
    en: "Last updated:",
    es: "Última actualización:",
    pt: "Última atualização:",
    fr: "Dernière mise à jour:",
    de: "Zuletzt aktualisiert:"
  };
  const label = translations[lang] || translations.en;
  return <>
<style>{`
.last-updated-component {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 10px 16px;
border-radius: 8px;
margin-top: 12px;
margin-bottom: 16px;
font-size: 14px;
background-color: rgba(0, 0, 0, 0.05);
border: 1px solid rgba(0, 0, 0, 0.12);
color: rgba(0, 0, 0, 0.75);
line-height: 1;
}

        .last-updated-component svg {
          flex-shrink: 0;
          vertical-align: middle;
        }

        .last-updated-component span {
          display: inline-flex !important;
          align-items: center !important;
          line-height: 1 !important;
        }

        [data-theme="dark"] .last-updated-component {
          background-color: #3a3a3a;
          border: 2px solid #888888;
          color: #ffffff;
        }

        [data-theme="dark"] .last-updated-component svg {
          stroke: #ffffff;
        }
      `}</style>
      <div className="last-updated-component">
        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
          <circle cx="12" cy="12" r="10" />
          <polyline points="12 6 12 12 16 14" />
        </svg>
        <span>
          <strong style={{
    fontWeight: 600
  }}>{label}</strong> 
          <time dateTime={date}>{date}</time>
        </span>
      </div>
    </>;
};

## Overview

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  Incrementality measurement determines the true causal impact of advertising by
  isolating conversions that would not have occurred without ad exposure. Per
  IAB/MRC Retail Media Measurement Guidelines, incrementality testing provides
  the most accurate measure of advertising effectiveness.
</div>

## What is Incrementality?

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  **Incremental lift** represents sales or conversions directly caused by
  advertising, excluding those that would have happened organically. This
  differs from attribution, which assigns credit for conversions but doesn't
  prove causation.
</div>

<Tip>
  **Example**: If 100 people who saw an ad made purchases, but testing shows 70
  would have purchased anyway, the incremental impact is 30 conversions (30%
  lift).
</Tip>

## Testing Methodologies

### 1. Randomized Controlled Trials (RCTs)

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  The gold standard for incrementality measurement:
</div>

<Steps>
  <Step title="Random Assignment: Users randomly divided into test (see ads) and control (no ads) groups" />

  <Step title="Campaign Execution">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      Test group exposed to advertising while control group is held out
    </div>
  </Step>

  <Step title="Measurement">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      Compare conversion rates between groups
    </div>
  </Step>

  <Step title="Calculation">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      Incremental Lift = (Test Conversions - Control Conversions) / Control Conversions
    </div>
  </Step>
</Steps>

**Advantages:**

* Most accurate causal measurement
* Eliminates selection bias
* Clear statistical significance

**Limitations:**

* Requires holdout group (lost opportunity)
* Minimum sample size needed
* May not reflect real-world conditions

### 2. Synthetic Control Methods

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  Creates artificial control group using historical data and machine learning:
</div>

<Columns cols={2}>
  <Card title="Data Collection">
    Gather historical conversion patterns and user characteristics
  </Card>

  <Card title="Model Training">
    Build predictive model of expected conversions without advertising
  </Card>

  <Card title="Comparison">
    Compare actual results to synthetic control predictions
  </Card>

  <Card title="Lift Calculation">
    Measure difference between actual and predicted outcomes
  </Card>
</Columns>

**Advantages:**

* No holdout group required
* Can be applied retroactively
* Continuous measurement possible

**Limitations:**

* Requires robust historical data
* Model accuracy affects results
* Assumptions may not hold in all cases

### 3. Matched Market Tests

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  Compares similar geographic markets with different ad exposure:
</div>

1. **Market Selection**: Identify comparable markets by demographics, sales patterns
2. **Test Design**: Run campaigns in test markets, hold out control markets
3. **Analysis**: Compare lift between matched market pairs
4. **Scaling**: Extrapolate results to full population

**Advantages:**

* Real-world conditions maintained
* Good for regional campaigns
* Can test different strategies

**Limitations:**

* Finding truly comparable markets difficult
* External factors may affect results
* Geographic spillover possible

## Implementation in Topsort

### Enabling Incrementality Tests

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  Marketplaces can configure incrementality testing through:
</div>

```json theme={null}
{
  "test_configuration": {
    "methodology": "rct",
    "test_split": 0.8, // 80% test, 20% control
    "minimum_sample_size": 10000,
    "measurement_period_days": 30,
    "stratification": ["user_segment", "geographic_region"]
  }
}
```

### Test Setup Process

<Steps>
  <Step title="Define Objectives">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      Define your primary KPI (sales, new customers, etc.), expected lift range, and required confidence level.
    </div>
  </Step>

  <Step title="Calculate Sample Size">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      Use statistical power calculators, account for expected variance, and include buffer for incomplete data.
    </div>
  </Step>

  <Step title="Configure Test Parameters">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      Set test/control split ratio, stratification variables, and measurement window.
    </div>
  </Step>

  <Step title="Monitor Execution">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      Check randomization balance, track exposure rates, and validate data quality.
    </div>
  </Step>

  <Step title="Analyze Results">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      Calculate incremental lift, determine statistical significance, and generate confidence intervals.
    </div>
  </Step>
</Steps>

## Reporting Incrementality

### Standard Metrics

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  Reports include:
</div>

* **Incremental Conversions**: Additional conversions caused by advertising
* **Incremental Revenue**: Revenue directly attributable to ad exposure
* **iROAS**: Incremental Return on Ad Spend (incremental revenue / ad spend)
* **Lift Percentage**: Relative increase over baseline
* **Confidence Interval**: Statistical range of true effect

### Sample Report Format

```
INCREMENTALITY TEST RESULTS
━━━━━━━━━━━━━━━━━━━━━━━━━━
Test Type: Randomized Controlled Trial
Test Period: Oct 1 - Oct 31, 2024
Sample Size: 50,000 users (40,000 test / 10,000 control)

RESULTS:
─────────────────────────────
Test Group Conversion Rate: 4.2%
Control Group Conversion Rate: 3.1%
Incremental Lift: 35.5% (95% CI: 28.2% - 42.8%)
Statistical Significance: p < 0.001

Incremental Conversions: 440
Incremental Revenue: $44,000
iROAS: 4.4x
```

## Best Practices

### Test Design

1. **Pre-registration**

   * Document hypothesis before testing
   * Define success metrics upfront
   * Commit to test duration

2. **Randomization Quality**

   * Verify random assignment
   * Check for pre-test differences
   * Use stratification for balance

3. **Sample Size**
   * Calculate required size for desired power
   * Account for attribution window
   * Include non-compliance buffer

### Common Pitfalls to Avoid

<Warning>
  **Avoid these common mistakes:** - Stopping tests early based on interim
  results - Changing test parameters mid-flight - Ignoring spillover effects
  between groups - Using insufficiently powered tests - Not accounting for
  seasonality
</Warning>

## Advanced Considerations

### Multi-Touch Incrementality

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  For campaigns with multiple touchpoints:
</div>

1. **Sequential Testing**: Measure incremental impact of each additional exposure
2. **Interaction Effects**: Assess how different ad formats work together
3. **Diminishing Returns**: Identify optimal frequency caps

### Long-term Effects

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  Measuring beyond immediate conversions:
</div>

* **Customer Lifetime Value**: Track incremental CLV over time
* **Brand Metrics**: Survey-based measurement of awareness/consideration
* **Halo Effects**: Impact on non-advertised products

### Cross-Channel Coordination

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  When running omnichannel campaigns:
</div>

* Coordinate test/control groups across channels
* Measure total incremental impact
* Identify channel interaction effects

## Integration with Attribution

### Complementary Insights

<Columns cols={2}>
  <Card title="Attribution Answers">
    "Which ads get credit for conversions?"
  </Card>

  <Card title="Incrementality Answers">
    "How many conversions were caused by ads?"
  </Card>
</Columns>

### Combined Reporting

Best practice includes both metrics:

* Attribution for tactical optimization
* Incrementality for strategic decisions
* Reconciliation of differences

## API Access

### Requesting Test Results

```javascript theme={null}
// Fetch incrementality test results
const testResults = await fetch("/api/incrementality/results", {
  method: "POST",
  body: JSON.stringify({
    campaign_id: "camp_123",
    test_id: "test_456",
    include_confidence_intervals: true,
    breakdown_by: ["product_category", "user_segment"],
  }),
});
```

### Response Format

```json theme={null}
{
  "test_summary": {
    "methodology": "rct",
    "test_group_size": 40000,
    "control_group_size": 10000,
    "measurement_period": "2024-10-01 to 2024-10-31"
  },
  "results": {
    "incremental_lift": 0.355,
    "confidence_interval": [0.282, 0.428],
    "p_value": 0.0001,
    "incremental_conversions": 440,
    "incremental_revenue": 44000,
    "iroas": 4.4
  },
  "quality_checks": {
    "randomization_balance": "pass",
    "sample_size_adequate": true,
    "statistical_power": 0.95
  }
}
```

## Frequently Asked Questions

1. **How long should incrementality tests run?**

   * Minimum 2-4 weeks to capture full purchase cycle, longer for considered purchases.

2. **What's the minimum sample size needed?**

   * Depends on expected lift and baseline conversion rate. Generally 10,000+ users per group.

3. **Can incrementality be measured without holdouts?**

   * Yes, using synthetic controls or matched markets, though RCTs remain most accurate.

4. **How often should incrementality be tested?**
   * Quarterly for ongoing campaigns, or when significant changes occur in strategy or market conditions.

***

<LastUpdated date="2025-11-18" />
