$8.14M YTD. 19.9× ROAS. Meta sees 0.70×.
Aqua Pulse Spas is running a $22M annualised retail business on the back of $148K of Meta spend YTD. The platform reports it as unprofitable. A full-population CSV join puts true ROAS at 19.9× — and 28× on a lifetime-value basis. The gap is structural: half of buyers take longer than five months to close, and Meta's longest attribution window is seven days. This report names every leak, ranks them, and identifies the one change that closes the attribution gap.
Eight numbers that change the strategy.
- YTD revenue: $8.14M across 3,020 orders ($2,694 AOV inc freight). Run-rate ~$22M annualised.
- True paid-Meta ROAS: 19.9× matched. Meta's pixel reports 0.70×. The gap is structural, not implementation.
- Median DM → order: 143 days. Meta's longest attribution window is 7 days. Meta can never see this funnel through a pixel.
- $3.4M sits in open Quote + Awaiting Payment — 42% of YTD revenue not yet processed.
- 2025 was the record year ($24.79M). 2026 tracks ~10–15% below 2025's monthly pace. Defend the high; don't extrapolate it.
- 44% of customers come back. Average lifetime revenue $5,334. LTV-adjusted ROAS ≈ 28×.
- Channel of arrival is the strongest close-rate predictor. Website form ~90% > phone > ShopperFly > Messenger.
- Highest-leverage fix: wire RE order data back to Meta as offline conversions. Meta optimises toward purchases, not chats.
Seven stages. Two parallel lanes.
Two channels feed this funnel from the same paid Meta spend: Messenger (high volume, long cycle) and direct website / phone inquiries (low volume, fast close). Only Messenger gets credited inside Ads Manager.
| # | Stage | Definition | System of record |
|---|---|---|---|
| 1 | Ad impression | Meta serves an ad or boosted post | Meta |
| 2 | Click → DM | Click that opens a Messenger thread | Meta |
| 3 | Active conversation | Multi-turn back-and-forth with the page | Page Inbox + lead system |
| 4 | Quote sent | Sales rep proposes a specific spa + price | Retail Express (Quote status) |
| 5 | Order placed | RE order created, awaiting payment | Retail Express |
| 6 | Paid / processed | RE order moves to Processed | Retail Express |
| 7 | Delivered | Spa freighted and arrived at customer | Manual / freight system |
Where the funnel actually moves.
| Transition | Rate | Source |
|---|---|---|
| Click → started conversation | 5.1% | 4,208 conv / 82,421 clicks · Meta |
| Cost per started conversation | $35 | $148K spend / 4,208 · Meta |
| Conversation → matched RE order | 21.1% | 886 of 4,208 · RE × lead match |
| RE order → traceable to Messenger lead | 29.3% | 886 of 3,020 |
| RE order → Processed | 81% | 2,447 of 3,020 |
| Within 7 days (Meta's max window) | 16.1% | of matched orders |
| Within 30 days | 27.2% | of matched orders |
| Median lead → order time | 143 d | p90 = 647 days |
| Same-day close | 0.2% | 2 of 886 |
| True ROAS · matched, all statuses | 19.9× | $2.94M ÷ $148K |
| True ROAS · Processed only | 12.6× | most conservative |
| LTV-adjusted ROAS | ~28× | 1.44× first-purchase multiplier |
The shape of the leak.
The middle of the funnel — conversation → quote → order — is no longer a black box. The shape of the lag distribution is the story: half of matched buyers take longer than five months. Meta's seven-day attribution window is the entire reason reported ROAS is 0.70×.
Where the dollars actually sit.
Revenue by month
| Month | Orders | Revenue (inc freight) | AOV |
|---|---|---|---|
| 2026-01 | 931 | $2.44M | $2,622 |
| 2026-02 | 645 | $1.69M | $2,627 |
| 2026-03 | 622 | $1.58M | $2,533 |
| 2026-04 | 618 | $1.80M | $2,908 |
| 2026-05 (8d) | 204 | $630K | $3,089 |
| YTD | 3,020 | $8.14M | $2,694 |
January is the volume peak — post-Christmas spike. AOV has been rising through April–May as product mix tilts toward higher-ticket configs.
Order-status mix · YTD
| Status | Orders | Revenue | % of revenue |
|---|---|---|---|
| Processed | 2,447 | $4.74M | 58.3% |
| Quote (open) | 465 | $2.80M | 34.4% |
| Awaiting Payment | 105 | $594K | 7.3% |
| Incomplete / Cancelled | 4 | <$1K | 0% |
$3.4M is parked in Quote + Awaiting Payment. The single largest pool of recoverable revenue in the business right now.
Sales rep performance · YTD
| Rep | Orders | Revenue | AOV | Messenger-attributed |
|---|---|---|---|---|
| Hayden | 656 | $3.16M | $4,810 | $1.39M (44.1%) |
| Aiden | 745 | $2.85M | $3,830 | $1.03M (36.2%) |
| Lucas | 582 | $1.03M | $1,774 | $276K (26.7%) |
| Jessica | 199 | $395K | $1,987 | $77K (19.4%) |
| Shopify (online) | 568 | $324K | $570 | $69K (21.2%) |
| Daniel | 137 | $257K | $1,879 | $76K (29.4%) |
| Aydan | 51 | $65K | $1,277 | $7K (11.3%) |
Hayden + Aiden together generate 82% of all Messenger-attributed revenue ($2.42M of $2.94M). Sales-rep capacity on those two is the binding constraint on growth from paid Meta — not ad supply.
Volume / freight context
- Units sold YTD: 7,068 — avg 2.34 units/order (many bundle a spa with accessories).
- Freight: $596K charged on 1,408 orders (47%), avg $424 per freighted order.
- Pricing freshness: freight pricing in the system is ~4 years stale (Hayden's words). Material refresh in scope for week 1.
Seven leaks. One dwarfs the rest.
| Leak | Size | Cause | Action |
|---|---|---|---|
| Attribution leakage Not revenue — measurement | Reported 0.70× vs true 19.9× | 7-day pixel can't see a 143-day median cycle | Wire RE → Meta CAPI offline conversions. Highest-leverage change in the engagement. |
| Open Quote pipeline | $2.80M / 465 orders | Follow-up cadence, freight shock, finance friction | Daily quote-aging report; flag >7d / >14d / >30d |
| Freight quote shock | Whole-funnel friction | Local $400–550, interstate $900–$2,200 | Custom freight app in build. Show price upfront NSW/VIC/QLD; conversation-first WA/TAS/NT. |
| Awaiting Payment | $594K / 105 orders | Stripe / finance / freight friction | Anything >7 days = stuck-deal flag |
| Sales-capacity concentration | Hayden + Aiden = 82% | Two people are the funnel | Grow team or move work to systems (quote auto, opener qualifying) |
| Manual quote send | Hayden time cost | PDF generated locally, emailed to himself, then forwarded | Quote-automation tool — biggest non-Meta time saver |
| Processed → Delivered | Unknown but real | Carrier zone pricing, MachShip routing | Week-1 fix, freight app in build |
Not a leak any more: speed-to-lead (Hayden replies same-day, often by 10am — best in class) and finance (Hum-equivalent already in place; only quote-flow integration remains).
The 7-day window vs the 143-day cycle.
| Window | Matched orders | Cumulative | Visible to Meta? |
|---|---|---|---|
| Same day | 2 | 0.2% | Yes |
| Within 7 days | 143 | 16.1% | Yes — max window |
| Within 30 days | 241 | 27.2% | No |
| Within 90 days | ~480 | ~54% | No |
| Beyond 90 days | ~406 | ~46% | No |
| Median (50%) | 143 d | — | No |
| Long tail (p90) | 647 d | — | No |
Theoretical ceiling: Meta can see at most 16.1% of true Messenger conversions — even with a perfect pixel. Today's reality: 9.6% (85 reported purchases of 886 matched). Meta is also under-reporting by ~40% within its own 7-day window (cross-device, iOS opt-out, server-side dropouts).
The unlock: the only way to recover the 84% Meta can't see is to push order data back to Meta from RE via the offline conversion API (CAPI). That feeds Meta's optimiser the long-tail purchases it has been blind to, so it stops optimising toward "messages started" and starts optimising toward "spas sold."
Once a customer's first order is paid-Meta-driven, the relationship runs forward.
From the full RE history (47,674 orders, 19,537 unique customers since 2014):
- 44% repeat-buyer rate — 8,597 of 19,537 customers have ≥2 orders.
- 2.44 average orders per customer.
- $5,334 average lifetime revenue per customer.
A spa is rarely one-and-done. Parts, chemicals, accessory kits, replacement units form a 44%-of-buyers ongoing relationship.
19.9× first-purchase ROAS × 1.44 effective lifetime multiplier ≈ 28.6× LTV ROAS. Restoring offline conversions to Meta isn't just "fix attribution" — it lets Meta optimise toward customers who spend $5,334 over their lifetime, not $4,557 on their first order.
2025 was the record. 2026 is defending it.
| Year | Orders | Revenue | AOV | YoY |
|---|---|---|---|---|
| 2020 | 4,591 | $12.3M | $2,680 | — (COVID peak) |
| 2021 | 5,112 | $12.3M | $2,405 | 0% |
| 2022 | 4,442 | $8.84M | $1,991 | −28% |
| 2023 | 4,204 | $7.08M | $1,685 | −20% |
| 2024 | 6,133 | $16.67M | $2,718 | +135% |
| 2025 | 8,667 | $24.79M | $2,861 | +49% |
| 2026 YTD | 3,020 | $7.51M | $2,485 | ~10–15% below pace |
2025 was the record year — not the new normal. The real scale-up was 2024 → 2025 (+49%); 2026 is running below that pace in every comparable month except January. That changes the strategic frame for Phase 02: this engagement is about defending the 2025 high, not riding a growth curve.
Geography · YTD
| State | Orders | Revenue | % of revenue |
|---|---|---|---|
| QLD | 1,714 | $3.90M | 51.9% |
| NSW | 583 | $1.69M | 22.6% |
| VIC | 182 | $541K | 7.2% |
| SA | 130 | $388K | 5.2% |
| WA | 56 | $223K | 3.0% |
| ACT | 49 | $148K | 2.0% |
| TAS | 47 | $143K | 1.9% |
| NT | 8 | $26K | 0.3% |
| Cash sale (walk-ins) | 212 | $264K | 3.5% |
QLD dominance confirmed but at 52%, not 60%. NSW is a stronger second than commonly assumed. Targeting and freight zoning should reflect the real distribution.
The 36.2% Messenger figure is only the floor.
Phone and website inquiries also come from people who saw an ad — they just choose a warmer channel to convert. Hayden's warmth ranking, with channel mechanics:
| Rank | Channel | Volume | Close rate | Notes |
|---|---|---|---|---|
| 1 | Website inquiry form | 1–2 / day | ~90% | Hottest. "We close those 90%." |
| 2 | Phone calls | "Heaps" / day | Day-of / next-day | Often inbound from website + ad views |
| 3 | ShopperFly (chat) | Lower than FB | Higher than FB | "They're on our website, ready to buy" |
| 4 | Facebook Messenger | ~3K leads/mo | 21.1% conv | Bulk lane, long cycle |
Strategic implication: the website inquiry form is currently hard to find on the APS site. If even a small share of FB-driven traffic shifted to website-form completions, total close rates would lift dramatically without more ad spend. This is a website-build priority, not a Meta priority.
Ten moves. First three carry the lift.
- Freight app + MachShip integration. Hayden's #1 ask, biggest immediate friction. Build is in progress. Better Shipping (Shopify app) is a fundamental misfit — APS thinks in drive-time radii from outlets, Better Shipping is postcode-only. Real-time MachShip quoting on Shopify checkout is the target.
- RE → Meta CAPI offline conversions. Highest ROAS unlock. RE REST API was provisioned 2026-04-29 specifically for this. Pushes the 84% of purchases Meta can't see back into the ad optimiser.
- Quote-automation tool. Replaces Hayden's manual PDF-to-himself-then-customer flow. Single biggest non-Meta time saver.
- Visible contact form + Messenger handoff on website. Fix the "hard to find" form on every product page; continue Messenger conversations on-site.
- Business Manager setup + page admin migration. Separate Sharyn's personal DMs from page inquiries. Do not let Hayden create a fresh FB account (would trigger spend limits).
- Product comparison tool. "Which spa is right for me" filter on power type (10A/32A) and seat count (4/5/6+). Hayden's explicit ask.
- Messenger opener with 3 quick-replies. Power / Size / Timing. Pre-tiers 80%+ of leads before Hayden touches them. See companion lead-quality report.
- Quote-aging weekly report. Daily/weekly view of the $2.80M parked in open Quote, flagged by age.
- Ad-account moves. Pause Tier D ads (700+ leads, $0 matched revenue), scale Tier A. See companion report.
- PSID capture at quote time. Log the FB user ID against the customer record. Turns name-matching into deterministic attribution. Defer to follow-up call.
Full population. Conservative match.
- Order base: Retail Express REST API, full population. 47,674 orders since 2014; 3,020 active orders YTD 2026.
- Lead base: APS internal lead system export. 57,329 leads since June 2023; 13,346 YTD 2026. 99.6% Source=Paid, 99.9% Channel=Messenger.
- Match key: first-name + last-name normalised exact match between RE bill name and lead-system name, with
lead_created_at ≤ order_invoice_dateto avoid future-leads. - Meta: live API pull via Entangle ops, 2026-05-08.
Caveats
- False positives possible on common names. Using the earliest matching lead surfaces original intent. Spot-check 30 random matches per rep with Hayden recommended to lock the 36.2% figure.
- False negatives where invoice name ≠ Facebook display name (married-name changes, business invoices, partner-name purchases). True attribution is likely higher than 36.2%.
- Lead-system Stage column is unusable — 100% of leads sit at "Intake". Cannot derive in-funnel progression from the lead system itself.
- Lead system count vs Meta conversations (13,346 vs 4,208 YTD) — the lead system logs every ad-message intent the page receives; Meta logs only 7-day-window started-conversation events. Different denominators.
Open verifications
- $730K boosted-post claim — page admin access just granted, awaiting verification.
- PSID capture mechanism — deferred to follow-up call.
