FELDSPAR · ENAMELLED CAST IRON, DTC · $310K/MO ACROSS META, GOOGLE, TIKTOK
of last month's spend produced nothing we could defend.
Found in eleven days: one fatigued creative still carrying a quarter of a budget, two campaigns bidding against each other, and a brand-term campaign taking credit for people who were coming anyway. None of it visible in the platform dashboards. All of it visible in the auction and frequency data, if you go looking.
Feldspar sells enamelled cast iron at a $140 average order. $310K a month of media, three channels, targets set in January when CPMs were friendlier. Blended ROAS 2.34 and drifting down a tenth a month. The question in the founder's message wasn't “is something wrong” — everyone knew — it was which part, and how much. Nobody could answer with a number they'd sign.
Nothing dramatic. Three small leaks — the ledger further down — plus one structural habit: the split was set by average ROAS. Averages are how bad last dollars hide. Meta's average looked best, so Meta got every raise, while its next dollar was returning $0.88. You cannot see that number in any platform UI. It is arguably the only number that matters for a budget decision.
A revenue response curve per channel, fitted from spend history plus two deliberate spend perturbations — you can't fit a curve to a flat line, so we had to talk them into varying spend ±20% for six weeks. The persuading took longer than the maths.
On top of the curves: the reallocation desk below, a waste scanner over raw frequency and auction-overlap data, and geo-holdouts to anchor attribution to something other than platform self-grading.
The flagged $39.4K/mo of waste came down to roughly $6K — some brand-term spend survived the geo test and was left alone. Reallocation added another ~$6K/mo of contribution. The unglamorous ledger rows were worth five times the clever optimisation. Draw your own conclusion about where dashboards point your attention.
Move the money yourself. Total is pinned at $310K — push a channel up and the difference comes out of the other two. Watch the next-dollar figures, not the averages, and watch the band: a forecast quoted as one number is a forecast with the uncertainty amputated.
The band is not decoration. It widens as you move spend away from levels Feldspar has actually bought at — you're close to observed spend, so it's tight. A tool that gives you one number for a forecast is rounding away the part you most need to know.
One rule: keep moving dollars until every channel's next dollar earns the same amount — here, about $1.16 of revenue. Meta's last $32K was returning under $1 at the margin; its average ROAS looked fine, which is exactly how averages cover for bad last dollars. TikTok was the opposite — starved on the steep part of its curve. That's the whole recommendation. If a tool can't show you this reasoning, you're getting an instruction, not a recommendation, and you shouldn't follow either blindly.
FINE PRINT: THIS MAXIMISES REVENUE AT A FIXED $310K. IF THE GOAL WERE MAXIMUM CONTRIBUTION, THE HONEST TOTAL IS ~$210K/MO — AT 62% MARGIN THE LAST TRANCHE OF BUDGET IS GROWTH SPEND, NOT PROFIT. NOBODY IN GROWTH MODE WANTS THAT NUMBER. IT STAYS IN THE MODEL ANYWAY.
Reallocation is the part people ask for. This is the part that pays for the engagement. Three line items, each one boring, each one invisible to a dashboard that only ranks campaigns by ROAS.
UGC-04 (“cast-iron sear, kitchen counter”) still carries 24% of the ASC budget.
Frequency 6.1. CTR down 54% over 21 days. Every person this ad could convince has seen it six times.
FIX → Kill it. The three variants shot in March test above it at a third of the frequency.
The Advantage+ campaign and the retargeting stack share 41% of their audience.
Two campaigns from the same account, bidding on the same people, in the same auctions. Meta happily charges for both sides.
FIX → Exclude purchasers + ASC reach from the retargeting stack. One afternoon of work.
Exact-match brand campaign buys clicks on “feldspar cookware”.
68% of those queries showed the organic result in position 1. Last-click gives this campaign an 8.1 ROAS, which is why nobody ever turns it off.
FIX → Geo-holdout for two weeks, keep only the incremental share. Expect a fight about it.
TIKTOK: NOTHING FLAGGED. THE PROBLEM THERE IS UNDERFUNDING, NOT WASTE — SEE THE CURVE ABOVE.
Last-click and modelled attribution disagree about every channel on this page, and both are shown because pretending otherwise would be easier and wrong.
| CHANNEL | LAST-CLICKwhat the platform reports | MODELLEDMMM + geo-holdout | WHY THEY DISAGREE |
|---|---|---|---|
| Meta | 1.9 | 2.4 | Last-click misses everyone who saw the ad, thought about it, and searched later. |
| Google · brand | 8.1 | 1.3 | Takes credit for people who typed the brand name. They were already coming. |
| Google · non-brand | 2.2 | 2.5 | The two methods roughly agree here. Enjoy it; it's rare. |
| TikTok | 0.9 | 2.0 | Almost nobody clicks a TikTok ad and buys in the same sitting. Doesn't mean it did nothing. |
Neither column is the truth. Modelled numbers move slowly and have their own assumptions baked in; last-click is precise about a thing that isn't quite what you want measured. Our rule at Feldspar: modelled for budget moves — where a channel's money should live is a question about incrementality — last-click for kill decisions inside a channel, where you're comparing like with like and the bias mostly cancels.
Anyone who tells you their dashboard shows the real ROAS is selling you the dashboard.
Three situations where we'd tell you not to hire us for this, in the first call, for free.
A response curve is identified from variance in spend, and under about $40K a month there isn't enough of it. The fit will still run — fitting software always runs — and the parameters it returns will be fiction with error bars. At that size the ledger rows above are the whole job. Do them in a spreadsheet and keep the fee.
A reallocator needs somewhere to reallocate to. If you're all-in on Meta, the honest questions are creative, offer and landing page — none of which this model touches. A second channel is sometimes the right answer, but that's a strategy conversation, not a slider.
If the pixel double-fires, or the backend and the platforms disagree by 30%, the model fits the noise — with total confidence, which is the dangerous part. Feed first, model second. We check this before invoicing, because a curve fitted to a broken feed is our name on someone else's mistake.
If you spend across three platforms, somewhere in your account a last dollar is earning less than a dollar — and somewhere else a starved curve is still steep. Feldspar is invented; the method — response curves, a waste scan, geo-anchored attribution — is what we build on real accounts. Send the monthly figure and the channel list, and we'll tell you what we'd look at first.
SEND THE FIGURE →contact@gopivotedge.com