Finance in a Melbourne B2B shop will not argue with pageviews. They will argue with a week where Google Ads claims 84 conversions and the CRM logged 31 booked conversations. That gap is the job of GA4 in Australia: key events that look like an enquiry a salesperson would actually pick up, not a thank-you page fire that also counted a phone tap and a HubSpot webhook.
Another tactics list will tell you to “mark generate_lead as a conversion.” A scored audit forces you to inspect the event the way an ops lead inspects a job sheet. Pass, weak, or fail. Then you freeze what Smart Bidding is allowed to learn from. With search CPC sitting near three dollars and a chunk of SEM budgets still leaking on junk queries, dirty events are not a reporting nuisance. They are the input that inflates spend while enquiry quality slides.
This piece is a self-audit for marketing decision-makers who own the number. You will score the stack, find the leaks, and leave with a 30-day repair order. Tracking first. Intent second. Budget last.
Twelve GA4 checks Australian marketers can finish this week
Work through these in DebugView and the Events report, then spot-check last week’s CRM. You are looking for events that survive a form, a click-to-call, and a calendar booking without double counting. If an item is not inspectable in the next few hours, skip it. Awareness is not on this card.
Audit scorecard
-
Key events vs diary volume
Pull the last 28 days of GA4 key events named generate_lead, form_submit, or booked_consult. Line them up against CRM or calendar bookings, not MQL status. Good looks like events within about 15% of true enquiries after you strip spam and after-hours voicemail. Fail is a 2x or 3x overcount that your Google Ads conversion action is still ingesting. That fail teaches bidding to buy thank-you reloads and duplicate GTM fires.
-
One enquiry, one event name Inspect GTM: form submit, click-to-call, and
One enquiry, one event name Inspect GTM: form submit, click-to-call, and WhatsApp or SMS click should not all share generate_lead unless you have a server-side de-dupe key. Good is distinct events (form_enquiry, call_click, chat_click) with a single primary key event used for bidding. Fail is three tags on the same thank-you URL, each marked as a conversion. You will see it as stacked sessions in DebugView when you submit once.
-
Thank-you vs submit listener
Fire on successful submit or a unique confirmation URL, not on page_view of a reusable /thanks/ template. Good: the event only fires after a 2xx form response or a dataLayer push with form_id. Fail: SPA routes that re-fire on back button, or Elementor/HubSpot embeds that push on every field blur. Cost is phantom leads that look cheap in Ads and never appear in the diary.
-
Call and click-to-call hygiene Australian enquiry mix is heavy on mobile
Call and click-to-call hygiene Australian enquiry mix is heavy on mobile click-to-call, especially after hours in Sydney and Brisbane traffic. Count a tap only if the tel: link is on a landing page, not every header tap sitewide. Good: event parameter page_type = landing and a 30-second debounce. Fail: counting footer tel links on blog posts as conversions. That trains Performance Max (which already drives the bulk in many AU accounts) to hunt cheap mobile taps, not booked jobs.
-
Parameters that sales would recognise
Check event parameters: form_id, service, location (suburb or state), lead_value if you have a known consult fee, and enquiry_channel. Good: you can filter Melbourne vs Perth without opening the CRM. Fail: event name only, no parameters, so a $0 newsletter signup and a $2,400 demo request look identical to Smart Bidding. Parameters are not vanity. They are how you refuse to bid the same on both.
-
Enhanced conversions and first-party match With 20%+ of conversion data
Enhanced conversions and first-party match With 20%+ of conversion data still disappearing to blockers and consent, hashed email or phone on the enquiry event is the minimum. Good: Enhanced Conversions (unified) on the same primary event Ads uses, consent granted where required, no PII in plain text. Fail: client-side only, no user_data, and Ads “optimising” off a thin, noisy sample. Signal quality beats adding another campaign.
-
Ads import matches GA4, not a second pixel
Open Google Ads conversions. The primary action should be the GA4 key event (or a tightly mapped GTM conversion linker event), not a parallel Google tag on the same button. Good: one primary, secondaries for observation. Fail: GA4 plus an old Universal-era goal plus a page-load pixel. Last-click already double-counts across channels. Do not hand bidding three copies of the same enquiry.
-
Consent Mode does not silently drop the only good event If you run Conse
Consent Mode does not silently drop the only good event If you run Consent Mode, check modelled vs observed conversions in GA4 advertising reports. Good: you still see observed enquiry events on granted traffic, and Ads is not starved. Fail: analytics_storage denied and no cookieless pings, so paid looks “dead” after a CMP change. Teams then pause the best campaign because the tag never fired, not because demand died.
-
Landing speed vs form complete [Chrome UX Report](https://developer
Landing speed vs form complete Chrome UX Report data shows fewer than six in ten origins globally pass all three Core Web Vitals. If INP is ugly on your enquiry page, the submit listener never runs for a slice of mobile users. Good: LCP and INP in the green on the paid landing URL, form still usable on 4G. Fail: a 4MB hero on a Gold Coast campaign URL and a “low conversion rate” you treat as a bid problem. Check the page before you add budget.
-
0 UTM and session stitching on paid Broken UTMs send Google Ads traffic into (direct) or unassigned. Then your key event still fires, but channel reports lie, so you cut the wrong campaign. Good: every paid URL uses consistent source/medium/campaign via a builder, auto-tagging on, and no conflicting manual gclid strips. Fail: agency templates that overwrite utm_source on redirect. Fix measurement before you reallocate AUD.
-
1 Form friction you can see, not guess If GA4 shows generate_lead lagging sessions on the landing URL, watch the form. Rage clicks on a broken suburb dropdown, GST-inclusive price fields that stall, or a CAPTCHA that never loads on Safari will never show as a “failed event.” Use on-page behaviour from HeyLead Insights to see abandon before the dataLayer push. Good: you can name the field that kills the enquiry. Fail: you only raise bids.
-
2 Spam and bot events excluded from bidding Filter obvious junk: 0-second sessions, known bot ASNs, form fills with fake .ru emails if that is not your market, and repeated fires from the same client_id in under a minute. Good: those events exist in GA4 for QA but are not marked key, and Ads does not import them. Fail: a weekend spike of 40 “leads” that sales never saw, followed by a Monday bid increase. Garbage in, expensive out.
If the scorecard already shows three fails on items 1-3, stop adding campaigns. You need GA4 configuration that treats an enquiry as a business event, not another tag in the container.
Get a free marketing audit - we review your search, ads, and landing pages and send back what to fix first.
Get a free audit
Pass, weak, or fail without turning this into a philosophy deck
Score each item in 10 minutes. Pass: you can screenshot the proof this week (DebugView fire, CRM count, Ads conversion mapping). Weak: it works on desktop Chrome and fails on iPhone Safari, or it works on one landing template and not the WordPress clone in Adelaide. Fail: you cannot reconcile counts, or two systems both bid on the same click.
Priority is not democratic. Tracking fails go first. If item 1, 2, or 7 is a fail, freeze new spend tests. Intent fails (wrong event on newsletter, sitewide call clicks) go next. Speed and form friction (9 and 11) before new creative. Creative will not save a conversion action that is lying.
Do not average the score into a vanity 8/12. One fail on duplicate key events outweighs nine passes on naming conventions. Write the three fails on a sticky note. Those are the only inputs you are allowed to change in Ads this fortnight.
A Perth founder who owned marketing ran this scoring after Performance Max “looked healthy” at a 4x-ish ROAS in-platform while sales said the calendar was quiet. The mechanism was a thank-you page that also hosted a live chat widget firing generate_lead on widget open. They unmarked the chat event, kept form_enquiry as the only key event, and ROAS in Ads dropped on paper while booked consults held. That is a good audit. Ugly numbers, real pipeline. The same pattern shows up in other audits: a second listener on HubSpot or a thank-you URL that Ads loved and sales never saw, or a submit event that held in Chrome while iPhone Safari dropped it so bidding treated Melbourne desktop as the whole market. One unmarked event, or one browser-specific fire, is usually the whole strategy.

Thirty days of repairs, not a new measurement religion
You are not migrating to a new analytics product. You are making the events you already have match the diary. Keep the same property. Change what is marked key and what Ads is allowed to import.
30-day repair sequence
-
Days 1-3: export 28 days of key events and CRM enquiries. Name the overcount. Screenshot DebugView for one real form, one call tap, one chat click. Unmark extras as key events. Do not delete history.
-
Days 4-8: split event names. Attach form_id, service, and state. Turn on Enhanced Conversions on the primary enquiry event only. Confirm Google Ads has one primary conversion, observation for the rest.
-
Days 9-14: fix UTMs on every paid template. Run the landing URL through a vitals check. Watch five form sessions for field-level abandon. Repair the dropdown or GST field before you touch bids.
-
Days 15-21: exclude spam from key events. Recheck Consent Mode so granted traffic still sends observed conversions. Reconcile week two of CRM vs GA4. You want the gap under 15%, not a pretty dashboard.
-
Days 22-30: only then reopen budget. If PMax is the bulk of spend, give it 7-10 days on the cleaned signal before you judge CPA. Do not reset learning with daily conversion-action edits.
Free tools - try these yourself
A Canberra SaaS marketer delayed step 2 and kept two primary conversions “just in case.” Smart Bidding split credit, CPA looked 37% better than CRM, and they scaled. The repair in week three was cheaper than the wasted mid-month spend. Sequence matters more than tools.
If landing templates still leak after the vitals pass, treat that as a conversion problem, not a GA4 naming problem. Dedicated enquiry pages beat dumping paid traffic on the homepage. When the form is the bottleneck, get a second pair of eyes on event configuration rather than launching another campaign structure.

FAQs
Should every form on the Australian site be a GA4 key event?
No. Newsletter, download, and “contact later” forms can be events. Only the action that matches a sales-accepted enquiry should be key and imported as the primary Ads conversion. Everything else is observation or a funnel step.
Do we still need Google Tag Manager if GA4 is already on the site?
If the native tag fires on page view only, you cannot control form vs call vs chat without GTM or a proper dataLayer. The checklist assumes you can see each trigger. If you cannot, that is a fail on item 2, not a reason to skip the audit.
How tight should GA4 and CRM counts be?
Aim to explain every material gap: spam, after-hours voicemail, consent-denied traffic, and sales rejecting junk. A persistent 2x overcount is a tagging problem. A 10-15% gap with a written explanation is operable. Perfect match is rare once privacy and ad blockers sit in the path.
When can we turn Smart Bidding back up?
After the primary conversion has been stable for a full learning window and week-over-week CRM counts agree. Changing the conversion action mid-test resets learning. That is how automated bidding looks like it “inflates budget” when the real issue was a noisy event.
What about Meta if Google is the source of truth?
Mirror the same business event, not the same pixel soup. If Meta counts Instant Form opens and GA4 counts booked calls, you will never reconcile ROAS. Align the definition first. Then argue channels.
Putting it to work
Execution sprint
This week
- Pull 30-90 days of performance for ga4 events checklist that match real enquiries (Search Console, ads, CRM, or call logs - whatever you have).
- Flag the top leak: wrong intent, weak page, slow response, or dirty conversion tracking.
- Ship one fix on the highest-traffic money path (page, campaign split, or response rule).
- Run the free tools below on that same URL or account and log the findings.
Free tools for this sprint
Next 30 days
- Expand the fix to the next one or two money paths only after the first one shows cleaner bookings.
- Align creative, keywords, or content with the same offer the page now states.
- Review booked outcomes weekly; cut anything that still only produces unqualified volume.
This week
-
Export 28 days of GA4 key events and the matching CRM or calendar rows.
-
Submit one real enquiry in GTM Preview and confirm a single fire.
-
Unmark duplicate key events. Leave one primary for Ads.
-
Rebuild paid URLs with the UTM builder so channel reports stop lying.
-
Run the main enquiry landing URL through the Core Web Vitals checker.
-
Watch five form sessions for the field that actually kills completion.
Next 30 days
-
Add hashed user_data on the primary enquiry event.
-
Split form, call, and chat into named events with suburb or state parameters.
-
Filter spam from key events without deleting QA data.
-
Reconcile counts weekly until the gap is explained, then reopen budget tests.
Start by lining last month’s diary against the Events report and circling every name that is still marked key. If the mismatch is the conversion action Google Ads is learning from, that is the exact plumbing HeyLead takes off your plate: GA4 events, GTM triggers, and Ads import so enquiries in Australia match what sales will actually pick up. Chat with us on WhatsApp
Free marketing audit, or reach Martin directly:
Get a free audit Connect on WhatsApp · [email protected]