Black Forest · Email & SMS

What to do about it

11 actions, ranked, every one traced to a measured finding in the KPI pack. Sizes are measured, not estimated, except where the item says otherwise.

How to read this. Click any item to open it. Each one carries what it is worth, what it costs, and the panel in the KPI pack that proves it.
Do this week

These are cheap and the evidence is unambiguous.

1
Discount depth is rising faster than revenue
+8.8 points of discount since Jul 26, $207,798 in Sep 26 alone
A pricing decision · Whole team

Measured from Shopify order records against each variant's unit cost: discount depth went 26.5% to 35.3% between Jul 26 and Sep 26, and gross margin fell 75.0% to 72.4%. On Sep 26's revenue those extra points are $207,798 of margin given away in one month. Revenue grew over the same period, so the top line reads well while the margin behind it does not. This is the same shape as campaign revenue per recipient falling while reach rises: more volume bought at a worse rate.

  1. Check what share of promotional sends carry a discount code at all, and at what depth.
  2. Set a floor on discount depth per campaign and measure gross profit per send, not revenue per send.
  3. Compare margin on subscription orders against one-off orders before discounting either further.
Evidence: Margin on what the channel earns
2
Restart the flows that stopped sending
$15,172 a month, $182,067 a year, already earned and now at zero
A morning · Email & SMS

3 flows were earning last window and sent nothing this one: Abandoned Cart 2026 [Retention] (email, $5,099); [BFS][SMS] Abandoned Checkout (sms, $4,645); Browse Abandonment (2026) [Retention] (email, $2,216). A further 4 carry send steps and short delays yet have produced nothing in 30 days, worth $3,213 the month before: [BFS] Generic — Reorder Flow (legacy); NMN NAD+ LP Ebook Orders; [BFS] Post-Purchase Educational — NMNH; Berberine LP - 1 Day Detox Ebook Purchasers. This is not a performance problem, it is machinery that stopped. Five flows produce 60% of all flow revenue, so one broken trigger is a material revenue event.

  1. Check each stopped flow for a trigger that no longer matches, a filter that excludes everyone, or a disabled send step.
  2. Fix the highest-value one first: Abandoned Cart 2026 [Retention]
  3. Add a standing alert: any flow whose recipients fall to zero after a month above zero.
Evidence: Flows that are live but sent nothing
3
Campaign returns per recipient are falling while reach rises
Revenue per recipient $0.348 to $0.173 over twelve months
A planning decision, then a test · Email & SMS

Across the twelve months to Sep 26, campaign recipients went from 2,007,141 a month to 2,302,178 while sends to 20,000 or more recipients held at 10 to 13 a month, and revenue per recipient went from $0.348 to $0.173, -50%. Open rate fell from 43.6% to 37.2% over the same span. Total campaign revenue still rose because reach grew faster than the per-recipient return fell; reach is the only thing holding the line. This is the largest measured trend in the pack and no other item on this list changes it.

  1. Hold reach flat for one month, same audiences and no expansion, and measure revenue per recipient against this baseline.
  2. Segment by engagement recency before adding sends, rather than mailing the same base more often.
  3. Treat the twelve-month table as the scoreboard for this, not any single week.
Evidence: Campaign performance
4
Make the backup account's re-engagement count in the main account
6,808 people back into the mailable base
Half a day · Klaviyo

The April to June re-engagement worked: 7,660 people opened or clicked. Only 816 of them read as engaged here, because the suppression segment is built on this account's own open and click metrics and the backup account has its own. 6,808 people who demonstrably came back are still being suppressed from every send. Sampling both groups confirms the mechanism: of those released, 88% had opened an email in the main account and 32% had placed an order, so a purchase does release them automatically. Of those still held, none had done any of the three.

  1. Write a custom event, say Re-Engaged Offsite, into the main account for everyone on the recovered list.
  2. Add that event as an exemption on the unengaged segment so it releases them.
  3. Run the next re-engagement from the main account instead, or repeat the write-back each time.
Evidence: Re-engaging the suppressed pool
5
Cap SMS send frequency before the next promo
2,564 opt-outs came from one six-day sequence
A policy decision, no build · Email & SMS

5,463 of July's 6,256 SMS opt-outs were people replying STOP. 2,564 of them came from the Independence Day series alone: six sends in six days, with the same message split into separate morning and afternoon versions. August repeated the shape with Black Seed Oil split three ways. The list has shed 10,531 people since the migration and this is the largest single cause.

  1. Set a ceiling of one SMS per subscriber per day and no more than three or four a week.
  2. Stop duplicating a send into morning, afternoon and night variants against the same audience.
  3. Treat the migrated cohort gently; they carry 71% of the churn and were signed up at a much lower cadence.
Evidence: Why the unsubscribes arrived all at once
6
Turn off Postscript's automations; leave its campaign sending alone
372 automation clicks, 1 July to 2026-08-28, on flows Klaviyo already runs
Toggles in Postscript · Email & SMS

