Bring home the GTM to Google Ads attribution loop by restoring the Litify Sheet scheduler, verifying live Sheet/Litify/Ads/site state, and attempting Data Manager/GTM validation.
/Users/samaguiar/Library/LaunchAgents/com.aguiar.litify-google-ads-sync.plist from the staged repo plist and loaded it with launchctl.2026-04-24T19:38:20.297Z.conversion_action,gclid,email,phone,conversion_date_time,conversion_value,conversion_currency.Repos/sail-litify/Litify_AI_Integration_Project/output/attribution-loop-health/attribution-loop-health-latest.md.docs/litify-environment-diary.md and OPS_LEDGER.md with the restored scheduler and remaining blocker.6 production rows, 9 QA rows, 512 raw rows, 2 conflict intakes.786 Web Form records with GCLID, 497 linked GCLID web forms, 21 Intakes with GCLID, 3 Matters with GCLID.1,942 calls fetched, 28 with GCLID, 26 matched Salesforce call logs, 0 conflicts, 0 updates needed.2026-01-25 through 2026-04-24. A fresh API recheck still shows offline upload failures only under legacy actions (Repeat Phone Call, Form Capture, First Time Phone Call), not the Litify actions.querySelector null error is fixed in GTM version 42; the latest public inline-script scan reports syntax_bad_count=0.42: Codex - Gravity Form listener null guard - 2026-04-24.