Install
openclaw skills install analytics-tracking-automationUse when you need end-to-end GA4 + GTM tracking delivery across discovery, schema, sync, and verification phases.
openclaw skills install analytics-tracking-automationUse this skill as the end-to-end coordinator for GA4 + GTM tracking delivery.
Use it when:
Do not assume the user wants the full workflow.
The skill family is split into one umbrella skill plus seven phase skills:
tracking-discover for crawl coverage, platform detection, and fresh artifact bootstraptracking-group for page-group authoring and approvaltracking-live-gtm for auditing the real live GTM runtime before schema generationtracking-schema for schema preparation, review, validation, and approvaltracking-sync for GTM config generation and synctracking-verify for preview QA and optional publish handofftracking-shopify for Shopify-specific schema, sync, install, and verification rulesIf 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.
event-tracking in this repository. If dist/cli.js is missing, run npm run build first.event-tracking command: npx skills add jtrackingai/analytics-tracking-automation.<output-root>/<url-slug>.analyze.event-tracking status <artifact-dir-or-file> whenever the current checkpoint or next step is unclear.event-tracking runs <output-root> when the artifact directory is unknown but the output root is known.run-new-setup, run-tracking-update, run-upkeep, run-health-audit.analyze, validate-schema --check-selectors, preview, and sync.--account-id, --container-id, and --workspace-id values are already confirmed.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 use statusnew_setup: net-new tracking implementation from scratch; prefer run-new-setup, then follow its recommended next steptracking_update: revise or extend an existing implementation; prefer run-tracking-updateupkeep: routine maintenance, review, or incremental QA on an existing setup; prefer run-upkeeptracking_health_audit: audit-only assessment of current live tracking; prefer run-health-auditanalysis_only: crawl/bootstrap/discovery only without committing to the full workflow yet; route to tracking-discover and stop after analyzeRules:
analyze.new_setup.analysis_only.resume_existing_run instead of restarting from analyze.Route by user intent and current artifacts:
tracking-discoversite-analysis.json with missing or unconfirmed pageGroups: route to tracking-groupsite-analysis.json with detected live GTM container IDs but no live baseline review yet: route to tracking-live-gtmsite-analysis.json or an in-progress event-schema.json: route to tracking-schemagtm-config.json: route to tracking-syncgtm-context.json: route to tracking-verify, with publish treated as a separate explicit actiontracking-shopifyIf only the root skill is available, follow the same routing logic directly and stop at the matching phase boundary.
prepare-schema.pageGroups (before confirm-page-groups and before prepare-schema)event-schema.json (before confirm-schema and before generate-gtm)sync)publish)confirm-page-groups --yes or confirm-schema --yes unless the user explicitly confirms that checkpoint in the current turn.generate-gtm unless the user explicitly wants --force.tracking-health.json as the publish gate; do not jump to publish when health is missing, manual-only, or blocked unless the user explicitly wants --force.tracking_health_audit as an audit-only workflow mode. Do not run GTM deployment actions (generate-gtm, sync, publish) unless the user explicitly asks to override.When resuming:
workflow-state.json when presentstatus when the next step is unclearWhen a phase or the full workflow ends, keep the closeout answer-first: