Sam asked to keep executing the Google Ads offline-conversion attribution loop while he was away, using Slack as the approval lane for live-write or account-access steps. The focus was Intaker/Zapier/Salesforce, GTM/API access, homepage/webform attribution capture, and rollback-backed Salesforce propagation.
A current 120-day dry-run against LITIFY_ORG found 42 linked Web Form records, 34 Intake GCLID updates, 9 Matter GCLID updates, 0 conflicts, and 0 writes. A 10-row live QA sample passed. The all-history recheck found 498 Web Forms, 456 Intake updates, 46 Matter updates, 2 conflicts, and 0 writes.
A synthetic homepage load captured GCLID and UTMs into localStorage, cookies, the dataLayer, and hidden webform fields without submitting a lead. The remaining proof is a controlled homepage or Intaker submission, which is approval-gated.
GTM is API-capable, but current token is Ads-only. scripts/check-gtm-api-access.mjs returns ACCESS_TOKEN_SCOPE_INSUFFICIENT. Use scripts/gtm-oauth-helper.mjs --open when Sam is back at the Mac to grant Tag Manager scopes.
Slack thread parent is 1777085902.869809 in DM channel D0ASWN69Q4F. Required exact phrases: approve webform gclid backfill, approve webform gclid scheduler, approve controlled test lead, and approve zapier sso.
For a Salesforce apply run, rollback is node scripts/sync-webform-gclid-to-litify.mjs --target-org LITIFY_ORG --rollback-from output/webform-gclid-sync/<apply-run-directory>. Scheduler rollback is unload and remove ~/Library/LaunchAgents/com.aguiar.webform-gclid-sync.plist.
A local copy is saved at /Users/samaguiar/Documents/Projects/admin/session_logs/google-ads-attribution-loop-intaker-gtm-webform-gclid-2026-04-24.md.