Analytics Tracking Automation
Use this skill as the end-to-end coordinator for GA4 + GTM tracking delivery.
Use it when:
- the user needs a full GA4 + GTM implementation flow, from analysis to go-live readiness
- the request spans multiple workflow phases (discovery, schema, sync, verification, publish)
- the correct entry point is still unclear and you need this skill to route to the right phase
Do not assume the user wants the full workflow.
<!-- analytics-tracking-automation auto-update bootstrap:start -->Auto-Update
This installed root skill can self-check for newer GitHub versions before you continue.
Before doing any task in this bundle:
- Resolve the directory that contains this installed
SKILL.md. Installer-managed copies usually live under the skills directory configured by your agent environment, such as$CODEX_HOME/skills/analytics-tracking-automationor an equivalent runtime-managed path. - Run
node "<bundle-dir>/runtime/skill-runtime/update-check.mjs" --json. - If the result status is
update_available, immediately runnode "<bundle-dir>/runtime/skill-runtime/self-update.mjs" --apply. - If the update succeeds, read
<bundle-dir>/SKILL.mdagain before continuing so you are using the refreshed instructions. - If the result status is
disabled, treat this bundle as a local development link or repo checkout and continue without updating.
Skill Family
The skill family is split into one umbrella skill plus seven phase skills:
tracking-discoverfor crawl coverage, platform detection, and fresh artifact bootstraptracking-groupfor page-group authoring and approvaltracking-live-gtmfor auditing the real live GTM runtime before schema generationtracking-schemafor schema preparation, review, validation, and approvaltracking-syncfor GTM config generation and synctracking-verifyfor preview QA and optional publish handofftracking-shopifyfor Shopify-specific schema, sync, install, and verification rules
If the request is already bounded to one phase and that phase skill is available, route there instead of inlining the full runbook here.
Once site-analysis.json indicates Shopify, keep discovery and grouping shared, then let tracking-shopify own the Shopify-specific branch.
Shared Contract
- Use the repo-local wrapper
./event-trackingin this repository. Ifdist/cli.jsis missing, runnpm run buildfirst. - For public/ClawHub installs, you must run this first before any
event-trackingcommand:npx skills add jtrackingai/analytics-tracking-automation. - Keep one artifact directory per site at
<output-root>/<url-slug>. - If the user already provides an artifact directory or one of its files, resume from the earliest unmet prerequisite instead of restarting from
analyze. - Use
./event-tracking status <artifact-dir-or-file>whenever the current checkpoint or next step is unclear. - Use
./event-tracking runs <output-root>when the artifact directory is unknown but the output root is known. - Prefer high-level entry commands for user-facing flows:
run-new-setup,run-tracking-update,run-upkeep,run-health-audit. - Telemetry consent is a required user-choice checkpoint for richer diagnostics. If consent is unanswered when any workflow command surfaces the prompt, stop and follow telemetry-consent.md as the single-source interaction contract. Never decide
yes/noon the user's behalf, and continue through the interactive prompt so the local config records their choice. - Explain the purpose, what
yesdoes, whatnodoes, and the remaining privacy tradeoff before asking the user to replyyesorno. Do not ask a bareyes/noquestion with no context. - Treat workflow mode metadata as an internal workflow-state layer, not a user-facing command surface.
analyze,validate-schema --check-selectors,preview, andsynceach need outbound HTTP and a real Chromium;syncadditionally needs a local loopback callback on127.0.0.1for Google's OAuth consent redirect. Run them in an environment that permits those capabilities so Playwright and the OAuth callback can complete.- Run prompt-driven GTM sync with an interactive TTY from the start unless exact
--account-id,--container-id, and--workspace-idvalues are already confirmed. - Never auto-select a GTM account, container, or workspace on the user's behalf.
- Do not continue past the phase boundary the user asked for.
Conversation Intake
When the user enters through chat and has not yet provided a bounded phase, artifact directory, or exact command, start with an intent-first intake.
Classify the request into one of these entry intents:
resume_existing_run: the user already has an artifact directory or one of its files; inspect the artifacts and usestatusnew_setup: net-new tracking implementation from scratch; preferrun-new-setup, then follow its recommended next steptracking_update: revise or extend an existing implementation; preferrun-tracking-updateupkeep: routine maintenance, review, or incremental QA on an existing setup; preferrun-upkeeptracking_health_audit: audit-only assessment of current live tracking; preferrun-health-auditanalysis_only: crawl/bootstrap/discovery only without committing to the full workflow yet; route totracking-discoverand stop afteranalyze
Rules:
- Do not ask the user to choose between internal workflow metadata flags and
analyze. - If intent is ambiguous, ask one short plain-language intake question using user-facing terms such as "new setup", "update existing tracking", "upkeep", "health audit", "analyze only", or "resume an existing run".
- If the user gives a fresh URL and asks to set up tracking, default to
new_setup. - If the user gives a fresh URL and only asks to inspect the site, analyze structure, or review current tracking signals, default to
analysis_only. - If the user gives an artifact directory or workflow file, default to
resume_existing_runinstead of restarting fromanalyze.
Routing Rules
Route by user intent and current artifacts:
- fresh URL, crawl request, or no artifacts yet: start with
tracking-discover site-analysis.jsonwith missing or unconfirmedpageGroups: route totracking-group- confirmed
site-analysis.jsonwith detected live GTM container IDs but no live baseline review yet: route totracking-live-gtm - confirmed
site-analysis.jsonor an in-progressevent-schema.json: route totracking-schema - approved
event-schema.jsonwithoutgtm-config.json: route totracking-syncforgenerate-gtm gtm-config.json: route totracking-syncgtm-context.json: route totracking-verify, with publish treated as a separate explicit action- Shopify platform confirmation: keep shared early stages, then hand off to
tracking-shopify
If only the root skill is available, follow the same routing logic directly and stop at the matching phase boundary.
Stop Rules
- Do not bypass page-group approval before
prepare-schema. - For key decision checkpoints, always require explicit user confirmation before continuing:
pageGroups(beforeconfirm-page-groupsand beforeprepare-schema)event-schema.json(beforeconfirm-schemaand beforegenerate-gtm)- GTM target selection (account/container/workspace during
sync) - publish decision (before
publish)
- If confirmation is missing or ambiguous, stop and ask; do not auto-proceed.
- Treat telemetry consent the same way as other explicit approval gates: if the user has not chosen
yesorno, stop and ask instead of making the decision for them. - A broad request such as "full workflow", "全流程", "end-to-end", or "continue all the way" is scope authorization only. It does not count as checkpoint approval.
- Never record checkpoint approval on the user's behalf