Postscript stays installed on purpose for manual campaign sends, and that part behaves: 4,269 of the 4,659 link clicks since 1 July are Campaign. But 372 are Automation, and every automation still firing is one Klaviyo also runs: Browse Abandonment, Abandoned Cart, Welcome Series, Abandoned Checkout. Those are clicks, not sends, so the send volume behind them is several times larger, and the same person can sit in both. This count covers 1 July to 2026-08-28, which is where the Postscript click export stops; it is not evidence about the days since. There are also 17 pop-up clicks, so a Postscript pop-up is still live somewhere.

  1. Switch off Browse Abandonment, Abandoned Cart, Welcome Series and Abandoned Checkout in Postscript; Klaviyo runs all four.
  2. Switch off the PS OB automations: Order Shipped, Customer Win-Back, Product Added to Cart, Loyalty Offer.
  3. Find the remaining Postscript pop-up and retire it, since STUCB3 does that job now.
  4. Leave campaign sending exactly as it is.
Evidence: Why the unsubscribes arrived all at once
Next two to four weeks

Bigger builds, all with a measured size attached.

7
Run the SMS gap recovery
5,850 reachable, 585 to 760 likely sign-ups
One page plus two emails · Email & SMS

9,049 people tried to opt in to SMS between 21 June and 18 August and 70% never landed consent. 4,830 of them never had a number captured at all, so no phone-based segment can see them. These people walked up and pressed the button, which is a stronger signal than anything else in the recoverable pool.

  1. Move the claim page off vercel.app onto a brand domain before sending anything.
  2. Pilot to 1,000 weighted to existing customers, then the rest.
  3. One dedicated email and one reminder, kept clear of promotional sends.
Evidence: Where the non-confirmers sit
Full gap recovery report →
8
Make the audience measurable: three segments, and capture by form
Neither the sendable gap nor buyers-by-source can be reported today
An hour in Klaviyo, then it is free · Klaviyo

Total profiles, never-consented, suppressed-for-bounces and suppressed-for-complaints are not readable from this account today, so the gap between the list we have and the list we can send to cannot be stated. The segments that look like they would answer it do not. EVERYONE has a definition identical to CAN RECEIVE EMAILS, both being can_receive_marketing true, so reading it as a total reports the mailable count as the denominator and makes the gap vanish. Bounced, HARD BOUNCES and Spam all count metric events rather than suppression state, and an event is not a suppression. Reading segment counts is cheap once they exist: eight profile_count calls return in about thirty seconds.

  1. Create a segment with no consent condition at all, as the real denominator.
  2. Create a never-consented segment on email consent status never_subscribed.
  3. Create suppressed-by-reason segments from the suppression reason, not from bounce events.
  4. Rename EVERYONE so nobody reads it as a total again.
  5. Report SMS opt-ins by form id monthly, so a capture surface producing nothing becomes visible.
  6. Join each signup event's method to that profile's first order, so buyers can be reported by the surface that captured them; today no data links the two.
Evidence: Totals
9
18 of 26 reorder flows are shrinking, median -27%
$17,948 a month lost across the shrinking flows
A review, then a rebuild · Email & SMS

18 of the 26 reorder flows live in both windows fell, median -27%, together $17,948 down. The group total looks nearly flat only because a few risers offset them, so the headline hides the breadth. Reorder, Skip-Save and Subscribe & Save are 63 of the 90 flow rows and 26% of flow revenue, at $0.394 per recipient against $0.976 everywhere else. The flows still sending reached +10% more people for -23% per recipient against the prior 30 days, so the block is being sent harder and returning less. The cohort is colder than an abandoned-cart audience by nature, so it will never match, but the direction is the campaign problem repeating inside the flow estate.

  1. Check the reorder interval against actual repurchase timing per product rather than a fixed delay.
  2. Stop expanding the audience while revenue per recipient is falling; hold it and measure.
  3. Retire the legacy reorder flow for any product now covered by a Subscribe & Save second wave.
Evidence: Reorder and Subscribe & Save
Needs a decision before work starts

Not tasks yet; the answer changes what we build.

10
The open-rate decline is inside the engaged group
Unique campaign open rate 43.6% to 37.2%, Nov 25 to Sep 26
A test, not a query · Email & SMS

Anyone with no open or click in 180 days is already excluded from most sends, so the fall is not dead weight dragging an average down. It is happening among people who were engaged, which points at content, frequency or inbox placement.

  1. Re-test the 180-day window: is it still the right cut, and does a slice of the suppressed group pay?
  2. Check frequency against the engaged cohort specifically, the way we did for SMS.
Evidence: Open rates, decline rates, bounce rates
11
The imported affiliate addresses are consented, and we are mailing them
9,581 of 11,428 carry SUBSCRIBED consent
A decision · Email & SMS

Checked, not assumed: 9,581 of the 11,428 profiles on the TikTok affiliate list hold email marketing consent of SUBSCRIBED, timestamped to the 2026-04-07 upload itself rather than to any form submission. The other 1,847 have since unsubscribed. So they are consented in Klaviyo's eyes, they are in the mailable base, and they sit inside every rate on the KPI page.

  1. Decide whether consent set by an import is consent we are willing to mail on.
  2. If yes, tag them so they can be reported separately and never quietly move the account averages.
  3. If no, suppress them; that also lifts every rate the pack reports.
Evidence: Why April spiked, then fell