Marketing — Facebook

Date range

Facebook ad performance

⚠️ These are Facebook's own reported numbers. FB over-credits paid ads for sales that organic and repeat customers would have made anyway — so treat ROAS/purchases here as an ad-ops signal for comparing ads against each other, not your real profit (that's the home page, where CAC is on new customers only).

Big Value
error
Big Value
error
Big Value
error
Big Value
error
Big Value
error
Big Value
error

New-customer CAC = ad spend ÷ actual new Shopify customers — your real cost to acquire someone. The per-ad FB $/purch. in the table below is Facebook's own (inflated) count — good for ranking ads against each other, not your true CAC. (A true per-ad CAC needs UTM attribution — see the roadmap.)

By ad — what's actually working

Data Table
Catalog Error: Table with name fb_ad_daily does not exist!
Did you mean "pg_catalog.pg_prepared_statements"?

LINE 11: from (select * from trueprofit.fb_ad_daily
                             ^

CAC by ad — cost to acquire, cheapest first

Ad spend ÷ FB conversions, per ad. (FB's attributed purchases — includes repeats and FB's over-crediting, so it's for comparing ads to each other, not your true bottom-line CAC.)

Bar Chart
Catalog Error: Table with name fb_ad_daily does not exist!
Did you mean "pg_catalog.pg_prepared_statements"?

LINE 11: from (select * from trueprofit.fb_ad_daily
                             ^

Spend by ad

Bar Chart
Catalog Error: Table with name fb_ad_daily does not exist!
Did you mean "pg_catalog.pg_prepared_statements"?

LINE 11: from (select * from trueprofit.fb_ad_daily
                             ^

Spend by ad over time

Bar Chart
Catalog Error: Table with name fb_ad_daily does not exist!
Did you mean "pg_catalog.pg_prepared_statements"?

LINE 2: ...:date as period, ad_name, sum(spend) spend from (select * from trueprofit.fb_ad_daily
                                                                          ^

When you add more ads, adsets, or campaigns, every table and chart here breaks them out automatically — the pull is at the ad level and carries the full ad → adset → campaign hierarchy.