case study shopify meta ads automation calatrix

The Shopify Meta Ads Stack We Run on Our Own Stores: Real Data, Real Rules

11 min read

We don’t just build Calatrix. We use it.

Our company runs two Shopify stores with Meta ads. One does €25k/month, the other €18k/month. We’ve tested every automation tool on the market (Madgicx, Birch, Triple Whale, Meta native rules), and we’ve built our own (Calatrix).

This is what actually works.


The Two Stores

Store 1: Richmont Canada (Luxury Jewelry)

  • Type: Branded, premium, repeat customers
  • AOV: €280
  • Product COGS: 42% (€118)
  • Fees: 4.2% (€12)
  • Target profit margin: 30% (€84)
  • Monthly ad spend: €25,000
  • Monthly revenue: €180,000
  • Repeat customer rate: 22%
  • Average customer LTV: 2.1x

Store 2: Laura Firenze (Women’s Fashion)

  • Type: Branded, trend-driven, seasonal
  • AOV: €95
  • Product COGS: 48% (€46)
  • Fees: 3.8% (€3.60)
  • Target profit margin: 25% (€24)
  • Monthly ad spend: €18,000
  • Monthly revenue: €140,000
  • Repeat customer rate: 18%
  • Average customer LTV: 1.8x

The Math: Our Break-Even ROAS

Store 1: Richmont

Revenue: €280 Minus COGS: −€118 Minus fees: −€12 Available for ad spend + profit: €150

If we want 30% profit margin (€84):

  • Max ad budget: €150 − €84 = €66
  • Break-even ROAS: €280 / €66 = 4.24x

Wait, that’s high. But it’s first-purchase only. Repeats change it.

With 2.1x LTV (repeats):

  • Effective break-even: 4.24x / 2.1 = 2.02x

Our kill rule threshold: 2.2x ROAS (7-day window, Shopify profit data)


Store 2: Laura Firenze

Revenue: €95 Minus COGS: −€46 Minus fees: −€3.60 Available for ad spend + profit: €45.40

If we want 25% profit margin (€24):

  • Max ad budget: €45.40 − €24 = €21.40
  • Break-even ROAS: €95 / €21.40 = 4.44x

With 1.8x LTV:

  • Effective break-even: 4.44x / 1.8 = 2.47x

Our kill rule threshold: 2.8x ROAS (7-day window, Shopify profit data)


Our Automation Stack

We use three layers:

Layer 1: Kill Rules (Automated, Defensive)

These prevent disasters. They run 24/7 with zero manual intervention.

Calatrix is our tool for this. Why? Shopify profit integration. COGS awareness.

Our rules:

Rule NameTriggerThresholdActionEvaluation Window
Break-even pausing (Store 1)Profit margin< 15%Pause ad set7 days
Break-even pausing (Store 2)Profit margin< 12%Pause ad set7 days
Learning phase guardSpend> €250, learning statusPause ad set2 days
Zero-purchase guardConversions0, spend > €150Pause ad set2 days
Frequency controlFrequency> 4.5Pause audience1 day

Monthly impact:

  • Pauses ~30–35 ad sets/month
  • Saves €800–1,200/month in wasted budget
  • Prevents 2–3 major loss events/month (where we’d have otherwise spent €500–1,000 on a doomed ad set)

Layer 2: Scaling & Optimization (Manual, Strategic)

This is where our team adds value. Rules can’t scale well. We do.

We review twice/day:

  • 9 AM: Check yesterday’s performance, scale winners, pause marginal performers
  • 5 PM: Quick scan for outliers (ad set spent €500 suddenly, check why), adjust bids

Process:

  1. Filter ad sets by ROAS (showing only those > 3.0x and < 1.8x ROAS)
  2. For ROAS > 3.0x: increase daily budget by 20–50%
  3. For ROAS < 1.8x (but profit margin not yet below threshold): reduce spend or test new creative
  4. For ROAS 1.8–2.2x: hold, collect more data (don’t panic kill)

Monthly impact:

  • Reallocate €2,000–4,000/month to winners
  • Catch early problems before rules do (by 3–6 hours)
  • Test creative variations in scale winners
  • Manage audience overlap manually (Meta won’t do this for you)

Layer 3: Strategic Experiments (Weekly)

This is where growth happens.

Richmont:

  • Test new creative angles monthly (seasonal, occasion-based: “Engagement ring trends 2026”)
  • Test new audiences (expand into adjacent markets: “Men buying jewelry for partners”)
  • Test new positioning (loyalty program, gift sets)

Laura Firenze:

  • Test trending styles (seasonal, TikTok trends)
  • Test new demographic angles (age, interest, device type)
  • Test new creative formats (video, carousel, collection)

