Skip to main content

Meta and Facebook ads agency for B2B SaaS, startups and ecommerce

Experiment C-10 · hook testday 4 of 7 · judged on spend-weighted CACsample · illustrative

Cell Athe hook that’s live · you’re reading it

Meta ads management: fresh creative every cycle, clean signal behind it.

Meta automated the targeting. Results now come from the two levers left: the signal you feed the system, and how many genuinely different concepts you give it to test. We run both, end to end.

It starts free: we read your account and write you three new ad concepts in five business days.

Cell Bthe board it came from · next hooks queued

A sample creative cycle: three ad concepts with angle, hook and format, one scaling, one testing, one killed, above a signal-health row showing event match quality and deduplication checks.
Concept board · this cycle
Illustrative
  • C-07 · Objection: “too expensive”SCALING

    “The price is the reason it works.”

    Founder to camera · beat control on spend-weighted CAC, budget shifted in

  • C-08 · Enemy: the old wayTESTING

    “Your spreadsheet is doing this job badly.”

    Static · 3 variants · in learning, judged at 7 days, not on day 2

  • C-09 · Proof: the before/afterKILLED

    “Watch the same task, twice.”

    Screen demo · 45s · hook rate fine, holds died at 3s. Logged, next angle queued

Signal · EMQ target 7.0+Pixel + CAPI deduped8 to 12 concepts / cycle
Get your three free concepts
Back in 5 business days

A senior replies within one business day. Mutual NDA before access, and you keep every file.

Winners scale. Losers die at day 7. Your account runs this test every cycle, 8 to 12 concepts at a time.

Free, in 5 business days · Read-only access · Mutual NDA · You own the Business Manager and every file

What’s in the retainer

Four stations. The whole loop, run for you.

Meta ads run as a learning loop, and these are its four stations, itemised. A senior owns and signs the account, a specialist team produces the creative, and you keep the Business Manager, the dataset, and every file.

Signal and tracking integrity

What you tell Meta happened is what it optimises toward. We make that signal true.

  • Event Match Quality raised against a 7.0+ target
  • Pixel and Conversions API deduplication verified
  • CRM and offline events fed back into the account
  • Optimisation events aligned to revenue, not form fills

Campaign structure and delivery

A consolidated structure that gets out of the algorithm's way instead of fighting it.

  • Account consolidation and learning-phase discipline
  • Advantage+ configured with an existing-customer budget cap
  • Suppression lists applied as hard exclusions
  • Audience overlap found and resolved

Creative operations

The volume of genuinely different ideas the system needs, produced on a schedule.

  • 8 to 12 conceptually distinct concepts per cycle
  • 2 to 3 variants per concept
  • Tested angle first, then format, then hook
  • Winners iterated on a 7 to 14 day refresh

Measurement and incrementality

Reporting against your books, so in-platform ROAS never gets the last word.

  • Blended MER and new-customer CAC
  • Contribution margin, not platform ROAS alone
  • Geo holdout tests when you need a causal read
  • Reported monthly against your own numbers

Month to month, scoped from what the Learning Teardown finds as a custom quote. No long contract, and nothing we build is locked to us.

Get my three free concepts

What actually happened

It worked. Then it stopped. Nobody could tell you why.

The winning ad from March is dead. CPMs drifted up. Blended CAC crept past the line in some month nobody can point to. The usual explanations are iOS, the algorithm, or the market. None of them are checkable, which is the problem.

Here is what is usually true instead: the account is spending fine. It is learning badly.

How Meta actually works now

Meta is a learning system. Most accounts are teaching it the wrong things.

Targeting is no longer a lever. Detailed targeting was consolidated in 2025 and exclusions were removed, so the only hard constraints you still control are location and minimum age. Everything else you enter is a suggestion. Meta now matches individual creatives to individual people, which means two things decide your results: the quality of the outcome data you send back, and how many genuinely different ideas you give it to test.

