FM03: Widget measurement and call-outcome safety case

Contract FM03, revision 2 · Scenarios 10, 11, 12, 13 · Base text is black. All agent-added text must stay inside the blue progress section.

End goal

Reach a defensible end state in which one genuine Google-Ads-originated phone-widget interaction is recorded exactly once with preserved attribution, while connected-call, local-region, urgent-need, and completed-job outcomes remain explicitly separate.

Deliverable A: End-to-end widget evidence chain.

Verify each link separately using GTM, GA4, and Ads configuration readback, live-page inspection, consent states, browser debug evidence, and aggregate provider counts; identify the precise first unproved link.

Must not click a paid ad, place a real call, inject a fake gclid, create a synthetic conversion, or publish GTM/edit GA4 or Ads goals. Must not expose credentials or caller PII.

Screenshot placeholder: consent and tag-debug evidence
Deliverable B: Conversion-definition alignment.

Prove whether the primary optimization signal equals one genuine phone-widget interaction and whether all intended widgets are covered without page-load or duplicate firing; separately specify a privacy-safe manual call-outcome ledger for connected, in-region, urgent vehicle-help calls.

Must not count page views, arbitrary links, repeated taps, or aggregate events as unique useful calls. Must not claim a widget click proves that a call connected or was qualified.

Screenshot placeholder: Ads goal and GA4/GTM event evidence
Deliverable C: Failure-prevention verdicts for scenarios 10, 11, 12, and 13.

Each verdict includes evidence, a negative test for false positives, a day-1-to-day-14 reconciliation check, and an exact owner for any unmeasured call-quality outcome.

Must not mark measurement PREVENTED if attribution or exactly-once behavior remains unverified. Must not conflate the five tracked-widget-click threshold with five connected local urgent calls.

FM03 execution receipt · 2026-09-17 · Contract revision 2

Status: DONE for the authorized read-only audit and evidence handoff. The measurement end state is not falsely marked green: widget-only attribution and exactly-once runtime proof remain EXPOSED/UNKNOWN by contract.

Corrected goal carried forward: exactly-once verifiable Google-Ads-originated phone-widget clicks, with connected, local-region, and urgent vehicle-help call quality measured separately. No CRM premise was used or required.

1. Fresh end-to-end evidence chain

LinkFresh evidenceVerdictBoundary
Account identity and origin gateAds API read at 2026-09-17 13:28:31 CEST matched customer 4891907898, Csupi Autómentés, HUF, Europe/Budapest, enabled, auto-tagging enabled, call reporting enabled. The account selector still points to AD_CALL action 272393221.PASSAccount identity and auto-tagging are verified. This is not proof that a real paid click occurred.
Ads action and campaign-goal availabilityFresh Ads read returned 28 conversion actions, 48 campaigns, 368 campaign-goal rows, 21 enabled EXACT | targets, and 21/21 biddable PHONE_CALL_LEAD / WEBSITE and CALL_FROM_ADS goal rows. Action 6509672057 is enabled, primary, included, GA4 custom, event tel_szam_katt, and MANY_PER_CLICK. Website-call action 7641831023 and ad-call action 272393221 are enabled but secondary/excluded.PASS for configurationConfiguration is not delivery, a unique widget click, a connected call, or a qualified outcome.
GTM container and event tagAuthenticated GTM readback during this run matched account 6006281974, container 61260258, public ID GTM-TH67S8M, workspace 15, and 0 workspace changes. Tag 17 sends tel_szam_katt to G-C0G9FTCV6H with phone placement and viewport parameters and built-in checks for ad_storage, ad_personalization, ad_user_data, and analytics_storage.PASS for presenceTag configuration is present, but the event has not been tied to one real paid widget interaction in this audit.
Trigger scope and parallel Ads tagFresh GTM trigger 7 is Clicks - Just Links with the condition Click URL contains tel:. Tag 17 and the parallel tag 13, Tel szám kattintás - Ads konverzió, both reference this broad trigger. Tag 13 shows Ads conversion ID 871296311 and label VXobCLar9qsDELfau58D.EXPOSEDThe trigger covers the floating widget and other telephone links. It is not a widget-only selector.
Consent and page-load behaviorPassive production reload in authenticated Chrome showed the main-world consent default as analytics_storage denied, ad_storage denied, ad_user_data denied, and ad_personalization denied with a 500 ms wait. The dataLayer contained consent default, consent set, gtm.js, gtm.dom, and gtm.load only. The isolated storage read was UNAVAILABLE, so the saved preference is not claimed.PARTIALThe denied default is observed and the accepted branch was not exercised. No consent click was needed or used.
Live widget and source coverageFresh passive scan found 43 root HTML pages and 43/43 live routes returning HTTP 200. Every source and live page carried one widget-phone element, the GTM marker, tracking-consent.js, phone-reveal.js, and gfn-track-phone. Local/live SHA-256 matched for both scripts. No direct inline gtag config was present.PASS for structural coverageCoverage of markup and scripts does not prove a paid-session interaction or exactly-once firing.
Runtime no-click evidenceProduction network capture saw tracking-consent.js, GTM, gtag/js, WCM loader, and the WCM initialization request return successfully. GA4 emitted page_view only. No tel_szam_katt request, phone-conversion request, or call was observed on the passive reload.PASS for page-load negativeThis proves no page-load phone event in this observation. It does not prove the click path.
GA4 aggregate activityGA4 Data API read at 2026-09-17 13:29:09 CEST for 2026-09-10 through 2026-09-16 returned 7 tel_szam_katt events and 6 users. Four events came from google / cpc, 2 from google / organic, and 1 from data not available. The paid event-session query returned 3 sessions: 2 on /automento-pomaz and 1 on /automentes-buda.PARTIALAggregate events are not unique widget clicks. Non-paid rows prove that raw event totals cannot be treated as Ads-originated.
Ads aggregate activity and call readFresh Ads performance for 2026-09-10 through 2026-09-16 returned 4 All conversions for action 6509672057 and 3 for action 897422774, with 0 Conversions in the returned rows. There was no performance row for GFN 7641831023 or AD_CALL 272393221. Recent call_view returned 0 rows.PARTIAL / EXPOSEDThese are provider aggregates. No website-call conversion or connected call is claimed.
First unproved linkOne legitimate Ads click, its consented paid session, one selected floating widget click, one matching tel_szam_katt event, and one Ads attribution row were not jointly observed.UNKNOWNThe contract forbids the paid click, synthetic gclid, phone call, and synthetic conversion needed to close this link.

2. Conversion-definition comparison

SignalCurrent definition and stateWhat it provesWhat it cannot prove
Primary optimization proxyAds action 6509672057, GA4 custom event tel_szam_katt, ENABLED, primary/included, MANY_PER_CLICK, 90-day click window.A configured and currently selected phone-click proxy is available to C01 bidding.One widget click, widget-only scope, connected call, local region, urgent need, job, or revenue.
Parallel direct tap routeAds action 897422774, WEBPAGE / DEFAULT, ENABLED, secondary/excluded, ONE_PER_CLICK.A separate direct phone-tap action exists outside the current primary bidding signal.That any tap connected, was from Ads, or was the floating widget.
Website connected-call routeAds action 7641831023, WEBSITE_CALL / PHONE_CALL_LEAD, ENABLED, secondary/excluded, ONE_PER_CLICK, 2-second threshold.The account has a configured Google Forwarding Number action for a qualifying website call.Any qualifying call occurred in the current window. No current performance row or recent call_view row was found.
Ad-call routeAds action 272393221, AD_CALL / PHONE_CALL_LEAD, ENABLED, secondary/excluded, MANY_PER_CLICK, 10-second threshold. Account call reporting points here.A separate ad-call reporting route exists.Website-widget attribution or a connected local urgent call. The current call_view read returned 0 recent rows.
GTM event and Ads tagTag 17 emits the GA4 event. Tag 13 is a parallel Ads conversion tag on the same broad tel trigger. GTM tag firing once per event from the supplied receipt is not a deduplication rule for repeated user taps.The configured tag chain is discoverable and consent-aware.Exactly-once behavior across repeated taps, multiple telephone surfaces, or provider imports.
Call-quality ledgerNot a CRM and not a conversion action. One owner-controlled, privacy-safe row per call with tri-state fields for connected, in-region, and urgent vehicle-help.Separately measures the quality dimensions the business actually cares about.It must never be backfilled from a widget event or replaced by a CRM premise.

3. Negative tests and false-positive checks