Monthly impact:

  • Find 1–2 new winning audiences/month
  • Discover new creative angles
  • Growth that automation can’t find

What Didn’t Work

Attempt 1: Meta Native Automated Rules

Tool: Meta Ads Manager built-in rules Cost: Free Result: Failure

Why: Meta rules are binary. You can pause if ROAS < X, but you can’t pause if profit margin < X. We have products with 40% COGS and 60% COGS. Meta sees only ROAS (same for both). It kept pausing products with 40% COGS (high margin, profitable) while running products with 60% COGS (low margin, unprofitable).

Example:

ProductAOVCOGS %Profit marginMeta ROASMeta decisionCorrect decision
Ring (40% COGS)€50040%35%1.9xKill (ROAS < 2x)Keep (margin positive)
Pendant (60% COGS)€20060%8%2.1xKeepKill (margin low)

Meta killed profitable items, kept marginal ones. Automated rules started to fail.

Lesson: ROAS-based rules don’t work for product-level COGS variance.


Attempt 2: Madgicx (at scale)

Tool: Madgicx full stack Cost: €280/month Result: Partial success, then failure

What worked: Creative testing features. Budget scaling recommendations. Good UX.

What failed: Still ROAS-based. Didn’t see COGS.

Example: One of our Laura Firenze campaigns had low-cost items (€30 AOV, 60% COGS). Madgicx flagged it as unprofitable based on ROAS alone. But the margin was actually okay because fees were lower. Madgicx couldn’t see that.

Secondary failure: At scale (€43k/month combined), Madgicx costs climbed to €350+/month. ROI became marginal.

Lesson: Third-party tools are better than Meta native, but they miss COGS-level profit insight.


Attempt 3: Birch Ads (former Revealbot)

Tool: Birch (after rebrand) Cost: €200/month Result: Failure

Same issue as Madgicx: ROAS-based, not profit-based. Plus, Birch increased prices 20–30% after rebrand. At that cost, it needed to be 20–30% better. It wasn’t.

Lesson: Beware of rebrand tax. Birch wasn’t worth the increase.


What Worked

Calatrix + Manual Optimization

Tool: Calatrix for kill rules + manual review twice/day Cost: €100/month Result: Success, ongoing

Why it works:

  1. Shopify profit data: Sees COGS per product. Rules are profit-based, not ROAS-based.

  2. Real-time: Checks every 15 min. By 2 PM, we know if a morning launch is a dud.

  3. Simplicity: Kill rules are simple (profit < 15%), forcing us to scale manually (where judgment matters).

  4. Cost: €100/month is trivial at €43k/month spend. 0.23% of budget. ROI is 8–12x.

Real numbers (last 12 months):

  • Paused: 365 ad sets
  • Average waste prevented: €32/ad set = €11,680/year
  • Tool cost: €1,200/year
  • Net savings: €10,480/year
  • ROI: 8.7x

Our Exact Rules (Production)

Richmont Canada

Rule 1: Break-Even Profit

IF profit margin < 15% in last 7 days
THEN pause ad set
EVALUATION WINDOW: 7 days
MINIMUM SPEND: €100

Why 15%? (Target is 30%, but we protect at 15% to be safe. If it goes below 15%, we’re losing money.)

Rule 2: Learning Phase Guard

IF learning status = "not yet exited" AND spend > €250 in last 2 days
THEN pause ad set
EVALUATION WINDOW: 2 days

Why? Learning phase burns budget. If it costs >€250 to learn, pause and re-launch with better targeting.

Rule 3: Zero Conversions

IF conversions = 0 AND spend > €150 in last 48 hours
THEN pause ad set
EVALUATION WINDOW: 2 days

Why? If we’ve spent €150 with zero conversions, something’s broken (targeting, creative, landing page). Pause and debug.

Rule 4: Frequency Control

IF frequency > 4.5 in last 1 day
THEN pause audience (rotate to new audience)
EVALUATION WINDOW: 1 day

Why? Repeat impressions kill CTR. High frequency = ad fatigue.


Laura Firenze

Rule 1: Break-Even Profit (more aggressive)

IF profit margin < 12% in last 7 days
THEN pause ad set
EVALUATION WINDOW: 7 days
MINIMUM SPEND: €100

Why 12% (vs 15% for Richmont)? Margin is tighter on fashion (48% COGS). Need to be more aggressive to protect profit.

Rule 2: Learning Phase Guard

IF learning status = "not yet exited" AND spend > €200 in last 2 days
THEN pause ad set
EVALUATION WINDOW: 2 days