The loop, station by station

  1. 01
    SIGNAL

    What you tell Meta actually happened.

  2. 02
    LEARNING

    What Meta concludes about who is worth showing you to.

  3. 03
    CREATIVE

    What Meta has available to show them.

  4. 04
    RESULT

    What comes back, and whether you can trust the number.

  5. Back to signal

When the loop is clean it compounds. When any station is broken it decays quietly, and the dashboard keeps reporting green.

The learning loop
Illustrative
Four stations, one direction
01020304
Loop state

Decaying

return arc broken

01 SIGNAL

Event match quality

EMQ 4.2

02 LEARNING

Optimisation event

optimising to the wrong event

03 CREATIVE

Distinct concepts live

3 concepts live

04 RESULT

Reported against your books

reported 2.1x / actual unknown

  • Healthy
  • At risk
  • Broken

A clean loop compounds. A broken one decays quietly, because the reporting stays green while the return arc is open.

Illustrative composite of the pattern we open most often. Not a real client, and no client numbers appear anywhere on this page. Each readout is a check the Learning Teardown actually runs.

Two platforms, two different leaks

Google wastes your money on the wrong searches. Meta wastes it learning from bad information.

Station one

What Meta can actually see.

Meta optimises against the outcomes you report. If half of them never arrive, or arrive twice, the system optimises hard toward a fiction. This is the most common and most expensive problem we find, and it is invisible in Ads Manager.

Signal panel
2 fail · 2 warnIllustrative
  • 01Event Match Quality

    Purchase event

    Fail

    About four buyers in ten are matchable at this score.

    Measured
    4.2
    Threshold
    7.0+
  • 02Browser and server dedup

    Pixel against CAPI

    Fail

    Under 70 percent the same event is double counted or lost.

    Measured
    38%
    Threshold
    70 to 100%
  • 03The optimisation event

    What the account bids toward

    Warn

    Optimising two steps before the money changes hands.

    Measured
    Add to cart
    Threshold
    Qualified pipeline
  • 04Attribution window

    Reported against real

    Warn

    The window closes 55 days before the median sale.

    Measured
    7-day click
    Threshold
    62-day median cycle
Reported vs your booksSame 30 days
Meta reported
312conversions
2.1xreported ROAS

184 matched, 128 with nothing behind them

Recorded in Stripe
184orders
Unknowntrue ROAS

Drawn on the same scale

The gap is 128 conversions, 41 percent of everything Meta reported. Until those two counts agree, the ROAS in Ads Manager is not a number you can take to your accountant, and the model has been learning from the difference.

A composite account, assembled from the ones we open most often. Not a real client, and not a promised result. Every threshold on this panel is one we publish and score against, so you can check the reading yourself.

The four checks, and the threshold each one is scored against

Published in advance

  • 01

    Event Match Quality

    ThresholdEMQ 7.0+

    Target 7.0+. At EMQ 4 the model is effectively seeing about 40 percent of your buyers. Usually fixed by sending phone, external ID and the click identifiers, not just email.

  • 02

    Browser and server deduplication

    Threshold70 to 100%

    Target 70 to 100 percent. When event_id and event_name disagree across pixel and CAPI, dedup fails silently and you either double count or lose the event.

  • 03

    The optimisation event

    ThresholdPurchase or qualified pipeline

    The model does exactly what you ask. Optimise for Add to Cart or raw Lead and it will find people who do that cheap thing and never buy.

  • 04

    The reported number vs the real one

    ThresholdReconciled against your books

    We reconcile Meta against Shopify, Stripe or your CRM. Platform-reported ROAS commonly runs well above de-duplicated reality.

These are published in advance so the teardown is checkable rather than an opinion. You can hold the reading on your own account against every one of them.

What changed in 2026
12 Jan 20263 Mar 2026

If your reported numbers fell off a cliff this year and nothing else changed, that was probably not your performance. On 12 January 2026 Meta removed the 7-day and 28-day view attribution windows. On 3 March 2026 it redefined click-through to require an actual link click, moving likes, saves and video views into a separate 1-day engage-through bucket. When defaults tighten, reported conversions drop even where sales did not, worst in long-consideration categories. This part rarely gets explained. It is checkable in your account in about ten minutes.