TestProcedure and resultOutcome
NT-01 page-load false positiveReloaded the production homepage without a phone interaction. Main-world dataLayer and CDP network showed consent/lifecycle/page_view/WCM initialization, with no tel_szam_katt event or phone-conversion request.PASS: no page-load phone event observed.
NT-02 arbitrary-link false positiveRead the live DOM and GTM rule. Navigation, fragment, HTTP, and mailto links are outside the rule because the trigger requires Click URL contains tel:. No arbitrary link was clicked.PASS for configured exclusion. No user interaction was fabricated.
NT-03 repeated-tap and duplicate false positiveCompared the fresh GA4 event count with users and paid event sessions. Seven events came from six users, and the paid Pomáz row alone had 3 events from 2 users. The Ads proxy is MANY_PER_CLICK.EXPOSED: aggregate counts do not establish one event per genuine widget interaction.
NT-04 non-paid attribution false positiveFresh GA4 returned 2 google / organic and 1 data-not-available tel_szam_katt events in the same window as 4 google / cpc events.EXPOSED: raw GA4 event totals must not be counted as Ads-originated.
NT-05 tap-equals-call false positiveCompared proxy activity with separate GFN, AD_CALL, and call_view evidence. Proxy aggregates exist, but GFN/ad-call performance rows and recent call_view rows are absent.EXPOSED: a tap is not a connected call or a qualified local urgent call.
NT-06 prohibited positive proofNo paid ad was clicked, no real phone call was placed, no synthetic gclid or conversion was created, no form was submitted, and no GTM/GA4/Ads mutation was issued.PASS for the read-only safety boundary.

4. Scenario verdicts, owners, and day-1-to-day-14 reconciliation

ScenarioVerdictEvidence and negative testD1-D14 check and triggerOwner
10 · Consent and tagsEXPOSEDDenied consent default, GTM built-in consent checks, tag presence, and no-click page-load negative are verified. Accepted-state recovery and a consented paid interaction remain unverified.D1 capture consent state, tag version, and Ads/GA4 baseline. By D7, if Ads has clicks but no delayed paid event readback, flag measurement gap. By D14, do not mark PREVENTED without a legitimate consented event.FM03 measurement owner
11 · Exactly-once widget eventEXPOSED43/43 widget markers and tag 17 are present, and NT-01 passes. Broad tel trigger, parallel tag, MANY_PER_CLICK, and event/user divergence expose duplicate and non-widget paths.D1 record widget scope and one-event acceptance rule. D7 trigger if fewer than 3 distinct verified widget clicks or any unexplained event duplication. D14 passes only with at least 5 distinct Ads-originated widget clicks tied one-to-one to events.FM03 measurement owner
12 · Paid attributionUNKNOWNAds auto-tagging and GA4 google / cpc rows are present, but no genuine paid session was exercised. NT-04 proves non-paid event rows exist and the paid branch was not fabricated.D1 record Ads click total and GA4 paid-source event total separately. Reconcile daily after normal reporting delay. Any unmatched paid event or Ads click at D7/D14 stays UNKNOWN, never zero.FM03 measurement owner
13 · Connected, local, urgent call outcomeEXPOSEDSelected action is a phone-click proxy. GFN and AD_CALL have no current performance row, recent call_view is empty, and no outcome ledger exists yet. NT-05 rejects tap-equals-call.D1-D14 record connected calls, connected in-region calls, and connected urgent vehicle-help calls in separate denominators. Missing entries are UNKNOWN, not zero. If the ledger is not updated the same day, quality remains UNKNOWN.Csupek Péter

5. Privacy-safe call-outcome ledger specification

Owner: Csupek Péter records the call disposition after each answered or missed business call. The FM03 measurement owner reads Ads and GA4 aggregates and reports the daily totals. No CRM, CRM import, phone-number matching, recording, transcript, caller name, vehicle registration, or full address is needed.

FieldAllowed valueRule
Row key and local timestampOwner-created date plus sequence, Europe/Budapest timeDo not use caller identity or phone number as the key.
Source bucketAds-attributed website call, Ads-attributed ad call, non-Ads, or unknownUse only provider or owner evidence. Never infer Ads origin from a phone click.
ConnectedYes, no, or unknownYes only when the call was answered and a conversation occurred. Missing is unknown.
In-regionYes, no, or unknownUse only a coarse service-area bucket after the caller states location. Do not store a precise address.
Urgent vehicle-helpYes, no, or unknownYes only for an urgent vehicle-help request. Other enquiries stay separate.
Disposition noteNone, one short operational category, or unknownNo free-text PII, recording, transcript, or sensitive detail.

Daily output is a count table with separate columns: all logged calls, connected, connected and in-region, connected and urgent, and connected, in-region, and urgent. These counts are never added to widget-click conversions and are never presented as CRM leads or jobs.

6. Reconciliation plan and rollback-safe response

7. Acceptance receipt

Evidence limit: A real paid-session click, consented widget interaction, exact one-to-one event, forwarding-number replacement, connected call, local-region classification, and urgent-call classification remain unperformed and therefore are not claimed.

Fresh evidence timestamps: Ads API 2026-09-17 13:28:31 CEST; GA4 Data/Admin API 2026-09-17 13:29:09 CEST; GTM authenticated UI and production browser/CDP readback during this run before the 2026-09-17 13:39 CEST receipt collation.