facebook ads profitability shopify audit meta ads

Facebook Ads Not Profitable on Shopify? Run This 30-Minute Audit

9 min read

You’ve been running Facebook ads for your Shopify store for three weeks. You’ve spent €2,400 total. Revenue from those ads, according to Shopify, is €4,100.

That’s ROAS of 1.7x. Sounds decent.

But when you account for COGS (40% margin), Shopify fees, and payment processing, your actual profit is only €180 on €2,400 spent.

That’s 7.5% profit margin. You’re basically breaking even.

Something is wrong. Either your audience is wrong, your product isn’t suited for Facebook ads, your landing page is losing people, or your COGS tracking is off.

You have one of five bottlenecks. This 30-minute audit will find it.

Checkpoint 1 (5 min): Is Your Break-Even ROAS Calculated?

Start here. Do you know the minimum ROAS you need to be profitable?

The formula: Break-even ROAS = 1 / (1 − COGS% − Fees% − Target margin%)

Example:

  • COGS: 40%
  • Fees (Shopify + payment): 3.8%
  • Target margin: 20%
  • Break-even ROAS = 1 / (1 − 0.40 − 0.038 − 0.20) = 1 / 0.362 = 2.76x

You need 2.76x ROAS to hit 20% profit margin.

What to do: Write this number down. If your current ROAS is below this, you have a diagnosis path:

  • Is the campaign just too new (under 3 days or €50 spent)? Give it time.
  • Is the ROAS consistently below your break-even? One of the other four checkpoints has the answer.

Checkpoint 2 (5 min): Compare Meta ROAS vs Shopify ROAS

Meta claims one number. Shopify reality shows another.

Pull your data:

In Meta Ads Manager:

  • Go to Campaigns
  • Filter to date range (last 7–14 days)
  • Note the ROAS for your top 3 campaigns

In Shopify:

  • Go to Reports > Sales by source
  • Filter for Facebook/Instagram
  • Calculate: Total revenue / total ad spend for the same period

Compare:

  • Meta ROAS: 3.2x
  • Shopify ROAS: 2.1x
  • Gap: 1.1x (Meta is 52% higher)

A gap of 20–40% is normal (Meta’s attribution is generous). A gap >50% suggests:

  1. Your UTM tracking is broken (orders aren’t tagged as coming from Facebook)
  2. Attribution window issues (customers are buying days later, outside Meta’s window)
  3. Fraudulent clicks (unlikely but possible)

What to do: If the gap is <40%, move to Checkpoint 3. If gap is >50%, fix your UTM tracking first:

  • In Meta Ads Manager, check that your campaign UTMs include utm_source=facebook
  • In Shopify, verify UTM is being tracked (Reports > Sales by source should show Facebook/Instagram)
  • If still broken, enable Conversions API (Settings > Apps > Facebook & Instagram > Enable Conversions API)

Wait 2–3 days for data to populate, then re-check.

Checkpoint 3 (10 min): Check COGS Per Campaign

You’ve entered COGS in Shopify (product cost field). But are the orders you’re getting from Facebook ads actually that margin?

It’s possible you’re running ads for your highest-COGS products (lowest margin).

How to find it:

In Shopify:

  1. Go to Products
  2. For each product, note the cost (e.g., €12 cost for a €45 product = 26.7% COGS)
  3. Go to Orders and filter by source = Facebook (use your UTM tag)
  4. For each order, note the product
  5. Calculate the average COGS across those orders

Real example:

You have three products:

  • Product A: €80 price, €20 cost (25% COGS) — highest margin
  • Product B: €50 price, €25 cost (50% COGS) — mid margin
  • Product C: €30 price, €24 cost (80% COGS) — lowest margin

Your Facebook ad creative shows Product C (impulse item, eye-catching).

Of your 30 Facebook orders:

  • 2 orders: Product A
  • 8 orders: Product B
  • 20 orders: Product C

Weighted COGS: (2×0.25 + 8×0.50 + 20×0.80) / 30 = 18.2 / 30 = 60.7% COGS

Your ads are promoting your lowest-margin product. Even with 2.1x ROAS, you’re barely profitable.

What to do: If COGS is >50% on your Facebook orders:

  • Create a new campaign featuring Product A or B (your higher-margin items)
  • Run it for 3 days with the same audience
  • Compare profitability

If the new campaign is >3% more profitable, shift budget there.

Or: work with your sourcing team to reduce COGS on Product C. If you can drop COGS from 80% to 70%, your Facebook ads suddenly become 10% more profitable.

Checkpoint 4 (5 min): Check Frequency

Are you burning the same audience repeatedly?