ATTRIBUTION WINDOWSSTATUS1-day clickKEPT7-day clickREDEFINED1-day viewKEPT7-day viewREMOVED28-day viewREMOVED1-day engage-throughNEW01d7d28dWindow length, axis not to scale

Station two

What Meta is being asked to sell.

Meta retrieves creatives, not audiences. Your creative library is the closest thing to targeting you still control. Which turns the whole thing into an arithmetic problem, not a talent problem.

Concept board · cycle 07 · 20 testedIllustrative
  • Scaling 1
  • Fatiguing 2
  • Retired 17
Hook / hold / outbound CTR, percent
  • Concept C01. Time saved. Format Static. Hook rate 14.2 percent, hold rate 3.1 percent, outbound click through rate 0.38 percent. Status retired.
  • Concept C02. Switch from spreadsheets. Format Static. Hook rate 11.8 percent, hold rate 2.4 percent, outbound click through rate 0.29 percent. Status retired.
  • Concept C03. Founder to camera. Format UGC. Hook rate 18.6 percent, hold rate 4.7 percent, outbound click through rate 0.52 percent. Status retired.
  • Concept C04. Objection: too expensive. Format Static. Hook rate 16.1 percent, hold rate 3.9 percent, outbound click through rate 0.61 percent. Status retired.
  • Concept C05. Before and after the handover. Format Motion. Hook rate 21.4 percent, hold rate 5.2 percent, outbound click through rate 0.47 percent. Status retired.
  • Concept C06. Feature tour. Format Carousel. Hook rate 9.7 percent, hold rate 1.8 percent, outbound click through rate 0.22 percent. Status retired.
  • Concept C07. Time saved, with the number. Format UGC. Hook rate 33.9 percent, hold rate 12.4 percent, outbound click through rate 1.82 percent. Status scaling, earning more budget.
  • Concept C08. The integrations wall. Format Carousel. Hook rate 10.4 percent, hold rate 2.1 percent, outbound click through rate 0.31 percent. Status retired.
  • Concept C09. The ticket nobody answered. Format UGC. Hook rate 24.8 percent, hold rate 6.1 percent, outbound click through rate 0.58 percent. Status retired.
  • Concept C10. Pricing, stated plainly. Format Static. Hook rate 26.3 percent, hold rate 8.4 percent, outbound click through rate 0.96 percent. Status fatiguing, past its efficient life.
  • Concept C11. A day in the queue. Format Motion. Hook rate 19.2 percent, hold rate 4.4 percent, outbound click through rate 0.4 percent. Status retired.
  • Concept C12. Objection: migration is painful. Format Static. Hook rate 15.5 percent, hold rate 3.6 percent, outbound click through rate 0.55 percent. Status retired.
  • Concept C13. Team of one. Format UGC. Hook rate 22.1 percent, hold rate 5.5 percent, outbound click through rate 0.63 percent. Status retired.
  • Concept C14. Shock cut opener. Format UGC. Hook rate 41.2 percent, hold rate 3.2 percent, outbound click through rate 0.18 percent. Status retired.
  • Concept C15. Us versus the spreadsheet. Format Carousel. Hook rate 20.7 percent, hold rate 7.2 percent, outbound click through rate 0.88 percent. Status fatiguing, past its efficient life.
  • Concept C16. Two tabs, one tool. Format Static. Hook rate 13.4 percent, hold rate 2.8 percent, outbound click through rate 0.34 percent. Status retired.
  • Concept C17. The spreadsheet breaks. Format Motion. Hook rate 28.4 percent, hold rate 5.8 percent, outbound click through rate 0.42 percent. Status retired.
  • Concept C18. Founder answers a bad review. Format UGC. Hook rate 17.3 percent, hold rate 4.1 percent, outbound click through rate 0.36 percent. Status retired.
  • Concept C19. Objection: my team will not adopt it. Format Static. Hook rate 12.6 percent, hold rate 2.9 percent, outbound click through rate 0.33 percent. Status retired.
  • Concept C20. The receipt. Format Static. Hook rate 23.5 percent, hold rate 6.4 percent, outbound click through rate 0.71 percent. Status retired.

