Approved service brief
Why: Keep the agreed scope and existing account objects.
Sol High owns the six-service setup, every relevant conversion path and an evidence-backed launch. No green checks without proof.
End goal: A usable enquiry journey and the agreed six Google Search campaigns, correctly measured and safely launched within 200,000 Ft per calendar month.
Done means: All 12 checks pass, with 16 accepted form cases, normal conversion-chain evidence and real postactivation delivery. External dependencies remain visible until actually cleared.
Read left to right: preserve the approved inputs, prove the lead journeys, then launch only when the evidence supports it.
Why: Keep the agreed scope and existing account objects.
Why: Preserve useful work and identify actual gaps.
Why: Prove enquiries are saved and measured once.
Why: Match targeting, copy, goals and spending to the brief.
Why: Show actual eligibility and delivery after gates pass.
Next: 24h/48h observation from the real activation instant.
Six campaigns and seven approved ads were reported configured. Navigation checks passed in a focused parent review. v45 reports a choice-neutral cookie-panel close control and two-route live checks. Preserve these results and their receipts.
Three recorded form attempts produced no accepted lead. That leaves storage, normal success events, GA4 receipt and native Ads conversion delivery unproved. More layout passes cannot establish those outcomes.
Current lead-runtime.js routes names starting with Teszt and the test email domain to cf_lead_validation instead of lead_saved. Sol must explicitly prove the production success path without misreporting QA as real business.
A reviewer-only read-only scope was treated as a user-wide ban on fixes. This was later corrected. Sol must trace constraints to the actual user or runtime, and continue independent authorized work.
The v45 receipt says the public board still showed v44. Screenshot observations were not durable files, and route spellings differ in the report. Keep exact URLs, timestamps, source/version and evidence links synchronized.
The evidence supports replacing the executor. It cannot establish that Luna is generally incapable, or that Sol is certain to finish. Success will be judged by the checks below. Payment, human verification and real auction delivery remain external dependencies.
Confirmed scope: drilling, concrete breaking and paving take priority. Turf and standalone irrigation remain included at smaller budgets. Maintenance includes short mowing/leaf work and larger jobs. The latest human radius is 10 km.
Dated evidence: 26 September fresh provider reads: all 25 campaigns paused, seven target ads approved. All 254 settings checks reconciled after narrow sitelink corrections. v47 is deployed with two narrow mobile CSS fixes, v46 rollback and unchanged Worker modules. All twelve live pages match the reviewed build.
Operator choices: the 6,500 Ft daily split, 600/400 Ft CPC caps and 24h/48h observation checkpoints came from the approved plan, not meeting quotations. No promise of lead count or CPA.
Open: legitimate-token test route and normal-event coverage, payment/eligibility, and current serving state. These are evidence needs, not permission to stop unrelated work.
All 254 campaign settings checks reconcile after narrow sitelink corrections. All 25 campaigns remain paused. Billing clearance and positive protected-form tracking remain unresolved. Private billing evidence stays outside this public board.
v47 is deployed at 100%. Two confirmed mobile defects were repaired with three CSS lines in two pages. All twelve live HTML routes match the reviewed build, all four Worker modules match v46, and all 31 bindings/runtime/assets settings are preserved. Immediate rollback is v46. Two fresh Luna xhigh reviewers are checking the changed/risky live states.
Parent pixel review corrected an unsupported missing-header finding. Existing animation source explains the reveal transition and testimonial mask. Shared consent loading passed denied/granted UI checks, but the first accepted transaction and full 16-case measurement matrix remain pending the current CAPTCHA action-time confirmation.
This is the one parent refinement authorized by Matt. Sol remains sole owner of the live HTML and execution. Incorporate this into the existing board, preserving its URL, comments, approved campaign specification and accumulated evidence.
The normal-path QA marker may suppress notification email and exclude identified QA rows from genuine CRM lists/counts. It must not bypass Turnstile, quarantine, consent, validation or persistence, or fabricate analytics events. Retain the stored QA rows and transaction IDs for private traceability. Maintain the existing normal lead_saved event and native tag route. QA measurement dispatch is a controlled test, never a genuine customer enquiry or paid-ad attributed conversion.
Before releasing this bounded change, prove complete-marker suppression, ordinary-customer and partial/quoted-marker notification queueing, and parity between the JavaScript marker and SQLite exclusions, including NULL messages. Prove existing synthetic-test behavior and ordinary CRM counts/list visibility remain intact. Verify the exact released version afterward, with practical rollback. Local tests do not establish live accepted-lead or destination proof. Ordinary mail behavior can be checked with a stubbed provider and existing readback, without unsolicited client email.
One legitimately accepted, visibly labelled normal-path lead must establish server acceptance, one stored transaction, normal event, exact GTM tag, matching GA4 session/event and intended Ads ID/label request before scaling to the full 16-case matrix. Keep individual layers NOT_RUN/BLOCKED/PARTIAL until observed. No PII in analytics or public evidence. A dispatched Ads request does not prove attributed conversion.
The current reconciliation reports additional/inherited sitelinks and a changed paving RSA identity. Check effective serving associations and canonical redirects before treating URL spelling differences as defects. Remove or correct genuinely off-scope effective assets through narrow campaign/group changes, preserving unrelated account work. Retain only the maintenance collection-page destination for its campaign. Reconcile paving RSA 812427480883 versus 825938005143 against the approved wording, real history and current approval. Do not duplicate an identical ad merely to satisfy a stale ID, but preserve any explicit user requirement and explain any justified replacement mapping in the board.
The budget ledger is conditional and not a native account cap. Refresh whole-account costs, high-water budget history and outstanding exposure immediately before activation. Resolve remaining history/finalization assumptions honestly. Activation requires the existing measurement, eligibility and budget gates. Actual 24h/48h serving observation begins at activation, not at this checkpoint.
Replace “Awaiting the first Sol result” and stale clean-checkout/provider-pending statements with actual progress, version and evidence timestamps. Show the precise status of each layer and remaining dependency, not only 0/12. Keep the board open in the child in-app browser and republish its stable URL after meaningful evidence batches. Public evidence must omit private lead data, credentials and sensitive account content. The parent does not race board edits.
The pending runtime CAPTCHA confirmation blocks only that challenge action and dependent positive-path verification. It does not block independent negative tests, provider reconciliation, approved settings corrections, release tests or budget analysis. Péter retains payment ownership. Do not send him a message or touch payment controls. No extra approval gates, new executor or recurring parent supervision.
The approved matrix is retained. Values are target settings, not a claim about the current account.
| Campaign | Daily / CPC ceiling | Geography | Destination |
|---|---|---|---|
| Talajfúrás 23879060095 | 1800 Ft CPC ≤ 600 Ft | Keep six counties: Pest (20429), Fejér (20421), Komárom-Esztergom (20427), Bács-Kiskun (20417), Somogy (20430), Veszprém (20434). Remove the additional LOCATION_GROUP criterion 2189547636663 so the explicit areas are the only inclusions. This is a retained account choice, not a September meeting promise. | /gepi-foldmunkak#talajfuras |
| Betontörés 23934089692 | 1700 Ft CPC ≤ 600 Ft | Keep Budapest radius 50 km at 47.497912, 19.040235 and the existing Szentendre inclusion (1007669). The meeting’s restricted maintenance area is not applied to this machine-work campaign. | /gepi-foldmunkak#betontores-bontas |
| Térkövezés 23934089710 | 1300 Ft CPC ≤ 600 Ft | Keep the UNION of two 20 km radii: Budapest 47.497912, 19.040235 and Érd 47.363091, 18.981764. Exclude Szentendre (1007669). | /kertepites#terkovezes |
| Gyepszőnyegezés 23934089701 | 450 Ft CPC ≤ 400 Ft | Keep Budapest radius 50 km at 47.497912, 19.040235. Smaller budget is the agreed restriction here, not the maintenance radius. | /gyepszonyegezes |
| Öntözőrendszer 23934089713 | 450 Ft CPC ≤ 400 Ft | Keep the UNION of two 20 km radii: Budapest 47.497912, 19.040235 and Érd 47.363091, 18.981764. Exclude Szentendre (1007669). | /automata-ontozorendszerek |
| Helyi kertfenntartás 24276893685 | 800 Ft CPC ≤ 400 Ft | Exactly one 10 km radius at 47.348706, 19.045241, the current Szigetszentmiklós town targeting point. It is not a verified home address. No additional town/county inclusions that widen the circle. Exclude Szentendre (1007669). The meeting’s southern-town examples are context, not extra OR targets. | /kertfenntartas |
Proposed target · Campaign type and networks: SEARCH. Google Search ON. Search partners OFF. Display OFF. Keep every currently paused outside campaign, including PMax and generic garden/earthmoving campaigns, paused and otherwise untouched. Fresh unexpected outside active spend is reconciled in the account-wide bound and documented before this plan activates. No duplicate campaigns.
Proposed target · Bidding: Standard campaign Maximize Clicks (API TARGET_SPEND), no target CPA/ROAS. CPC caps are in the matrix. Remove non-neutral bid adjustments so they cannot inflate the starting cap. Do not switch back to Maximize Conversions during setup based on clicks or test events. Record a later evidence-based bidding recommendation separately. Check current keyword/auction diagnostics and available historical bid ranges against the proposed caps. Estimates are context, not a minimum bid or success guarantee. Do not automatically raise caps or pause solely because an estimate is higher. If caps constrain serving, record the evidence and a justified revised-cap proposal separately, within the same monthly budget bound.
Proposed target · Language, time and devices: Hungarian (languageConstants/1024). Campaign ads 00:00–24:00 every day, Europe/Budapest. Desktop, mobile and tablet included with neutral adjustments. No audience or demographic restriction, no unsupported income/age exclusions. Call assets stay paused until the number, staffed hours and actual-call measurement are verified.
Proposed target · Location mode: Positive = PRESENCE. Negative = PRESENCE. Exactly the inclusions/exclusions in each campaign card. No presence-or-interest expansion. Radius targeting is a provider setting, not a guarantee of physical location.
Proposed target · Keywords: For every listed phrase, one EXACT and one PHRASE positive keyword in its named ad group. Reuse matching objects, add missing forms, pause BROAD versions. Move generic kertfenntartás terms to the larger-maintenance group. No generic earthmoving, whole-garden or alpine-felling targeting.
Proposed target · Ads: One enabled responsive search ad in each of the seven groups. Reuse/correct existing ads. For paving keep 812427480883 and pause alternate 812427480880. Each ad has the service headline below pinned to Headline 1, plus Kertújítók and Kérjen ajánlatot, and its stated description plus Írja meg a települést és a feladatot. Egyeztetjük a részleteket. No keyword insertion or unsupported free-survey, price, speed or warranty claims. Minimum 3 headlines and 2 descriptions, valid lengths. Pinning does not guarantee an impression.
Proposed target · Assets and URLs: Use canonical kertujitok.hu destinations below. Per campaign: service link to its destination + Ajánlatkérés link to the same page #kapcsolat. For maintenance use only a verified relevant section of the existing /kertfenntartas collection if a stable anchor exists after the UI release; otherwise use the collection URL without a fragment. Keep only other assets that pass the same offer/claim checks. Remove inherited irrelevant garden-build/service links from eligibility, preserving unrelated campaigns. Auto-tagging ON. URL suffix: utm_source=google&utm_medium=cpc&utm_campaign={campaignid}&utm_content={adgroupid}&utm_term={keyword}. Verify query strings and service anchors survive redirects.
All six · phrase: állás, állásajánlat, munkát keresek, tanfolyam, eladó, kölcsönzés, bérlés, házilag, csináld magad · Exclude job hunting, DIY and machine hire. Do not block ár, árak, árlista, munkadíj, telepítés or kivitelezés.
Drilling · preserve KPC exclusions: Phrase: kútfúrás, kut furas, kutfuras, vízszintes, házilag. Exact: talajfuro obi, haina h 1901 · Keep existing unrelated-intent exclusions. Add phrase kútfúró, talajfúró eladó, talajfúró bérlés only if not already covered.
Paving · preserve KPC exclusions: Phrase: házilag, térkőgyár, alvállalkozóknak · Keep genuine installation/price queries.
Irrigation · phrase: komplett kert, teljes kertépítés, teljes kertepites · Standalone irrigation is welcome. Do not use a blanket kert negative.
Maintenance · phrase: alpin, alpintechnika, favágás, fakivágás, láncfűrész · No alpine or standalone tree-felling offer. Short-job group excludes phrase ágaprítás, ágdarálás and gépi kertkarbantartás. Larger-work group excludes EXACT fűnyírás and lombgyűjtés only, not blanket phrase negatives that could suppress combined large-job queries. Preserve leaf collection within complete maintenance jobs. Negative matching does not guarantee query routing, inspect search terms when available.
Target bidding goal: Use one campaign-specific custom goal containing exactly Contact Form Lead 7685753897, Hero Form Lead 7686106212 and Widget Form Lead 7686113193, after each passes. All three remain ONE_PER_CLICK. Use/reuse a dedicated goal for these six campaigns instead of editing shared custom goal 6457939076 in place, which is also attached to unrelated campaigns. For all six, read back goal_config_level=CAMPAIGN and the dedicated custom-goal resource. Set every standard CampaignConversionGoal category/origin row biddable=false for those six and verify the full row set, so a standard goal cannot add other actions. Do not change customer-level defaults or the old shared goal. Maximize Clicks itself optimizes clicks, this clean goal setup governs conversion reporting and any future authorized conversion bidding.
Exclude from this goal: Google Forwarding Number 7621478367 and Calls from ads (1) 7661968974 until actual qualifying-call proof exists. Also exclude page visits, directions, phone/button clicks, GA4 duplicates, legacy/native duplicate and retired-system imports. Secondary status alone does not exclude an action included in a custom goal.
Real submission proof: Inventory 15 unique live form paths: hero/contact/widget on each of /gepi-foldmunkak, /kertepites, /gyepszonyegezes, /automata-ontozorendszerek and /kertfenntartas. Perform 16 accepted submission cases: each path once, plus one additional maintenance submission of the alternate short/large job type on a suitable maintenance form. Use unique QA IDs, controlled contact details and TEST messages. Each needs one accepted /api/lead response, stored Cloudflare record, success event and correct native Ads request. Verify both maintenance selections persist. Reconcile the live inventory after the UI release and add any newly discovered in-scope paths.
Failure, retry and consent proof: For each of the three form implementations, invalid/rejected submissions produce no lead conversion. Repeated submit, back/reload and thank-you reload do not create duplicate lead conversions for the same accepted submission. Consent granted/denied flows preserve the existing consent behavior, with diagnostic limits recorded honestly.
What the proof means: Specific GTM event detail with fired tag plus the matching GA4 event/session and Ads conversion ID/label request. Aggregate GTM Summary or aggregate Realtime is insufficient. Separate test records from genuine leads. GA4 Testing filters do not exclude traffic. No paid self-clicks, fake gclid or fabricated events. An Ads request proves dispatch, not attributed paid conversion. Map each native conversion-action resource to its provider tag ID/label before requests are compared. ONE_PER_CLICK does not prove browser/backend deduplication. Keep transaction/submission identifiers for duplicate checks.
Allocation: drilling 1,800 + concrete 1,700 + paving 1,300 + turf 450 + irrigation 450 + maintenance 800 = 6,500 Ft/day. Priorities receive 4,800 Ft/day (73.85%). Each campaign has its separate existing non-shared budget. Maintenance’s 800 Ft is shared by two groups. Concrete/paving are changed from the current 1,300/1,700 allocation to follow the stated priority order.
For a full month with these unchanged budgets, Google’s usual 30.4× monthly charging bounds sum to 197,600 Ft. The 2,400 Ft difference is headroom, not extra spend to allocate. This is not a native hard account cap and does not cover earlier higher budgets automatically.
Before activation or ANY budget edit, calculate an account-wide upper bound: cost through a finalized prior day + a conservative charge bound for every unfinalized day + future permitted charges. On a change day use 2× each budget’s highest value that day. Count shared budgets once. For remaining changed-month days, the conservative 2×daily upper bound is acceptable. If earlier history cannot establish a bound, affected spend remains paused.
September 25–30 example, only with a fresh ledger proving zero earlier cost/exposure: because concrete rises 1,300→1,700 and paving falls 1,700→1,300 on the same day, per-campaign highest budgets sum to 6,900. September 25 bound = 2×6,900 = 13,800, plus September 26–30 = 5×2×6,500 = 65,000, total 78,800 Ft. The 78,000 Ft figure applies only to six unchanged 6,500 Ft days, not this swap day. Recompute for the actual launch date/history, do not catch up unused spend. Next full month remains 6,500/day.
Boundary fixtures: (A) six unchanged full days, prior finalized cost 130,000:130,000+78,000=208,000, reject 6,500/day; floor70,000/12=5,833/day before round-down allocations. (B) swap-day high-water 6,900/day already established:130,000+13,800+5×13,000=208,800, reject. Reserve the full 13,800 for that day, leaving 56,200 for five future days, hence total daily allocation ≤5,620 then, or pause. A same-day reduction does not erase its earlier highest budgets. The live worksheet must compute each campaign/day maximum from history before choosing scaled budgets.
Executor owns fresh preflight, temporary pause of these six during edits, before/after ledger and 24h/48h checks. Record exact checkpoint times and next-month baseline now. A scheduled month-boundary recheck remains pending until performed, not claimed complete. Do not build a spend controller. No budget increase or reactivation outside this six-campaign plan. Matrix amounts are maximum baseline allocations, permitted proportional reductions must be recorded consistently in settings-diff and budget-ledger.
Talajfúrás / földfúrás / gödörfúrás / lyukfúrás: talajfúrás, földfúrás, lyukfúrás földbe, gödörfúrás, kerítésoszlop fúrás, oszlopfúrás
Talajfúrás és oszlopfúrás · Fúrás kerítéshez, növényültetéshez. Írja meg a helyszínt és a feladatot.
Betontörés: beton bontás, beton törés, járda bontás, betontörés, beltéri bontás
Betontörés és beltéri bontás · Beton és járda bontása, beltéri munkák. Írja meg a helyszínt és a bontandó részt.
Térkövezés: térkövezés, terasz burkolás, térkő lerakás, kocsibeálló térkövezés
Térkövezés és térkő lerakás · Járda, terasz vagy kocsibeálló térkövezése. Kérjen ajánlatot a tervezett munkára.
Gyepszőnyeg lerakás: gyepszőnyeg telepítés, gyepszőnyegezés, gyepszőnyeg lerakás
Gyepszőnyeg lerakás · Gyepszőnyegezés előkészítéssel. Küldje el a terület méretét és a települést.
Öntözőrendszer telepítés: öntözőrendszer tervezés, locsolórendszer, automata öntözőrendszer, kerti öntözőrendszer, öntözőrendszer telepítés
Önálló öntözőrendszer · Öntözőrendszer telepítése önálló munkaként is. Írja meg a helyszínt és az igényt.
Helyi fűnyírás és lombgyűjtés: fűnyírás, fűnyírás szigetszentmiklós, lombgyűjtés, lomb összeszedés
Fűnyírás és lombgyűjtés · Fűnyírás és lombgyűjtés Szigetszentmiklós 10 km-es körzetében. Kérjen egyeztetést.
Gépi kertkarbantartás: kertfenntartás, kertfenntartás szigetszentmiklós, gépi kertkarbantartás, ágaprítás, ágdarálás
Gépi kertkarbantartás · Nagyobb kerti rendbetétel és ágaprítás, földről végezhető munkákkal. Kérjen egyeztetést.
Technical references: Google budget limits · Google conversion goals. Resolve the QA-event branch conflict in the tests below before treating historical test instructions as executable.
Read all settings, positive/negative keywords, inherited assets, URLs, policy, goals and outside campaign statuses. Reuse IDs and preserve useful history. A mutate receipt is insufficient.
Maintenance uses /kertfenntartas only. Local landing absent from menus. Check collection hero gap, deep-scroll menu open/close, lower menu items, floating CTA, standalone irrigation copy and consent open/close. Reuse valid passing evidence when source/version still match. Blind independent screenshot description and criterion comparison are required for changed GUI states.
Record current provider IDs and versions. Map contact 7685753897, hero 7686106212 and widget 7686113193 to actual Ads tag IDs and labels. Inventory calls, phone clicks, legacy imports and duplicates too. Excluded calls stay excluded until qualifying-call proof exists.
Diagnose empty-token cause through visible widget, callback, consent/script state and response evidence. Do not repeat empty-token POSTs. Resolve the cf_lead_validation versus lead_saved QA branch before claiming normal-path tracking. Billing does not prevent this independent diagnostic work.
Each row: timestamp, URL, form ID, consent state, unique QA marker, transaction ID, response, stored lead, event, GTM detail, GA4 receipt, Ads request or exact blocked layer. Preserve both short and larger maintenance selections. Discover and add missing in-scope paths. Never extrapolate one passing form to another.
A validation-only QA event does not prove the normal success path. Use legitimate controlled submissions and provider-supported diagnostics. No fabricated dataLayer event, fake click ID, paid self-click or protection bypass. Record QA separately from real enquiries. Request dispatch is distinct from paid attribution or a qualified lead. A deliberately suppressed destination stays unverified.
Cover existing consent denied/granted behavior for each implementation. Denied-state suppression passes only its negative test, not positive delivery. Quarantined leads must not become successful ad leads. ONE_PER_CLICK is a provider setting, not proof of browser/backend deduplication.
Verify full CampaignConversionGoal row set. Calls 7621478367 and 7661968974, page/button proxies, duplicates and retired imports are absent from this goal. Keep unrelated shared goals and account defaults intact. Maximize Clicks remains the approved starting strategy.
Daily baseline 1,800/1,700/1,300/450/450/800 Ft, total 6,500, with proportional reductions if necessary. Count shared budgets once, reserve unfinalized days and per-campaign daily high-water changes. Fixtures: 130,000+78,000 rejects 6,500 and allows ≤5,833/day; swap-day 13,800 leaves ≤5,620/day for five remaining days. No native hard account cap is claimed.
Outstanding balance/possible suspension is not confirmed suspension. Péter owns card/payment. No agent retries or changes it. Complete all independent setup and measurement work while payment remains unresolved. UNKNOWN is not launch-ready.
Save exact activation instant, Budapest window, impressions/clicks/cost and current budget reconciliation. Zero stays unverified and gets diagnosis. No scope or spend expansion to force delivery. Checkpoints start at actual activation, not an obsolete calendar deadline. Paid conversions and commercial results are separately reported, never manufactured.
Update this same URL after meaningful results. Base contract black, executor evidence blue, verified green, failures red. Keep an evidence index, deliverables.md, main-prompts.md and session.txt. Secrets and private leads stay local. No COMPLETE while essential proof is missing.