
u/Huge_Strawberry7888

I’m posting and commenting but they are getting removed by reddit
Hi,
My recent posts and comments are automatically removed by Reddit filters, why?
LPT: The most satisfying way I’ve found to deal with scam callers
I get a TON of spam calls…somewhere around 10-20 a day. Problem is, my job means I genuinely do get legit calls from numbers I don’t recognize, so just ignoring everything isn’t really workable.
In my experience, telling them off does nothing, they don’t care. Hanging up does nothing either, they’ll just ring back. But if you deliberately burn as much of their time as you possibly can, they get genuinely furious.
My method is engineered for peak spam-caller frustration.
Let them get through their whole intro script (usually a big mouthful for them), and then just keep hitting them with “Who is this?” It absolutely destroys them.
Example:
Me: Hello?
Steve: Hi Jim, how ya doin’ today? This is Steve over at Bullshit Funding. Don’t worry, this isn’t a loan call. We’re a bank that specializes in merchant cash advances for businesses like yours. Is your credit score above 640?
Me: “Sorry, who’s this?”
Steve: “This is Steve over at Bullshit Funding. Don’t worry, this isn’t a loan call. We’re a bank that specializes in merchant cash advances for businesses like yours. Is your credit score above 640?”
Me: ……pause………..“Sorry, the reception’s terrible here. Who’d you say this was?”
Steve (getting more annoyed): “This is Steve over at Bullshit Funding…….It’s not a loan call……We’re a bank that specializes in merchant cash advances for businesses like yours……Is your credit score above 640?”
Me: ….pause………..“Sorry, signal’s awful where I am. Did you say Chris?”
Steve (now angry): “THIS IS STEVE OVER AT BULLSHIT FUNDING. IS YOUR CREDIT SCORE ABOVE 640!?”
Me: “Hey Chris, which bank are you calling from again?”
Them: NO. IT’S STEVE. I’M WITH BULLSHIT FUNDING.
WE’RE A MERCHANT CASH ADVANCE COMPANY THAT GIVES LOANS TO BUSINESSES. IS YOUR CREDIT SCORE ABOVE 640????!
ME: “Ohh okay, BS Funding, my bad Steve, my phone is absolute garbage out here. So how can I help you?”
Steve: WE’RE A MERCHANT CASH ADVANCE COMPANY
THAT GIVES LOANS TO BUSINESSES. IS YOUR CREDIT SCORE ABOVE 640????!
Me: Sorry, who is this?
Steve: OH FOR FUCKS SAKE GOD DAMNIT I’M BEING
PLAYED. *CLICK*
ME: huehueheuhue
That frustration in their voice is 100% worth it. Enjoy.
After hitting 92% Meta CAPI match rate across $1.2B GMV and 5,000 brands — the 50 Meta ads + tracking mistakes I see most often
I'm Numan, one of the people behind Admaxxer (first-party analytics +
ad attribution platform for DTC brands). Saying that up front so
nobody has to dig.
We crossed 5,000 active brands and $1.2B in tracked purchase revenue
on the platform in Q1, with a 92% aggregate Conversions API match rate
across the install base. The reason that number matters: most accounts
I audit walk in somewhere between 40 and 65%. The gap is where the
money is hiding.
I've explained the same problems in DMs and audit calls more times
than I can count. Writing them out so the next person can read them
instead of asking. Nothing here is platform-specific to us — the
lessons hold whether you use Admaxxer, Triple Whale, Northbeam, or
your own warehouse.
50 mistakes, grouped.
## Pixel and Conversions API (1-10)
Event Match Quality below 7 is bleeding 30 to 50% of your
conversion data. The fix isn't more events. It's hashing email and
phone server-side before the CAPI payload goes out, plus passing
`fbc` and `fbp` from cookies that already exist on the site.The single most common CAPI failure I see: passing
`client_ip_address` from your load balancer or CDN instead of the
real user IP. Every event looks like it came from AWS us-east-1.
EMQ tanks. Match rate drops below 5. Events still fire so nobody
notices.The `_fbc` and `_fbp` cookies expire at 90 days. If a user
clicked your ad, didn't convert, came back on day 91 — Meta has no
record that ad existed. Invisible attribution loss almost nobody
monitors.iOS 14.5 is not "solved." Match rates on iOS web are still 25
to 40% lower than Android web because Safari ITP nukes first-party
cookies after 7 days unless they're set server-side with proper
`Set-Cookie` headers and the HttpOnly flag.Deduplication between pixel and CAPI happens on `event_id`, not
on user identity. If you're sending the same `Purchase` event from
both sources without a matching `event_id`, Meta counts it twice
and your reported revenue inflates.The "Test Events" tab in Events Manager only shows your current
session. It tells you the pipe works. It tells you nothing about
production match rate. The Diagnostics tab is where the actual
problems live.Aggregated Event Measurement (AEM) caps you at 8 prioritized
events per domain. Most accounts have 15 to 20 events firing but
only 8 ranked. Anything below the cutoff doesn't optimize iOS users
at all.Domain verification on the .com but not on the checkout subdomain
is the most common partial-setup I see. Every conversion on the
subdomain falls back to AEM defaults instead of your priority order.Server-side Google Tag Manager (sGTM) routing your CAPI events
recovers 15 to 30% of ad-blocked traffic. Setup is roughly a week of
dev time plus ~$80/month on GCP. Worth it above ~$50K/month in
Meta spend.Shopify's `checkout_started` event fires before payment info is
entered. It is not a meaningful intent signal. Most "Initiate
Checkout" optimization campaigns are optimizing for browse intent.
Switch to Add to Cart or Add Payment Info.
## Attribution windows and reporting (11-18)
If Meta-reported revenue is more than 1.4x Shopify-reported
revenue, you have a deduplication problem. Pixel + CAPI both
recording the same `Purchase` without matching `event_id`.The default attribution setting at the account level overrides
ad-set-level settings. Most teams don't know the account default
shifted in 2023. Check yours.A 7-day-click / 1-day-view window makes paid social look 2 to
3x better than reality for cold prospecting. Keep prospecting on
7-day-click only. Move retargeting to the wider window.View-through conversions with a 1-day-view window inflate
retargeting performance by 20 to 50%. Turn it off for retargeting
that's hitting the same user 5+ times a week.The Comparison view in Ads Reporting shows all attribution
windows side by side. If your team has never run it, do it this
week. The spread between windows is the conversation worth having.MER (Marketing Efficiency Ratio = total revenue / total ad
spend) is the only metric your CFO actually cares about. A 4.2 ROAS
in Meta with a 1.6 MER means either the platform is lying or you're
cannibalizing organic. Both are common."Reported by Meta" vs "Reported by Shopify" should be a stable
percentage gap. When the ratio shifts week over week, something
broke. Set a weekly check.Click-through conversions on Meta and Google are not the same
thing. Meta counts a click anywhere on the ad including the logo.
Google counts only clicks that reach the landing page. Comparing
without normalizing is comparing different metrics.
## Advantage+ Shopping (19-26)
Advantage+ Shopping is not set and forget. Best results come
from feeding it at least 50 customer-list-based lookalikes,
refreshed monthly, even though the docs say it's not necessary.The "Existing Customer" cap on ASC+ defaults to 40%. For most
DTC under $5M, that's way too high. The cap uses the customer file
you uploaded, not the pixel match. Upload a real one.ASC+ does not honor audience exclusions the way legacy
campaigns did. If you're excluding past-30-day purchasers in ASC+,
verify in Inspect that the exclusion is actually applying. Half
the time it isn't.ASC+ vs legacy ABO/CBO: in our data, ABO still wins for accounts
under $5K/day on cold traffic. ASC+ takes over above that. Below
$5K/day, "use ASC+ for everything" advice is overfit.ASC+ creative slot count is misleading. Loading 150 ads doesn't
mean Meta serves 150. The algorithm typically converges on 8 to 12
within 72 hours. Front-load your best.ASC+ optimization is global. It doesn't respect ad-set-level
budget caps. If you need spend control, use CBO with manual ad sets,
not ASC+.The "Advantage+ Audience" toggle on legacy campaigns has been
opt-out by default since late 2024. Most teams running "legacy"
campaigns are running Advantage+ audiences without knowing.The Catalog Sales objective and Advantage+ Catalog are different
products with different targeting logic. Both work. Don't assume
they're interchangeable when migrating.
## Audiences and lookalikes (27-32)
The "1% lookalike" advice is from 2019. In 2026 with iOS signal
loss, lookalikes need a customer file with at least 5,000 hashed
entries plus EMQ > 8.5, or the algorithm is essentially guessing.Audience overlap above 30% between two ad sets means you're
bidding against yourself. The overlap tool is in Ads Manager,
under audiences. Most accounts I see have 50 to 70% overlap and
don't know it.Custom audiences from website traffic decay fast on iOS. The
180-day window is meaningfully smaller than it was in 2021. Build
retargeting on 30-day windows and accept the audience size hit.Value-based lookalikes need at least 1,000 customers with a
real `value` parameter to train properly. Sending purchase events
without value is the silent killer of value-based modeling.Engagement-based custom audiences (video views, Instagram
profile visits, IG/FB engagement) are the highest-quality cold
audience for retargeting in 2026. Cheaper to build and higher
intent than website traffic alone.The Customer List custom audience requires 1,000 entries
minimum but matches better with 5,000+. Same file. The difference
between 1,000 and 5,000 entries is roughly a 40% match-rate
improvement in our data.
## Creative and testing (33-40)
Creative fatigue on cold traffic is a 14 to 21 day cycle. The
"winning ad" you found in week 1 stops winning by week 4 in 80%
of cases. Plan replacements before performance drops.Test in $50/day ad sets with a single variable change. Most
teams test 5 things at once and learn nothing.The Meta Ads Library is the most underused competitive research
tool in DTC. Check competitors weekly. Ads they've run for 60+
days are the ones working. Steal the angle, not the copy.AI-generated creative wins about 1 in 4 tests against
studio-produced. Not a magic bullet. But the 10x lower production
cost means it pays even when it loses on ROAS because volume of
swings goes up.Static images outperform video on cold traffic for products
under ~$50 AOV. The "video always wins" advice doesn't survive
contact with the data.The hook in the first 1.5 seconds determines more than 70% of
CTR. If you can't write the hook, the rest of the ad doesn't
matter.UGC outperforms studio-produced creative at roughly a 3-to-1
CTR ratio on cold traffic in 2026. The gap closes for retargeting
and reverses for premium-positioning brands.Frequency caps don't apply to Advantage+ the way they did to
legacy campaigns. The "Daily Unique Reach" objective on Reach
campaigns is closer to a real frequency cap. Most teams learn this
after burning the audience.
## Account warming, scaling, structure (41-46)
Warming new ad accounts: $20/day for the first 7 days before
scaling gets you 15 to 25% better CPMs at scale. The account-level
signal stability matters more than people realize.Account-level spending limits can throttle automated bidding
without warning. If your campaign suddenly underdelivers on
Saturdays, check the daily account cap before blaming creative.Vertical scaling (more budget on existing ad sets) beats
horizontal scaling (duplicating into new ad sets) until you hit
fatigue. Then flip. Most teams flip in the wrong order.CBO won at scale. ABO still wins in learning. Run new ad sets
on ABO until they hit 50 conversions in 7 days, then graduate to
CBO. Reversing that order wastes budget on under-trained ad sets.Catalog feed quality below 95% (titles, descriptions, GTIN,
availability all populated) is the structural reason catalog
campaigns underperform. Most Shopify stores ship at 60 to 75%
and never check.Dynamic Product Ads retargeting decays faster than most teams
realize. Traffic older than 28 days converts at less than 30% of
fresh traffic, but Meta will happily keep showing them ads. Cap
the recency manually.
## Cross-channel reconciliation (47-49)
If your team can't agree on a single source of truth for
revenue, the attribution debate is unwinnable. Pick one (we use
Shopify as the system of record), reconcile platform numbers to
it weekly. Stop arguing about which number is "right." All the
platforms are reporting different things by design.The biggest predictor of paid media performance is not creative
or audience. It's repeat purchase rate. Brands above 25% repeat
can scale paid almost indefinitely. Below 15%, paid is a treadmill
no matter how good the ads are.The "first-touch vs last-touch" debate is a distraction. Track
both, report the gap as a diagnostic. Growing gap means upper-funnel
is doing real work. Shrinking gap means you're over-reliant on
retargeting.
## The thing nobody is measuring yet (50)
- ChatGPT, Claude, and Perplexity now drive 2 to 8% of sessions
on most DTC sites in 2026. None of it shows up in Meta's pixel
because the LLMs strip the Referer header. You're paying Meta to
retarget these visitors as cold traffic — re-acquiring users who
came in through generative search. Tag them server-side or they
never make it into your warm audiences and your CPA looks worse
than it is.
## Questions for the room
a) Media buyers running 5+ accounts — what's the one tracking fix
you can never get clients to implement?
b) Anyone here moved off ASC+ back to legacy structures recently?
Curious about the trigger.
c) What's your current Meta CAPI match rate, and what was the last
thing that moved it more than 5 points?
After 5,000+ DTC brands and $1.2B in tracked GMV on our platform — the 50 attribution + paid media mistakes I see most often
I'm of the people behind Admaxxer (first-party analytics +
cross-platform ad attribution for DTC, covers Meta, Google, TikTok, ). Sharing that up front so nobody has to dig.
We crossed 5,000 active brands and $1.2B in tracked purchase revenue
(GMV) on the platform in Q1. Going through that aggregate data, plus
the past year of audit calls with operators, the same problems keep
coming back. Writing them out because I've explained each one in DMs
more times than I can count.
A few caveats before the list. These are patterns, not laws. Your
account may be the exception. Numbers in here are medians across the
brands we see, not promises. And nothing below is platform-specific to
Admaxxer — the lessons hold whether you use us, Triple Whale, Northbeam,
GA4, or your own warehouse.
50 mistakes, grouped.
## Tracking and pixel hygiene (1–10)
Event Match Quality below 7 on Meta is bleeding 30 to 50% of your
conversion data. The fix isn't more tracking, it's hashing email and
phone server-side before the CAPI payload goes out, plus passing `fbc`
and `fbp` from cookies that already exist on your site.The single most common Meta CAPI failure I see: passing
`client_ip_address` from your load balancer instead of the real user
IP. Every conversion looks like it came from AWS us-east-1. EMQ tanks.
Nobody catches it because the events still fire.Google's Enhanced Conversions for Leads needs SHA-256 hashed email
captured at form submit, not at the thank-you page. If you're hashing
at thank-you, you're hashing zero percent of users who bounce after
form submission but before the redirect completes.The `_fbc` and `_fbp` cookies expire at 90 days. If a user clicked
your ad, didn't convert, came back on day 91, Meta has no record that
ad ever existed. Invisible attribution loss almost nobody monitors.The "iOS 14.5 is solved" narrative is wrong. Match rates on iOS web
are still 25 to 40% lower than Android web because Safari ITP nukes
first-party cookies after 7 days unless they're set server-side with
proper `Set-Cookie` headers and the HttpOnly flag.UTM hygiene is worth more than any attribution tool. `utm_source=facebook`,
`utm_source=Facebook`, and `utm_source=fb` are three different sources
in GA4 by default. Normalize them and roughly 30% of your "direct"
mystery traffic resolves itself.Shopify's `checkout_started` event fires before the user has entered
any payment info. It is not a meaningful intent signal. Most "Initiate
Checkout" optimization campaigns are actually optimizing for browse
intent. Switch to Add to Cart or Add Payment Info.Server-side Google Tag Manager (sGTM) reduces ad-blocker losses by
15 to 30% on average. Setup is non-trivial: roughly a week of dev time
plus ~$80/month on GCP. Worth it above ~$50K/month in ad spend,
probably not below.The single highest-leverage 30 minutes a media buyer can spend this
quarter: write down every conversion event firing on your site, where
it fires, what value it passes. 8 out of 10 audits I do, that list
reveals 1 to 3 duplicate or broken events the team didn't know about.The "bot traffic" problem in GA4 is real but smaller than people
think. Most "bot traffic" you see is mobile in-app browsers that hit
the site once and leave. Filter by `engaged_session = true` to clean
it up without aggressive bot filtering that nukes real users.
## Attribution and reporting (11–20)
If your Meta-reported revenue is more than 1.4x your Shopify-reported
revenue, you have last-click duplicates firing. Pixel + CAPI both
recording the same purchase without deduplication on `event_id`.Modeled conversions can be up to 35% of your reported conversions
in a privacy-restricted Google Ads account. Reading "conversions"
without separating modeled from observed is reading fiction with
real-looking decimal places.The right primary metric for DTC under $5M/year is contribution
margin per session, not ROAS. ROAS ignores product margin, returns,
and repeat rate. Those vary 10x across SKUs in the same store.MER (Marketing Efficiency Ratio = total revenue / total ad spend)
is the only ad metric your CFO cares about. If your Meta ROAS is 4.2
but MER is 1.6, the platform numbers are lying or you're cannibalizing
organic. Both are common.A 7-day-click / 1-day-view attribution window in Meta makes paid
social look 2 to 3x better than reality for cold prospecting. Move
retargeting to that window, keep prospecting on 7-day-click only."Incrementality" tests should be geo-level (holdout in 20% of
states), not audience-level (lookalike A vs B). Audience-level tests
confound creative with audience and you'll mis-call which channel is
actually growing the business.Last-click attribution is structurally biased toward bottom-funnel
channels. If your model says branded search has the best ROAS, that's
correct AND it's telling you nothing useful about where to allocate
incremental dollars.View-through conversions on Meta with a 1-day-view window inflate
apparent retargeting performance by 20 to 50%. Turn it off for any
retargeting hitting the same user 5+ times a week.Klaviyo's revenue numbers and Shopify's revenue numbers will not
match. Klaviyo's default attribution window is 5 days post-click. Most
teams report Klaviyo revenue separately from paid social ROAS without
realizing they're double-counting the same purchase on both lines.The most common mistake in "blended ROAS": forgetting to subtract
refunds and chargebacks. Blended ROAS should use net revenue, not
gross. The gap is 5 to 12% for most DTC brands and it compounds
month over month.
## Meta specifics (21–28)
Advantage+ Shopping is not set and forget. Best results come from
feeding it at least 50 customer-list-based lookalikes, refreshed
monthly, even though the docs say it's not necessary.The "1% lookalike" advice is from 2019. In 2026 with iOS signal
loss, lookalikes need a customer file with at least 5,000 hashed
entries plus EMQ > 8.5, or the algorithm is essentially guessing.Catalog-sales campaigns underperform when feed quality is below
95%. Most Shopify stores ship with 60 to 75% feed quality (missing
GTIN, weak titles, no descriptions) and never check.Audience overlap above 30% between two ad sets means you're bidding
against yourself. Use the overlap tool in Ads Manager. Most accounts I
see have 50 to 70% overlap and don't know it.Creative fatigue on Meta is a 14 to 21 day cycle for cold traffic.
The "winning ad" you found in week 1 stops winning by week 4 in 80% of
cases. Plan replacements before performance drops, not after.Frequency caps don't apply to Advantage+ the way they did to legacy
campaigns. The "Daily Unique Reach" objective in Reach campaigns is
closer to a real frequency cap. Most teams find out after burning the
audience.The Meta Ads Library is the most underused competitive research
tool in DTC. Check competitors weekly. Ads they've run for 60+ days
are the ones working. Steal the angle, not the copy.Warming up new ad accounts with $20/day for the first 7 days before
scaling gets you 15 to 25% better CPMs at scale. The account-level
signal stability matters more than people realize.
## Google specifics (29–34)
Performance Max wastes 20 to 40% of spend on brand search queries
it claims aren't brand. Use the brand exclusion list (added 2024) and
run a brand-specific Search campaign as a baseline. Compare PMax
performance before and after.Smart Bidding needs at least 30 conversions in the past 30 days
per campaign to optimize properly. Below that, "Maximize Conversions"
defaults to spending on whatever clicks fastest, which is rarely
whatever converts best.Google's "conversion lag" report (in the Attribution section)
shows what percent of conversions arrive on day 0 vs day 30. For most
DTC, 40 to 60% of conversions land after day 7, meaning your
"yesterday's ROAS" view is structurally pessimistic.Auction-time bidding cannot optimize for revenue if you pass a flat
purchase value. Pass dynamic value via the `value` parameter, or
you're telling the algorithm every purchase is worth the same."Click-through conversions" in Google and Meta are not the same
thing. Meta counts a click anywhere on the ad including the logo.
Google counts only clicks that reach the landing page. Comparing them
without normalizing is comparing apples to a different apple.Smart Shopping is gone but its bad habits live on in PMax. If
your asset group has no negative-keyword equivalent in your PMax
campaign, you're paying Google to learn what you don't want it to do.
## TikTok (35–37)
TikTok's API only attributes purchases that happen in the TikTok
in-app browser unless you have pixel AND Events API both installed
with proper deduplication. Pixel-only setups under-report TikTok by
50 to 80% in most accounts I see.TikTok creator content (Spark Ads) outperforms studio-produced ads
at roughly a 3-to-1 CTR ratio on cold traffic. The gap closes for
retargeting but doesn't reverse.TikTok's "Cost Cap" bidding is more aggressive than Meta's. Setting
it at your target CPA usually under-delivers volume by 40 to 60%. Bid
20 to 30% above your CPA target and let it find the breakeven.
## Amazon and Pinterest (38–41)
Amazon Marketing Cloud (AMC) is the most underused attribution
surface in DTC. If you sell on Amazon and run off-Amazon ads, AMC
shows you Meta clicks that converted on Amazon. Meta will never
report that.Sponsored Brands Video has the highest CPC of any Amazon ad type
but the lowest cost-per-purchase when targeting includes branded
plus category keywords combined. Most teams treat it as a brand-only
spend.Pinterest converts on a 28-day window, not 7. If you measure
Pinterest with Meta-style attribution you'll kill the channel before
it has a chance to work.Pinterest's audience skews 70% women and high-intent for home,
food, fashion, wedding. It is not a B2B channel. The "Pinterest works
for everyone" advice is wrong for most categories outside that bucket.
## Cross-platform, MMM, unit economics (42–46)
MMM under $1M/month in ad spend produces unstable coefficients.
Confidence intervals are so wide the recommendation is "spend more or
less on everything." Stick with geo-lift tests until you're past
~$1M/month.The biggest single predictor of paid media performance is not
creative or targeting. It's product-market fit measured by repeat
purchase rate. Brands above 25% repeat can scale paid nearly
indefinitely. Below 15%, paid is a treadmill no matter how good your
ads are.The "first-touch vs last-touch" debate is a distraction. Track
both, report the gap as a diagnostic. A growing gap means upper-funnel
is doing real work. A shrinking gap means you're over-reliant on
retargeting.If your team can't agree on a single source of truth for revenue,
the attribution debate is unwinnable. Pick one (we use Shopify as the
system of record), reconcile platform-reported numbers to it weekly,
and stop arguing about which number is "right." The platforms all
report different things by design.Cost-per-purchase in your ad platform tells you nothing about
contribution margin. A $40 CPA on a $90 AOV product with 30% margin
loses you $13 before shipping. Run unit economics by SKU monthly, not
the ad-platform numbers.
## LLM traffic and the new layer (47–50)
ChatGPT, Claude, and Perplexity now drive measurable referral
traffic to most DTC sites. Typically 2 to 8% of total sessions in 2026.
Almost none of it shows up in GA4 because the LLMs strip the Referer
header. It's hiding in your Direct channel.The first brand mentioned in ChatGPT's response to "best [category]"
gets 35 to 50% of the click-through. The second brand gets 20 to 25%.
Everyone after that splits the rest. Generative Engine Optimization
(GEO) is the new SEO and rankings move faster than Google's ever did.Setting up an `llms.txt` file at root plus a clean "your brand vs
competitor A vs competitor B" comparison page is the highest-ROI 2026
content play. Most LLM citations come from comparison content, not
brand pages.The brands winning LLM citation right now are the ones with strong
Reddit and forum footprints. LLMs cite Reddit at roughly 10x the rate
of standalone blogs. If you're not commenting in your category's
subreddits this year, you'll lose the LLM-recommendation race in 2027.
## Questions for the room
a) PPC managers running 5+ accounts — what's the one attribution
mistake you see clients repeat that you can never get them to fix?
b) Anyone here actually quantified the LLM-referral percentage in
GA4 once they instrumented for it? Curious if our 2 to 8% range
holds for accounts outside our sample.
c) Pinterest skeptics — when's the last time you tested it on a
category-fit account? Open to being wrong but the data I see is
consistent.
How to fix low Event Match Quality (EMQ) on Meta Conversions API — checklist that moved ours from 4.2 to 8.7
Low Event Match Quality (EMQ) on the Meta Conversions API (CAPI) is almost always a customer-parameter or hashing problem, not a broken pixel. If your EMQ is stuck under 6.0 and CPMs keep climbing, the fix is in user_data, not in your audience targeting.
We spent two quarters debugging this across ~40 DTC accounts. Disclosure up front: I work on Admaxxer (a Triple Whale / Hyros alternative), so we stare at CAPI payloads daily. But this checklist works whether you’re on Shopify’s native CAPI, server-side GTM, a third-party pixel, or a custom endpoint.
The order that worked for us:
- Send all seven primary customer parameters, not just email.
Meta scores em (email), ph (phone), fn, ln, ct, st, zp, country, plus external_id, client_ip_address, client_user_agent, fbp, and fbc. Most Shopify stores ship 3-4 by default. Adding phone, first name, last name, and zip on Purchase events alone moved one client from 4.8 → 7.2 in a week.
- Hash with SHA-256, lowercase, trimmed — and don’t double-hash.
Phone: country code, no dashes, no spaces
(+15551234567, not (555) 123-4567). Emails lowercased before hashing. Names lowercased, Unicode NFKD, strip diacritics. The #1 silent killer: hashing values that Shopify or Klaviyo already hashed. Meta rejects pre-hashed-then-hashed values without telling you and your score tanks.
Send fbp and fbc on every event, not just Purchase.
The _fbp cookie identifies the browser; _fbc carries the fbclid from the ad click. If your server fires Purchase but doesn’t read the cookies the browser set, Meta can’t connect the event to the click. Pull both from request cookies, attach to every CAPI event. This is the single biggest gap we see when auditing accounts in Admaxxer — roughly 60% of stores aren’t passing fbc server-side, and most don’t realize it until they see the parameter coverage breakdown.Deduplicate with event_id, not event_name + timestamp.
Browser pixel and CAPI must fire the same event with an identical event_id. Meta dedupes on event_id first. If Purchase counts are doubling in Events Manager, your server is generating its own ID instead of reading the one the browser sent — fix that and dedup falls into place.
5. Send within an hour, not within a day.
EMQ degrades sharply after 24 hours. Daily batched uploads (the old offline-conversions pattern) won’t get you above ~6.0. Real-time server-side is the floor now.
- Filter bot traffic before it hits CAPI.
Headless browsers, uptime monitors, your QA team hitting /checkout/success with seeded data — all of it drags EMQ down. Filter client_user_agent against a known-bots list server-side.
- Handle data_processing_options for EU traffic.
If you’re firing CAPI on EU visitors without consent signals reflected in data_processing_options, Meta downweights the event. The field needs to mirror your CMP state.
EMQ is a trailing average, so it takes 7-10 days for the score to catch up. We typically see accounts move from 4-5 range to 7.5-9 after working through these in order.
What did not move the needle for us:
• Swapping native Shopify CAPI for a third-party vendor (same parameter problems, different UI)
• Adding more event types (AddToCart, ViewContent) — they don’t affect Purchase EMQ
• Widening the dedup window
Questions for anyone who’s been through this:
•Has anyone pushed EMQ above 9.0 reliably? What was the last parameter that got you there?
•Shopify Plus folks: native CAPI, server-side GTM, or vendor pixel — which is winning for you in 2026?
•Anyone seeing EMQ behave differently between Advantage+ Shopping and traditional ABO campaigns? We have conflicting internal data on this.
Anyone got access? How they are performing
Keep hearing this again and again and I think its complete BS. If its that good then why hire media buyers?
I had 40 paying users, for some reason the platform was nor working and i gave opus access to database and access to third party api that we were using.
Accounts on those third party are gone and people are now asking for refunds
How’s your day so far and in which market you’ve advertising?
Checked triplewhale and admaxxer and all clients are doing well today, strange
Meta has just launched CLI.
When google is going to do it? They are always slow
What makes this announcement so interesting is that it gives AI tools direct, authorized access to help manage your Meta Ads account through natural language.
- Comprehensive reporting
Pull detailed reports, surface performance trends, and quickly understand what is happening across campaigns.
- Campaign management
Create and edit campaigns, ad sets, and ads without manually clicking through Ads Manager.
- Catalog management
Create product catalogs, add product data, and troubleshoot feed issues faster.
- Signal diagnostics
Access signal health and quality insights so you can prioritize the parts of your setup that need attention.
This is a huge step forward in agentic media buying. Will be testing this rest of the week!
Meta just officially launched cli
While it’s encouraging it I’m afraid they will block the accounts that will use it 😅