C14 has the highest hook rate on this board and it is dead. It stopped the scroll and lost everyone at the click. C07 is the only concept in the cycle earning more budget.

Iterations off C071 of 3 beat the parent
Concept C07. Time saved, with the number. Format UGC. Hook rate 33.9 percent, hold rate 12.4 percent, outbound click through rate 1.82 percent. Status scaling, earning more budget.
  • Concept C07.a. New hook, the invoice. Format UGC. Hook rate 38.1 percent, hold rate 14.6 percent, outbound click through rate 2.14 percent. Status scaling, earning more budget.
  • Concept C07.b. Same script, static frame. Format Static. Hook rate 22.4 percent, hold rate 6.9 percent, outbound click through rate 1.06 percent. Status fatiguing, past its efficient life.
  • Concept C07.c. Read by the founder. Format Motion. Hook rate 18.8 percent, hold rate 4.3 percent, outbound click through rate 0.44 percent. Status retired.

Same concept, new hook and new format. Iterating off something already proven is not the same bet as a cold idea, which is why the winner is the asset and the ad is only the current expression of it.

Fatigue curve · one conceptIllustrative
  • Outbound CTR
  • CPM
Frequency, 7 day
Outbound click through rate and CPM at three points on the frequency band
FrequencyOutbound CTRCPM
1.51.74%$18.90
2.51.21%$22.60
4.00.68%$31.90
  • At 2.5 the outbound click through rate is already down about a third from where it started, and the CPM has begun to climb.
  • At 4.0 the concept is past its efficient life. You are paying an inflation premium to keep showing it. Refresh it or cut it.

Our standard on prospecting: frequency at or below 3 per 7 days.

  • 1 in 20
    New concepts that become a winner
  • 1 to 2%
    Share of ads taking about half the spend
  • 1 per $3,000
    New ads per month of spend, the benchmark
  • 7 to 14 days
    Refresh cadence before a concept burns out

Plan on roughly one in twenty new concepts becoming a winner. The top one to two percent of ads take about half the spend. So five new ads a month produces approximately nothing, and forty produces two winners. The benchmark is one new ad per three thousand dollars of monthly spend, refreshed every seven to fourteen days, because concepts that used to last six weeks now burn out in two or three.

A composite board, not a real client. Every figure on it illustrates the shape of a testing cycle, not a promised result.

Most accounts we audit are shipping four or five new ads a month. We will tell you exactly how many yours shipped, which of them are past their efficient life, and write you the next three.

Get my three conceptsor keep reading to see how we report

What we produce in a cycle

Eight to twelve conceptually distinct concepts per cycle, two to three variants each. Distinct means a different angle, format or hook. Three colourways of the same ad is one concept, not three.

One cycle, drawn to scaleIllustrative

Ten distinct concepts, three variants each. Thirty assets shipped in a cycle, against the four or five a month most accounts manage.

The order we test in

Angle first, because it has by far the widest variance. Then format. Then hook. Production polish last, and it is routinely inverse-correlated with performance.

Spread in outcomes, by leverIllustrative
  • 01Angle
  • 02Format
  • 03Hook
  • 04Polish

Hook rate and hold rate are diagnostics, not goals. You can buy a great hook rate with a fake scroll-stopper and destroy everything downstream. We read the shape of the funnel, not one number.

How we report

The number in Ads Manager is not the number in your bank.

In-platform ROAS is a delivery-optimisation readout. It is useful for comparing two ads to each other in the same account on the same day. It is not comparable across months where Meta changed a window, and it is not comparable to your accountant. We optimise against it because the system trains on it, and we report to you on blended MER, new-customer CAC and contribution margin. If you want to know whether Meta is actually incremental, that is a geo holdout, and it takes three weeks.

