Healthy mid-market accounts run >40% of email revenue through programmes. Below = under-automated.
At a glance
Splits Dotdigital-attributed revenue into two buckets: Programmes (Dotdigital’s term for behaviourally-triggered automations, equivalent to Klaviyo “flows”) and Campaigns (one-off broadcasts to a list or segment). The mix is the single most diagnostic Dotdigital health number after revenue itself. Healthy mid-market UK and EU B2C accounts run above 40% of email revenue through programmes; below 40% means the account is under-automated and is leaving easy revenue on the table.
| What it counts | programmeRevenue / (programmeRevenue + campaignRevenue) summed across the period. Sources: /v2/programmes/{id}/summary and /v2/campaigns/{id}/summary aggregated. |
| Why programmes win on efficiency | Programmes are triggered by behaviour (cart abandonment, browse abandonment, post-purchase, replenishment, win-back). Each entry is an audience of one with high purchase intent at a precise moment. Per-recipient revenue is typically 6 to 8x higher than a campaign send. |
| Why campaigns still matter | Programmes only fire when a contact takes a specific action; campaigns reach the entire active list. For broad-reach moments (BFCM, Boxing Day, new-collection launches, sale events) campaigns are the only tool. The right balance is “programmes always-on, campaigns for tentpoles”. |
| What “above 40%” means | The brand has working Welcome, Abandoned-Cart, and Post-Purchase programmes at minimum, plus probably a Browse-Abandon and a Win-Back. Mature accounts hit 50 to 65%. Above 70% usually means campaigns are under-leveraged, not that programmes are too good. |
| What “below 40%” means | Either programmes are not built (most common in newly-onboarded accounts, the Dotdigital implementation team typically builds 2 to 4 in the first 90 days), or programmes exist but are paused/erroring, see Active Programs. |
| Vs Klaviyo benchmark | Klaviyo brands typically run 35 to 55% flow share at maturity. Dotdigital programmes hit a similar band but the lever to get there is heavier engineering (Dotdigital programmes use the EasyEditor visual builder; Klaviyo flows have a richer trigger library out of the box). |
| Attribution model | Both programmes and campaigns share the 7-day click + 1-day view default attribution window. The split between them is at the send level (was the contact added to a programme, or did they receive a campaign blast?), not the attribution level. |
| Time window | 90D (default 90D for stable mix view, programmes are slower to accumulate revenue than campaigns) |
| Alert trigger | programme share <40% |
| Roles | owner, marketing, finance |
Calculation
Calculated automatically from your Dotdigital data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A UK gifting brand running on BigCommerce with Dotdigital. List size 312,000. The 90-day window covers 02 Feb 26 to 02 May 26 (which spans Mother’s Day on 14 Mar 26 and Easter on 05 Apr 26, both major calendar moments).| Source bucket | Sends | Recipients | Revenue | Per-recipient revenue |
|---|---|---|---|---|
| Campaigns total (8 broadcasts) | 8 | 2,360,000 | £346,000 | £0.15 |
| Mother’s Day (3 sends) | 3 | 894,000 | £198,000 | £0.22 |
| Easter early-bird | 1 | 298,000 | £42,000 | £0.14 |
| Spring catalogue | 2 | 596,000 | £58,000 | £0.10 |
| Brand stories newsletter (×2) | 2 | 572,000 | £48,000 | £0.08 |
| Programmes total (6 active) | rolling | 67,200 entries | £284,000 | £4.23 |
| Welcome (5-step) | rolling | 18,400 entries | £39,000 | £2.12 |
| Abandoned-cart (3-step) | rolling | 22,800 entries | £148,000 | £6.49 |
| Browse abandonment | rolling | 14,200 entries | £18,000 | £1.27 |
| Post-purchase replenishment | rolling | 7,400 entries | £52,000 | £7.03 |
| Win-back (90D inactive) | rolling | 3,200 entries | £24,000 | £7.50 |
| Birthday programme | rolling | 1,200 entries | £3,000 | £2.50 |
| Total Dotdigital revenue | £630,000 | |||
| Programme share | 45.1% |
- 45.1% programme share is healthy, just above the 40% threshold. The brand has the full lifecycle programme stack and revenue is balanced between always-on and tentpole moments.
- Per-recipient revenue is 28x higher on programmes (£4.23 vs £0.15). This is the structural advantage of behavioural triggers, the right message at the right moment to a small audience beats a broad blast every time.
- The Mother’s Day campaign was disproportionately effective at £0.22 per recipient. UK gifting brands earn most of their annual revenue from 4 calendar moments (Valentine’s, Mother’s Day, Father’s Day, Christmas); the campaign-revenue line is dominated by these.
- The Welcome programme is under-performing at £2.12 per entry. Compare against the 5 to 10 GBP per entry benchmark for healthy Welcome flows. The brand should review the welcome content (probably too brand-heavy, not enough product or discount). Open Welcome Programme Status for the diagnosis.
- Browse-abandon programme is the weakest at £1.27 per entry. This is normal-low; browse-abandon audiences have lower intent than cart-abandon. The brand could improve by adding a 2nd-step delay of 24h with a “limited stock” hook, but the structural ceiling is much lower than cart-recovery.
Sibling cards merchants should reference together
| Card | Why pair it with Programme vs Campaign Revenue Mix |
|---|---|
| Dotdigital Email-Attributed Revenue | The total this card splits. The mix is meaningless without the headline. |
| Active Programmes | The supply side. If only 2 programmes are running, programme share will struggle to clear 30%. |
| Welcome Programme Status | The single highest-leverage programme. If it’s broken or paused, programme share drops 5 to 8 percentage points. |
| Abandoned-Cart Programme Status | Usually the largest programme by revenue. Pausing it drops programme share 10 to 15 percentage points. |
| Programme Step Drop-Off | Diagnoses why a programme is under-performing. Pair with a low programme share to find the broken step. |
| Top Campaigns by Revenue | The campaign side of the split. Useful for confirming campaigns are pulling their weight too. |
| Klaviyo Flow Revenue Share | The Klaviyo equivalent. Mature brands hit similar 40 to 55% bands across both platforms. |
| Mailchimp Automation Revenue Share | The Mailchimp equivalent. Mailchimp accounts typically run lower programme share (25 to 35%) because automation depth is shallower. |
Reconciling against the vendor’s own dashboard
Where to look in Dotdigital: r1-app.dotdigital.com → Insights → Performance Overview, then toggle the Source filter between Campaigns and Programmes. Sum the two for the denominator. Or use the Custom Reports builder to create a side-by-side view; Dotdigital does not ship this split as a default card. For the per-programme drill-down: Programmes → Reports → Programme Performance. For per-campaign: Campaigns → Reports → Campaign Performance. Why our number may legitimately differ from Dotdigital’s dashboard:| Reason | Direction of divergence |
|---|---|
| Triggered campaigns. Dotdigital allows “triggered campaigns” (single-send messages triggered by an API call, distinct from programmes). Vortex IQ classifies these as Programme revenue; Dotdigital’s UI may class them as Campaigns depending on the report. | ±2 to 5 percentage points on programme share |
| Time-zone. The 90D window will differ by up to 24h at each boundary between UTC (Vortex IQ) and account locale (Dotdigital). | ±0.5 percentage points at the boundary |
| Conversion-window setting. Programmes accumulate revenue over the 7-day click window; campaigns peak quickly and fade. The split varies during the trailing 7 days of any window. Use the 90D window to absorb this. | None on stable 90D readings |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
klaviyo.klv_flow_revenue_share | Same shape, similar healthy band (35 to 55%) | A brand running both (rare) typically sees Klaviyo flow share 5 to 10 percentage points higher because Klaviyo’s flow library is richer out-of-the-box. |
mailchimp.mc_automation_revenue_share | Same shape, lower healthy band (25 to 35%) | Mailchimp automation depth is shallower; ecommerce automations (cart abandon, browse abandon) require manual setup with the Connected Site app. |
brevo_sendinblue.bs_workflow_revenue_share | Same shape | Brevo also UK and EU shaped; expect comparable bands. |
Known limitations / merchant FAQs
My programme share is 22%. Where do I start? Build the Welcome programme first if it doesn’t exist; it’s the highest-leverage programme for new accounts. Second, the Abandoned-Cart programme. Third, the Post-Purchase replenishment or thank-you flow. These three together typically lift programme share from 20% to 40% within 60 days of being live, because they capture revenue from contacts who would otherwise have only received campaign blasts. Dotdigital’s implementation team can build these in EasyEditor in 2 to 3 working days; ask the account manager for a “lifecycle programme review”. My programme share is 70%. Is that bad? Probably yes. 70%+ usually means campaigns are under-leveraged, not that programmes are over-performing. Healthy mature accounts run 50 to 60%. Above 70% the brand is either: (a) afraid to send campaigns because of past deliverability issues, (b) understaffed on email content production so they’re relying entirely on automations, or (c) a low-frequency luxury brand where campaigns are intentionally rare. The fix is to add 1 or 2 well-targeted campaigns per month and watch the mix re-balance. What counts as a “programme” vs a “campaign” in Dotdigital’s data model? A programme is a multi-step automation built in the EasyEditor visual builder, triggered by a contact-property change, an event from the Insights pixel, or an API call. A campaign is a one-off send to a list or segment, optionally scheduled. The API endpoints are different (/v2/programmes vs /v2/campaigns), and Dotdigital treats them as distinct entities throughout. Triggered campaigns (single-send programmes that fire once per trigger, like a password reset) are a grey area; Vortex IQ classes them as programme revenue.
My Welcome programme is set up but only has 1 step. Should I expand it?
Almost certainly yes. Single-step Welcomes capture roughly 60% of the revenue a 4 to 5 step Welcome would capture; the rest comes from the second and third sends as the contact gets re-exposed and remembers they signed up. The Dotdigital recommendation is 4 steps over 7 days: T+0 (immediate brand introduction + discount), T+2d (best sellers or new arrivals), T+5d (social proof + community), T+7d (urgency or expiring discount).
Why is the 90D window the default? Why not 30D?
Programmes accumulate revenue slowly. A welcome flow signed up today has up to 7 days of programme exposure plus a further 7 days of click-window for revenue attribution. The 30D window can under-state programme revenue if the start of the window is during a low-acquisition period; 90D smooths this. Use 30D for campaign-only views, 90D for the mix.
My Easter campaign sent £58,000 in revenue but the Easter programme only fired 200 times. Is the programme working?
Yes, this is the structural pattern. Programmes target audiences of one with high intent; campaigns blast wide with lower intent. A 200-trigger programme generating, say, £4,000 is healthy at £20 per trigger; a 250,000-recipient campaign generating £58,000 is healthy at £0.23 per recipient. Don’t compare totals, compare per-recipient or per-trigger efficiency.
I’m migrating from Mailchimp. Will my programme share increase?
Probably yes, by 10 to 20 percentage points within the first 90 days, but the credit goes to building proper programmes during migration, not to the platform itself. Mailchimp users typically migrate with 1 or 2 basic automations; a Dotdigital onboarding includes 4 to 6 programmes built by the implementation team. The platform difference is real but the building-during-migration effect is bigger.
Can I see programme share by individual programme?
This card shows the aggregate split. For per-programme contribution use Top Programmes by Revenue (when available) or pull the programme-level summary from Dotdigital’s Programmes → Reports view directly.
My programme share dropped 8 percentage points in the last 30 days, but no programme was paused. What changed?
Almost always a campaign-volume increase, not a programme problem. Check Campaign Sends Trend: if campaign sends jumped (e.g. a tentpole moment), the denominator grew while programme revenue stayed flat, so the share dropped. This is healthy unless the tentpole campaign cannibalised programme conversions, which can happen when a Black-Friday campaign reaches contacts who would otherwise have triggered the abandoned-cart programme later.