BACK TO BLOG
USE CASESNovember 11, 20269 min read

Optmyzr With Causality Engine: Check the ROAS Your Rules Bid On

JH

By Joris van Huët

Enterprise Interim CMO & Marketing Leader · 15+ years · 50+ orgs

Published

2026-11-11

The short answer: a bid rule is only as right as the number it reads. Optmyzr, the PPC management layer that audits and automates Google, Microsoft and other ad accounts, runs its Rule Engine on the conversion columns Google Ads hands it, and Google Ads counts a conversion up to 30 days after the click unless someone changed the window (Google's conversion window page). So when a Target ROAS rule raises bids on a campaign showing 4.5 while the store's month looks flat, both screens can be correct at once. Causality Engine, a causal attribution tool that reads one GA4 export, gives a second opinion on what search caused, and the first finding is free on the start page.

Disclosure: I founded Causality Engine and own it, and this page recommends it. Every claim about it links to Causality Engine's own pages.

Before the next scheduled run:

  1. Divide twice. For example, $162,000 of conversion value on $36,000 of spend is a ROAS of 162,000 / 36,000 = 4.5 in Google Ads. If GA4's last click gives Paid Search $97,200 for the same month, the same spend returns 97,200 / 36,000 = 2.7. A rule set to hold a target of 4 raises bids on the first figure and cuts them on the second.
  2. Let the rule report before it acts. The Rule Engine automation article offers email, an export to a Google Sheet or Add to Alerts in place of Apply Changes, and emails go out on every run, even an empty one.
  3. Name the column each rule reads. Conversions, Conv. value, or the "by conv. time" versions (Optmyzr's conversion time article). Write it beside the rule.

Optmyzr and the read, row by row

QuestionOptmyzrCausality Engine
What it isAudits, alerts and rule-based automation over ad accounts (entry)A causal read of the GA4 Attribution paths export (entry)
The number it acts onGoogle Ads columns such as Conversions, Conv. value and ROAS, conv. value divided by cost (Optmyzr metrics glossary)Each channel's caused share beside a last-click rebuild, graded 0 to 100 for data health (how it works)
Whose rule credits the saleGoogle Ads: data-driven attribution by default, 30-day click window by default (attribution models, conversion windows)Its own model, run on the paths GA4 recorded
How the clicks reach GA4Google Ads auto-tagging adds a GCLID, on by default for new accounts (auto-tagging)Reads whatever channels the export holds
GA4 channelPaid Search for Search campaigns, Cross-network for Performance Max, Paid Shopping for Shopping (default channel group)Same file, same channels
Integration between themNoneNone; there is no connector to wait for (integrations)
CostEssentials from $299 a month on monthly billing at the $25K spend tier (pricing, checked on 11 November 2026)Free first finding, then €99 per read, excluding VAT (pricing, checked on 11 November 2026)

What a rule reads when it reads "Conversions"

Optmyzr counts no sales itself. The Rule Engine overview describes if-then strategies that change Google Ads, Amazon Ads, Microsoft Ads, Meta Ads and LinkedIn Ads accounts on a schedule, and the metrics glossary defines ROAS as Google Ads conversion value over cost, adding that the value is only as accurate as the tracking code behind it.

The credit rule underneath belongs to Google. Data-driven is the default model for most conversion actions and splits credit among the ad interactions on the path (attribution models). The click-through window defaults to 30 days for Search and Display, can run from 1 to 90 days depending on the source, and a view-through window of 1 day applies when nobody customises it (conversion windows).

Two details change what a rule sees:

  • The date a conversion lands on. The standard columns file it under the day of the click. Optmyzr's "by conv. time" metrics file it under the day it happened instead, and they work in Rule Engine scopes from Account to Portfolio Bidding Strategy, for Google Ads only (conversion time article).
  • How far back a bid rule looks. The pre-built Bid to Target ROAS strategies widen their lookback from 7 days towards 90 until a minimum number of conversions is met (pre-built strategies).

The input can be swapped: the external data article lets a rule read columns from a linked Google Sheet. The default is still the platform's own count.

Where Google Ads clicks land in GA4

Auto-tagging appends a GCLID to the landing URL, and Google's auto-tagging page says GA4 prioritises it over manual UTM tags, with no override. With the accounts linked, GA4's default channel group files Google Ads traffic by campaign type: Search under Paid Search, Shopping under Paid Shopping, Performance Max and Demand Gen under Cross-network.

Two warnings from the same page: a site that rejects unknown URL parameters serves an error with auto-tagging on, and a redirect has to pass the GCLID through to the final landing page. Microsoft Ads clicks fall under Google's rules for manual traffic instead, where a search-engine source with a medium such as cpc reaches Paid Search.

The worked example: a rule that raises on one figure

For example, with numbers invented for the arithmetic and no store behind them: a month of $36,000 on Google Ads. Google Ads reports $162,000 of conversion value, so Optmyzr's Bid to Target ROAS rule, set to 4, sees 4.5 and raises bids. Meta Ads Manager claims $88,560. The store booked $214,380.

Who reportsRevenue claimedROAS on $36,000
Google Ads, data-driven, 30-day click$162,0004.5
GA4 last click, Paid Search plus Cross-network$97,2002.7
Meta Ads Manager$88,560not Google's spend
The store$214,380n/a

The two platforms together claim 162,000 + 88,560 = $250,560, which is 250,560 - 214,380 = $36,180 more than the store took. Google's figure sits 162,000 - 97,200 = $64,800 above GA4's last click, the gap a data-driven model with a 30-day window is built to open.

None of those rows is the cause. Per its how-it-works page, a causal read sets each channel's caused share next to a last-click rebuild from the same export, with a data-health score from 0 to 100, and a next step to raise, cut or hold, tested in one region first. If that read lands near 2.7 rather than 4.5, switch the rule to Add to Alerts and test before it raises again.

A free holdout, built from Optmyzr's own filter

Optmyzr cannot hold back a market by itself, but its strategies can be narrowed. The strategy settings article documents Filters that run a strategy only on keywords and ad groups with a given label. Label the ad groups in the campaigns that serve one region, run the bid rule on those alone, and leave a comparable region untouched. The comparison is by hand: store orders per shipping region, four weeks before and four weeks after.

For example, the ruled region goes from 1,240 to 1,302 orders, up 62, and the untouched one from 1,180 to 1,192, up 12. The rule bought about 62 - 12 = 50 orders. That answer needs no software.

What the pairing will not do

  • Nothing joins the two. Optmyzr connects to ad accounts; Causality Engine takes a GA4 file and nothing else (integrations).
  • The read is per channel. It reports Paid Search as a whole, not a keyword, an ad group or one rule's bid changes. Which search terms to block stays Optmyzr's job, and its Negative Keyword Finder is built for it.
  • Thin history stops it. Upload 12 months or more (how it works); a channel under 1% of credit on both methods is called too small to act on, and the one-off read page advises against buying when analytics history is thin or broken.

There is a billing fact behind the default, too. Optmyzr prices by the ad spend connected to it, and the billing FAQ charges $3.50 per extra $1,000 above the 25K plan's limit, so every bid a rule raises on Google's 4.5 also lifts the spend that Optmyzr's invoice is set against.

For how search sits beside Meta, email and organic, Causality Engine, which I founded, reads the GA4 export on the start page: the first finding is free and runs in your browser, and the full read is €99 once, refundable for 30 days (pricing, checked on 11 November 2026).

See also

FAQ

Does Optmyzr send data to Causality Engine?

No. They never connect. Optmyzr reads Google Ads through its own login; Causality Engine reads only the GA4 export you download, in which Optmyzr's work shows up as the Paid Search and Cross-network rows (integrations page).

Should Optmyzr rules use the "by conv. time" columns?

My recommendation: for rules that look back 7 days or less, yes. Standard columns file a late conversion under the click date, so the newest days fill in afterwards; the by-time versions count when the sale happened (conversion time article). Neither version is causal.

Can a rule bid on GA4 numbers instead of Google Ads conversions?

Partly. Additional Conversion Columns can bring GA4 conversions into Optmyzr, up to 5 custom conversions per account (side tray guide). Those are still last-touch figures from GA4's own attribution, not a causal estimate.

TAGS
Causality EngineOptmyzrPaid Search AttributionGA4Worked Example

ABOUT THE AUTHOR

I am Joris van Huët, an enterprise interim CMO. 15+ years, 50+ organizations, including ING, P&G, Nestlé, BNP Paribas, WeTransfer and Vinted. I take on innovation projects (venture building, design sprints), agentic marketing (setting up and running AI agents) and hands-on multi-channel work. See the track record.

I wrote and published this with AI assistance, and I answer for it. Claims about my own experience are limited to the track record above, and a statistic links to its source or is labelled as an example. I sell interim and fractional CMO work, which is why this site exists. How this site is written.

Agentic marketing, built for your team

The agents in this article, built into your workflows and handed over to your team: the first one within two weeks.

With Joris van Huët, interim and fractional CMO in Utrecht. From EUR 5,000 a month, monthly cycles, a 30-day exit.