The read-outTwo numbers

Optimised against

In-platform ROAS

Reported to you

  • Blended MER
  • New-customer CAC
  • Contribution margin
IncrementalityGeo holdout · 3 weeks

The refusals

What we will not do.

  • 01

    We will not guarantee a ROAS or a lead count.

    A number promised before anyone reads your account is a guess.

  • 02

    We do not charge a percentage of your ad spend.

    We are never paid more for telling you to spend more.

  • 03

    We will never ask you to run ads from our ad account.

    You own the Business Manager, the dataset and every audience.

  • 04

    We will tell you when Meta is the wrong channel for you, before you pay us.

Who this is not for

Two cases where you should not hire us.

Over $300,000 / mo

You are spending more than roughly $300,000 a month.

At that level you can afford a buyer, a creative strategist and an editor in house, and in-house will beat us on attention. Hire them.

50 events / ad set / week

Your budget is small and your target cost per acquisition is high.

An ad set needs roughly fifty optimisation events a week to leave the learning phase. If your target CPA is $250 and your budget is $3,000 a month, Meta cannot stabilise on your real conversion event, and no agency can fix that with cleverness. Fix the offer or the funnel first, or start on a channel that harvests existing demand.

We would rather say this now than take three months of your money to arrive at it.

Get your teardown

Find out what your account is actually learning.

Five business days. A senior goes through your signal layer and your creative library, reconciles what Meta reports against what your business recorded, and sends back a ranked fix list plus three new ad concepts written for your brand. Free, and yours to use whether you hire us or not.

What we need

view-only partner access to your Business Portfolio, on the ad account, the dataset in Events Manager, your catalog if you sell products, and your Page and Instagram. Plus your own numbers, because no cost per acquisition means anything without your margin. You grant it in a few clicks and revoke it in one.

  • Ad account
  • Dataset (Events Manager)
  • Catalog, if you sell products
  • Page and Instagram
  • Your own numbers
What we can do without access

review your live ads from the public Meta Ad Library against your three closest competitors, and check your landing pages and whether your pixel fires correctly. That is genuinely useful and it is not an audit. We will not call it one.

Get my three free conceptsETA · 5 biz days

Capacity is limited on purpose: seniors do the work, so we take a few new engagements at a time. The audit is how we choose.

Five business days. Mutual NDA before access. You own the Business Manager and keep every file.

Cost of delay

Your current winners are already decaying. That is not a sales tactic, it is how the auction works now: concepts that used to run for six weeks burn out in two or three, and the ones still running are costing more each week to serve. The teardown tells you which of yours are past their efficient life, and gives you three replacements to put in.

Before you send access
Do I own the ad account?
Yes, always. We are added as a partner to your Business Manager and assigned view or work access on specific assets. We will never ask you to run ads from an account we own. If you leave, we remove ourselves within 24 hours and hand back the creative files, the testing log and the briefs.
What happens if Meta restricts our ad account?
We have a written process for it, and it is a real risk in 2026 rather than a hypothetical. Because the assets are yours and we work as a partner, a restriction on our side never touches your account, your dataset or your history.
Can Advantage+ not just do this for free?
Advantage+ is genuinely good at allocation and blind to incrementality. It also depends entirely on the quality of the outcome data you feed it, which is the part it cannot fix for you. Automation with a broken feedback loop optimises confidently toward the wrong thing.
Who runs my account day to day?
One senior owns it and signs off on everything that ships, with a specialist team on production. No rotating account manager and no junior learning on your budget.
What does it cost?
Not a percentage of your ad spend, ever. Scoped from what the teardown finds, month to month, no lock-in. The teardown itself is free.
You are new. Why should I trust you?
You should not yet. That is why the first thing is a free teardown on your own account, under NDA, with no commitment, and why the standards we hold ourselves to are published above rather than described.

Rather talk first? Book a 30-minute call with the senior.

3 free concepts · 5 days

Read from your account, written for it

Get my concepts