Why €200 (vs €250)? Smaller AOV means learning phase costs less. €200 is the threshold.

Rule 3: Zero Conversions

IF conversions = 0 AND spend > €120 in last 48 hours
THEN pause ad set
EVALUATION WINDOW: 2 days

Rule 4: Frequency Control

IF frequency > 4 in last 1 day
THEN pause audience (rotate)
EVALUATION WINDOW: 1 day

Monthly Performance Dashboard

Richmont (Last 30 Days)

MetricValueTargetStatus
Ad spend€25,300€25,000On track
Revenue€182,400€180,000Exceeded
ROAS (Meta reported)7.2x6.0xExceeded
ROAS (Shopify actual)2.9x2.5xExceeded
Profit margin avg28%30%On track
Kill rules triggered32~30Normal
Waste prevented€1,050Estimated

Laura Firenze (Last 30 Days)

MetricValueTargetStatus
Ad spend€18,100€18,000On track
Revenue€139,200€140,000Close
ROAS (Meta reported)7.7x7.0xExceeded
ROAS (Shopify actual)2.5x2.3xExceeded
Profit margin avg24%25%On track
Kill rules triggered25~25Normal
Waste prevented€780Estimated

What We Learned

Lesson 1: ROAS is a Lie

Meta’s ROAS is inflated 20–40%. It’s not lying intentionally; it’s attribution modeling (gives credit to every touchpoint). But for Shopify stores, Shopify profit is the truth.

We now measure:

  • Meta ROAS (for comparison to benchmarks)
  • Shopify profit margin (for decision-making)
  • Repeat rate (for LTV planning)

Lesson 2: Simple Rules > Complex Rules

We tried nested conditions (Madgicx style). Result: decision fatigue.

Simple profit margin rules work better: profit < X%, pause. Done.

Simplicity forces us to scale manually, where judgment matters. Automation handles the bleeding. Manual handles the growth.

Lesson 3: Frequency Matters More Than We Thought

Before kill rules, we didn’t track frequency. Turns out: CTR decay is the #1 cost driver at €20k+/month.

Now we pause audiences at frequency > 4.5 (Richmont) and > 4 (Laura Firenze). Saves ~€400/month per store in prevented CTR collapse.

Lesson 4: 7-Day Windows Are Better Than 24h

At first, we tried 24-hour kill rules (be aggressive). Result: killed profitable repeat-customer campaigns.

Switched to 7-day windows. Same kill rule triggers ~25% fewer pauses. But the pauses are 100% more accurate (you’re catching real problems, not noise).

Lesson 5: Manual Scaling Beats Automated Scaling

We tested automated budget scaling (scale +50% if ROAS > 3x). Result: scaled into saturation.

Now we manually review, decide which winners to scale and by how much. Slower, but more strategic. Prevents budget bloat.


The Cost of Mistakes

Mistake 1: No Kill Rules (Pre-Calatrix)

Without automated pausing, we lost ~€2,500/month (1.4% of budget).

How? Ad sets that should have been paused at day 3 (before €300 waste) ran until day 7 (€700 waste).

Mistake 2: ROAS-Based Rules (Madgicx Era)

Using Madgicx’s ROAS rules, we paused profitable items (high margin, lower ROAS) and kept marginal items (low margin, higher ROAS).

Cost: €600–1,000/month in wrong decisions.

Mistake 3: No Frequency Cap (Early Days)

High-frequency campaigns looked good (volume), but CTR collapsed by day 7. Ran until day 14 before we noticed.

Cost: €400–600/month in CTR decay waste.


Why We Built Calatrix

After running these stores for 3 years, we learned:

  1. ROAS tools don’t work for Shopify. Shopify profit is what matters.

  2. Product-level COGS is critical. We have items from 35–65% COGS. One rule doesn’t fit all.

  3. Manual + automated is best. Automation prevents bleeding. Manual finds growth.

  4. Founders understand their own stores best. Generic tools make generic decisions.

So we built Calatrix:

  • Shopify profit data (not Meta ROAS)
  • Product-level COGS integration
  • Simple kill rules (we manually scale)
  • Founder-first UX (straightforward, no complexity)

And we run it on our own stores first. Real data. Real margins. Real ROI.


The Bottom Line

We spend €43k/month on Meta ads across two stores. We use Calatrix for kill rules, manual review for scaling, and strategic thinking for growth.

Automation prevents disasters. Manual optimization finds upside.

ROAS is a metric. Profit is the goal.

Run the same stack on your store — Calatrix for kill rules, real Shopify profit data, 14-day free trial.

We built it for us. We use it every day. It works.

Your store’s profit margin is real, measurable, and worth protecting.

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