In Ads Manager:

  1. Go to your campaign
  2. Click the Ad Sets tab
  3. Look for “Frequency” column
  4. If >4, your audience is seeing your ad too many times

High frequency means:

  • Same people seeing the ad 5+ times
  • Each additional impression has lower conversion probability
  • Budget is wasted on redundant impressions

Example:

  • Audience size: 50k people
  • Daily budget: €50
  • CPM: €2
  • Daily impressions: 25,000
  • Frequency per user: 25,000 / 50,000 = 0.5x (good)

But if you run it with:

  • Audience size: 10k people (too narrow)
  • Daily budget: €50
  • CPM: €2
  • Daily impressions: 25,000
  • Frequency per user: 25,000 / 10,000 = 2.5x (high, people seeing ad 2–3x daily)

High frequency kills profitability.

What to do: If frequency >4, broaden your audience:

  • Remove narrow interest targeting; use broader demographic
  • Expand age range (if targeting 25–35, expand to 25–45)
  • Use lookalike audience instead of interest-based
  • Split the budget across multiple smaller audiences instead of one large one

Retest after 48 hours. Profitability should improve.

Checkpoint 5 (5 min): Check Landing Page Conversion Rate by Device

Maybe the audience is right. Maybe the frequency is fine. Maybe Facebook is driving clicks, but your landing page is losing people.

Check your pixel data:

In Ads Manager:

  1. Go to Analytics
  2. Filter to your campaign
  3. Look at the funnel:
    • ViewContent (people who visited product page)
    • AddToCart (people who added product)
    • InitiateCheckout (people who started checkout)
    • Purchase

Real example:

  • Clicks: 150
  • ViewContent (landed on product page): 140 (93% landed)
  • AddToCart: 35 (25% added to cart)
  • InitiateCheckout: 10 (29% started checkout)
  • Purchase: 4 (40% completed)

Bottleneck: AddToCart. Only 25% of visitors are adding to cart. The product page is losing 75% of traffic.

Next: check device breakdown. Maybe mobile conversion is 5% but desktop is 45%.

In Ads Manager:

  1. Go to Ads (not campaigns)
  2. Click Breakdown
  3. Select “Device type”
  4. Measure conversion rate by device

If mobile converts at 0.5% and desktop at 3%, your landing page is mobile-broken.

What to do: If mobile converts <0.8%, test a mobile-optimized landing page:

  • Remove form fields (collect less data on mobile)
  • Make product images larger
  • Move “Add to Cart” button above the fold
  • Simplify checkout

Redirect 50% of traffic to the mobile-optimized version for 48 hours. If conversion improves, make it permanent.

The Audit Results: Which Checkpoint Failed?

After running all 5 checkpoints:

CheckpointLikely IssueFix
1. Break-even ROAS not definedYou don’t know your target; just guessingCalculate your break-even ROAS using the formula. Now you have a target.
2. Meta vs Shopify ROAS gap >50%UTM tracking broken or iOS 14 attribution lossEnable Conversions API in Shopify. Fix UTM parameters.
3. COGS too high for your ad productsYou’re promoting low-margin itemsSwitch campaigns to higher-margin products. Test for 3 days.
4. Frequency >4Audience is too small; same people seeing ads repeatedlyBroaden audience targeting or split budget across multiple audiences.
5. Landing page conversion <1% or device breakdown shows mobile is lowClicks aren’t converting because page is bad or mobile-brokenA/B test a mobile-optimized or cleaner landing page.

The Path Forward

Most stores have one primary bottleneck. Find it, fix it, re-test.

Common sequence:

  1. Fix break-even ROAS calculation (if missing)
  2. Check COGS and product mix (fastest impact)
  3. Broaden audience or improve landing page (medium effort)
  4. Enable Conversions API and fix UTM (if attribution is broken)

After fixing one issue, give the campaign 3–7 days to show results. Don’t fix multiple things simultaneously — you won’t know which one worked.

Ready to Run the Audit?

Set aside 30 minutes. Go through the 5 checkpoints. Write down your findings.

You’ll either find the bottleneck (and know exactly what to fix) or discover your Facebook ads genuinely aren’t suited for your product (in which case, paause and save budget).

For ongoing monitoring, set up profit-based kill rules so you catch unprofitable campaigns automatically.

Get started with Calatrix — profit tracking + kill rules mean you don’t have to run manual audits every week.

Your answers are in the data. Let’s find them.

Ready to stop losing money on Meta ads?

Set up automated kill rules and let Calatrix protect your ad spend 24/7. Pair this with Shopify's real order data and COGS tracking to optimize for actual profit, not vanity metrics.

Start 14-day free trial