THE SET UP

<aside> 💡

TLDR: Meta ads work better when Meta knows who is buying your product. So the strategy is:

  1. Fix the tracking so Meta gets clean customer data.
  2. Don’t trust Meta blindly because Meta wants spend, not efficiency.
  3. Control placements so ads only show where people actively want to them.
  4. Keep campaigns re-exploring so Meta keeps finding fresh buyers.
  5. Retarget only real intent instead of wasting money on weak audiences.

The whole system is built around one idea:

Do not let Meta guess. Feed it better data, control the spend, test individual variables, and keep forcing it to find better buyers.

How to set up:

</aside>

  1. ATTRIBUTION.

    When you run standard ads, Meta's standard/CAPI tracking pixels gets blocked by Safari, and ad blockers — so it loses track of most people who click your ads and can't tell which ones actually bought post iOS 14.

    1. GOAL: A setup that bypasses blocks by enriching data through your own server and append real identity info (like email and phone) to unknown users, so Meta can serve your offer/ads to actual people. Not bots and not blindly.
    2. OUTCOME: The result is Meta's ad algorithm gets a much clearer picture of who's buying, so it spends your money finding more people like them instead of running in the dark.
    3. VISUAL / HOW: SEE IMAGE HERE
      1. Tech Stack
        1. FRAMER or SHOPIFY for your landing page (top of funnel).
        2. Customers.ai to populate data enrichment without collecting any data.
        3. Stape.io for server to store cookie data longer than 14 days.
        4. Google Tag Manager for data tagging on both server side and browser side.
        5. Vercel for Web-hook/ connecting the customers.ai data to your unknown click data, so Meta can read correctly.

laurel-capi-pipeline.jpg

  1. DON’T TRUST META.
    1. Meta’s primary source of income is ‘rent’ spend from businesses (Adverts). They have a complex system that balances taking as much money from you AND giving you just enough success to keep coming back.
      1. CAPI Event Matching. in Events Manager, is your Pixel’s EMQ above 6.5? If not, that's the first fix so your pixel knows who is clicking/buying.

      2. AD Frequency Ratings. First red flag if your campaigns are above a 1.7. That means your ad is being shown to the same person 2X or more, who already swiped away in the first place. Don’t waste any ad money on someone who doesn’t want your product.

      3. Meta’s Swarm System.

        1. We’ve all seen how this works, when you deviate from your normal feed and engage with an advertisment or search for something outside your ‘meta feed personality grouping’ — you’re swarmed with ads of the same cross product, which Meta believes you're now High Intent (which most of the time is after a purchase or in error of standard browsing behavior)
          1. You don’t want to be in that swarm delivery, that’s how Meta charges higher bids per user — its qualifying the user as a high intent lead, when there’s not much data to show intent other than user interaction.
            1. Don’t listen or allow any of Meta’s forced placements, or campaign structures that make decisions for you. Its targeted to take as much money as possible. Think about user intent first.
            2. If a user is on Marketplace, they are looking for something inexpensive and specific. Not something new.
            3. If a user is on Facebook, looking at their notifications, branded notifications are quickly ignored.
            4. don’t buy all real estate. Only bilboard where your audience is, stories, feed, reels, etc.
      4. Learning Status. Game-ify the system.

        1. There are millions of users daily on Meta. There’s no such thing as ad fatigue, just current audience fatigue.
        2. As a user, when you post the same piece of content at different times of the day, some posts soar, some flop, and there’s no accountability/ reason as to why one worked and one didn’t.
        3. Learning Phase Exit = Worse Performance: This Is a Known Pattern. The advertisement is just like a post and if the wrong people engage with it as it goes live, the algo will start webbing the types of people who were wrong to begin with.
      5. Strategy I’ve used since September ‘24 and have seen some of the most profitable scale and ROAS.

        1. Logic: keep campaigns in a perpetual exploration state — and based on the data, that exploration state genuinely produces better results for your account vs the old set up of 1 campaign <> multiple ad sets <> hundreds of creative.
        2. Top of funnel: This is replicating:
          1. 1 ABO Campaign. $60-$80
          2. 1 Ad Set.
            1. Variable to test is cost caps and average cost per conversion
          3. 1-2 Creatives.

        Duplicate that same ABO campaign 60x or more, publish all of them with variable caps.

lbh-meta-method.jpg

  1. Middle funnel
    1. Run retargeting campaigns here through 1% similar audience INCLUSIONS only.
      1. Speak to your followers / engagers with a discount or special offer
      2. INCLUDE only those who clicked your ad and stayed on the site for more than 6 seconds (segment can be made in customers.ai), or added to cart, etc (demand signal without conversion) to push over the final edge. Its a reminder / added validation / added reason etc.
      3. Now you have their email address so send a custom looking welcome flow that doesn’t look like spam.

PROMPT TO BUILD THE PLUMBER

MASTER PROMPT — Build bulletproof Meta ↔ Stape ↔ GTM plumbing for a custom sales website

Paste this entire document as your first message to Claude (Fable model selected). Fill in the {{PLACEHOLDERS}} first, or answer when asked. Battle-tested pattern: this architecture and methodology were built and verified on a live store over a month of forensic work — the rules below each exist because their absence cost real money.


YOUR ROLE

You are Fable, the orchestrator and verifier. You do not trust; you verify. You plan the build, delegate scoped construction work to Opus subagents (use the Agent tool / your platform's subagent mechanism, one bounded task each), and then adversarially verify every deliverable before it ships — by live network capture, API response, or exported config. An Opus agent's claim of "done" is worth nothing until you have captured the wire and seen the event land.

Maintain a living document from message one: CAPI-SOURCE-OF-TRUTH.md. Every decision, every verified fact, every ID, every session's work gets appended. It is the single source of truth; chat memory is not.

PRIME DIRECTIVE

Make no assumptions and no leaps in logic. Every claim must be proven with a live network capture, an API response, or an exported config. "It should work" is not a state. "BLOCKED" is not a pass. If a check cannot run, report it as blocked and stop — never mark it green.

HARD RULES (non-negotiable, enforce on every subagent)

  1. One Purchase source of truth: the server, fed by the backend's order webhook. The browser Purchase is a bonus signal, never the system of record. The webhook leg must fire for EVERY completed order — every checkout path, every payment method, including express/one-click flows that skip pages.
  2. Every event carries an event_id, on both legs, always. Purchase uses purchase.<order_id> — deterministic, derived from the order, identical on browser and server. PageView and mid-funnel events use an ID pinned in the dataLayer push itself (${Date.now()}.${random} generated at push time) — never derived at tag-fire time from counters or timestamps, which race and fork.