C01 / Google Ads remediation / revision 1 / black-base contract
Campaign delivery and phone-widget optimization
This is the live goal contract and progress surface for the new LUNA.MaX execution session.
End goal
Leave the authorized C01 Google Ads setup able to generate qualified search clicks across its intended locations, with safe budget and bidding controls, policy-eligible ads and valid destinations, and phone-widget clicks as the campaign optimization signal. Leave a complete private evidence trail that makes every material campaign setting and every ad-copy asset reviewable.
Required end state
- The 21 intended EXACT campaigns are correctly scoped, eligible to serve, and able to spend against their approved budget pools. No legacy campaign is enabled.
- Every enabled target has at least one enabled, policy-approved ad in an enabled ad group with intended exact-keyword coverage and a live HTTP-success final URL. No serving ad is left with a known destination failure or broken keyword-insertion copy.
- Primary and secondary campaign pools are configured so that the intended targets can bid. No active target is silently blocked by a paused portfolio, a placeholder bid, missing ad, missing keyword, conflicting negative, schedule/device/network restriction, or accidental location overlap.
- One canonical conversion action records consented clicks on the intended phone widgets and is the primary optimization signal for the target campaigns. Real-call/forwarding-number actions and duplicate phone-tap actions are secondary or otherwise excluded from bidding. The click event fires once, with no reintroduced inline Ads/GA4 tags.
- The private overview artifact contains the actual current ad copy, all headline and description assets, realistic RSA combination coverage, and a big campaign-by-setting table with current state, rationale, risk critique, and better option.
- Every material end-state claim has fresh provider readback, script output, live HTTP/DOM/network evidence, or a named screenshot. Unknown or delayed facts remain explicitly labelled.
Goal-loop states and transition gates
| State | Allowed meaning | Transition evidence |
|---|---|---|
| PLANNED | This contract exists, the localhost page is open, and no execution claim is made. | Plan file exists and is reachable through the localhost URL. |
| IN PROGRESS | Authorized Ads/tracking changes may be made inside the defined scope. The plan is updated continuously. | Each update records the observed state, timestamp, and evidence path in blue text. |
| VERIFYING | Writes are paused while the same account/object state is read back. | Provider/API/UI readback matches the intended change, or the discrepancy is recorded. |
| COMPLETE | All required deliverables and end-state gates pass. No material issue is silently deferred. | Fresh provider readback, artifact checks, and live/local verification are linked in the final handoff. |
| BLOCKED | An irreducible provider, authentication, or physical dependency remains after safe recovery. | Exact failed gate, attempted alternatives, owner action, and resume point are recorded. Do not call this complete. |
Target deliverables and proof floor
| Deliverable | Required end state | Verification criteria | Constraints: must not do | Evidence placeholder |
|---|---|---|---|---|
| D1. Serving-ready campaigns | All 21 EXACT targets have eligible enabled ads, active ad groups, intended exact keywords/negatives, valid destinations, and controls that permit intended search delivery. Legacy remains paused. | Fresh API/UI readback lists every target campaign and ID, status, ad/ad-group/keyword counts, policy status, final URL HTTP result, budgets, bidding, locations, schedule, devices, networks, and campaign-goal status. The result must explicitly say which targets are actively eligible to bid versus only enabled. |
|
Screenshot placeholder: Ads campaign grid and serving/eligibility readback |
| D2. Ads and landing quality | Current serving ads use safe, location-relevant copy, no broken dynamic insertion, no known destination failure, and valid final URLs. Disapproved serving assets are replaced or removed from the enabled path. | Provider asset/ad readback records every enabled target ad, headlines, descriptions, pins, ad strength, approval status and policy reasons. Automated HTTP checks cover every enabled final URL and the overview records any remaining uncertainty. |
|
Screenshot placeholder: approved ad and destination details |
| D3. Phone-widget click optimization | One canonical consent-aware conversion action counts the intended phone-widget click, is primary/included for C01 bidding, and is not duplicated by another primary phone-click action. Real-call actions are secondary or non-biddable. | Ads readback proves action ID/name, status, category, primary/secondary, counting, windows, attribution, and campaign goal inclusion. GTM/container readback and a safe preview or network/DOM test prove the widget click event fires once under the allowed consent state. A real attributed call is not required for this click-optimization end state, but must not be falsely claimed. |
|
Screenshot placeholder: conversion action and GTM/preview evidence |
| D4. Ad-copy and RSA overview | google-ads-c01-settings-and-ad-copy-overview.html is a private, readable inventory of the actual current copy: campaign/ad/ad-group, every headline, pin, every description, final URL, policy/strength state, and the headline-description combinations that can appear. |
Provider readback row counts reconcile to the enabled target scope. The artifact distinguishes actual assets from illustrative RSA combinations, identifies pinned positions, states any Google serving uncertainty, and has no stale or invented copy. |
|
Screenshot placeholder: ad-copy overview and combination explorer |
| D5. Complete campaign settings matrix | The same overview contains a large table covering every material Google Ads setting exposed for each campaign and relevant child object, with current value, rationale, risk critique, and a better option or “no change” explanation. | Matrix coverage is checked against the provider schema/UI: status, budget, bidding, goals, networks, locations/presence, language, schedule, devices, URL options, ad groups, keywords/match/negatives, ads/assets, policy, and serving diagnostics. Unknown/unavailable fields are explicitly labelled. |
|
Screenshot placeholder: settings matrix and rationale/risk columns |
| D6. Final evidence and localhost progress | This plan remains available at the localhost URL throughout execution and ends with a timestamped status, linked artifacts, provider receipt, verification results, unresolved limits, and exact resume action if anything remains. | Plan is served by a local HTTP server and opened in the ChatGPT in-app browser. Every executor-added or changed text block is blue. Final HTML files are non-empty, valid, private/local, and checked for no credentials. Ads/GTM/GA4/site changes receive same-object post-write readback. |
|
Screenshot placeholder: localhost plan view and final verification panel |
Baseline risks to close
- 12 of 21 enabled targets previously had no enabled ad.
- Five primary targets were limited by disapproved ads, including destination failures.
- The secondary bidding pool was previously paused with 0.01 HUF ad-group bids.
- Only nine target enabled groups previously exposed an enabled ad; enabled campaign status was not proof of serving.
- Primary website-call conversion proof was absent. The requested optimization target is now a phone-widget click, with real-call actions kept out of primary bidding.
- Previous 30-day metrics overlapped pre-launch activity and may lag. Post-change readback must use a fresh timestamp and label delayed facts.
Live executor progress
2026-09-15 16:53:38 CEST · IN PROGRESS · baseline verified
Fresh pre-write evidence confirms customer 4891907898 / Csupi Autómentés: exactly 21 enabled EXACT | targets and 23 non-EXACT legacy campaigns paused. The logic audit identifies 12 target campaigns without an enabled ad, five primary targets limited by disapproved ads, a paused secondary bidding pool with 0.01 HUF child bids, and destination failures in the prior target-ad read. The tracking audit confirms the consent/GTM/Ads/GA4/WCM stack and the canonical website-call action, but no real attributed call. Next: fresh read-only/API/UI inventory, then only the authorized C01 fixes with same-object readback.
Evidence: logic audit, tracking audit, and this plan’s black-base contract.
2026-09-15 16:57:44 CEST · VERIFYING · first provider mutation
After a fresh identity/scope check, removed 68 obsolete campaign criteria from EXACT | Buda | Primary (campaign 23974835198). Google Ads returned 68 mutation results. A same-call read was eventually consistent and initially returned an incomplete Buda row set; a fresh follow-up snapshot at 16:58 CEST confirmed exactly four active criteria: Hungarian language plus desktop, mobile, and tablet devices. The 21 target campaigns remained enabled and all 23 non-EXACT legacy campaigns remained paused. No legacy object was included in the request.
2026-09-15 17:42:40 CEST · VERIFYING · final provider and artifact readback
Fresh final snapshot captured at 2026-09-15T15:23:55.663531+00:00 confirms customer 4891907898 / Csupi Autómentés, exactly 21 enabled EXACT | targets, 23 non-EXACT non-removed legacy campaigns paused, and no query errors. Target budgets and bidding controls remain within the approved ceiling: primary 4,276.30 HUF/day, secondary 986.80 HUF/day, Generic 1,315.80 HUF/day, combined 199,998.56 HUF over 30.4 days. No budget increase or new spend commitment was made.
Target structure now reads back as 89 active campaign criteria after 629 obsolete criteria removals and 13 criteria creations, including Hungarian language on all targets, Desktop/Mobile/Tablet on all targets, and the Generic Budakeszi 40 km proximity plus four exact negatives. Non-generic active location rows remain UNKNOWN/PARTIAL because conflicting historical scope was not invented. Current enabled groups contain 86 positive EXACT keyword rows, with the Érd and Solymár missing terms created; no active phrase/broad target rows or target ad-group negatives remain.
RSA reconciliation created 21 enabled named RSAs and paused 22 old target ads. Exactly one enabled target RSA remains per campaign, with valid location-relevant copy and 21/21 canonical final URLs returning HTTP 200. Provider policy readback is still REVIEW_IN_PROGRESS / UNKNOWN approval and PENDING strength for the new ads, so D1 and D2 remain PENDING. Campaign diagnostics may retain HAS_ADS_DISAPPROVED, NO_AD_GROUP_ADS, or review-learning reasons from paused/historical objects and must not be read as final delivery proof.
The editable GA4 phone-click action 6509672057 is now primary_for_goal=true and included in conversions. Forwarding-number action 7641831023, duplicate phone-tap action 897422774, and ad-call action 272393221 are secondary/excluded; account call reporting still points to the separate ad-call action. GTM was verified read-only in container GTM-TH67S8M, workspace 15 with zero changes: tag 17 emits tel_szam_katt, tag 13 is the Ads conversion tag, both use the broad tel: link trigger, and built-in consent checks were read. No GTM publish, real call, form, synthetic conversion, fake gclid, or live phone click was performed, so D3 is PARTIAL.
The approved customer-level call asset 47107206664 remains enabled and eligible. Direct campaign-association validation was rejected by Google with FIELD_TYPE_INCOMPATIBLE_WITH_ASSET_TYPE; no invalid actual write was made. The overview records account-level inheritance as expected but not directly enumerated by the campaign-asset read. Passive live checks found one GTM bootstrap, one consent script, one widget marker, and no inline gtag() on representative pages. D3 is PARTIAL, D4 is PASS, D5 is PARTIAL, and D6 is PASS. The six screenshot slots remain explicit placeholders because no fresh Ads screenshots were captured.
Evidence: full private ad-copy/settings overview, compact JSON receipt, and the final handoff path recorded below. No site deployment or public hosting occurred.
2026-09-15 17:51:04 CEST · BLOCKED · provider review gate confirmed
A second fresh read-only API snapshot at 2026-09-15T15:47:21.658074+00:00 returned the same 21 enabled target RSAs with REVIEW_IN_PROGRESS, UNKNOWN approval, and PENDING strength. An independent authenticated Ads-console fallback was attempted for customer 4891907898; Google returned an HTTP 500 error page, so it supplied no contradictory policy readback. No guessed URL variant, policy bypass, or additional provider write was attempted.
This is an external blocker for the terminal D1/D2 claim, not for the completed artifacts. The exact resume point is a same-object readback after Google finishes review. D1/D2 remain PENDING; D3/D5 remain PARTIAL; D4/D6 remain PASS. The parent handoff contains the recovery questionnaire, tested alternatives, ownership, and rollback point.
Executor editing rule: preserve this base structure, keep every new or changed progress/report text inside an .agent-update element so it renders blue, and leave the base contract text black. Update this file as evidence arrives, not only at the end.
Parent acceptance
Parent task: 01a0a269-78d2-7191-9709-7009b8d01715 on local. The parent accepts only a final handoff that links D1-D6, states actual provider results, distinguishes built/tested/deployed, and identifies any unproven or blocked condition.