Run claude mcp add --transport http paidsync https://mcp.paidsync.ai/mcp, type /mcp, and sign in with your PaidSync login. Claude Code then reaches your Google Tag Manager containers through 39 tools: container audits, workspaces, tags, triggers, variables, previews, versions and publishing. Claude Code asks before it runs each tool, and most GTM writes apply on the first call, with no dry run.
One command. OAuth sign-in, no key pasted. Free plan, 15 tasks a month, no card.
Claude Code talks to remote MCP servers over Streamable HTTP. PaidSync is one of them. Add it once and the same terminal that edits your code can audit and change your tracking containers.
claude mcp add --transport http paidsync https://mcp.paidsync.ai/mcpBy default that registers the server for the current project only. Add --scope user to make it available in every project on your machine. Run claude mcp list to confirm it is there, then start a session and type /mcp to sign in.
Takes 10 seconds. Google or email sign-in. The free plan is 15 tasks a month at $0, no card.
Click Connect on Google Tag Manager. GTM authorizes via Google OAuth, with the Google account that has access to your containers. It uses a separate OAuth client from Google Ads, so your Google Ads connection is unaffected.
Already inside Claude Code? Ask it to run connect_gtm. The tool returns an OAuth link to open in your browser.
Inside a session, list_gtm_accounts, list_gtm_containers and list_gtm_workspaces show what your sign-in can reach. setup_gtm checks the whole setup in one call: connected, accounts, containers and tags.
In your terminal, run:
claude mcp add --transport http paidsync https://mcp.paidsync.ai/mcpStart a session, type /mcp, pick paidsync, and sign in with your PaidSync login in the browser window that opens. Claude Code stores the OAuth token for you. No key is pasted anywhere.
Setting this up for a team? Commit a .mcp.json at the repo root so every engineer gets the same connector:
{
"mcpServers": {
"paidsync": { "type": "http", "url": "https://mcp.paidsync.ai/mcp" }
}
}Prefer an API key, for example for headless runs? Send it in a header, never in the URL, where it would end up in logs:
claude mcp add --transport http paidsync https://mcp.paidsync.ai/mcp --header "Authorization: Bearer $PAIDSYNC_API_KEY"In a committed .mcp.json, add "headers": { "Authorization": "Bearer ${PAIDSYNC_API_KEY}" } so the key stays in each engineer's environment and never enters git. Applying a change to Google Ads still requires the OAuth sign-in. On other platforms a key can apply changes too, so treat it like a password and prefer OAuth.
In a Claude Code session ask: “Audit my GTM container and list anything broken”
Claude Code returns tags without triggers, unused triggers, a missing conversion linker or GA4 config tag, and paused tags. The connection is live.
Each prompt below maps to tools in the PaidSync GTM group. Claude Code picks the tool. The last column says whether the call can change anything in the container.
| Ask | Tools it calls | Changes your account? |
|---|---|---|
| “Audit the container and list tags with no trigger” | audit_gtm_container | No |
| “What is live in the container right now?” | get_gtm_version_live | No |
| “What changes are pending in this workspace?” | get_gtm_workspace_status | No |
| “Create a workspace called claude-code-fixes” | create_gtm_workspace | Yes, after you confirm |
| “Add a GA4 event tag for form_submit on a form submission trigger” | create_gtm_trigger, create_gtm_tag | Yes, after you confirm |
| “Give me a preview link so I can test the workspace” | preview_gtm_workspace | No |
| “Create a version from the workspace and publish it” | create_gtm_version, publish_gtm_version | Yes, after you confirm |
The -p flag runs Claude Code without the interactive session. Sign in once through /mcp and the stored OAuth token carries over. A report that lands in a file looks like this:
claude -p "Audit the GTM container and write a list of tags without triggers, unused triggers and paused tags." \
--allowedTools "mcp__paidsync" \
--output-format json > reports/gtm-$(date +%F).jsonReads run straight through, and so do writes. --allowedTools "mcp__paidsync" allows every PaidSync tool, writes included, with no prompt. For an unattended job, allow only the read tools it needs, each by name as mcp__paidsync__tool_name.
Of the 39 GTM tools, 18 only read and 19 can write. Reads cover accounts, containers, workspaces, tags, triggers, variables, built-in variables, environments, versions, the live version and the install snippet.
Writes cover workspaces, tags, triggers, variables, built-in variables, versions and publishing. Most GTM writes have no dry run and apply on the first call; only create_gtm_tag previews with dry_run. Deletes need confirm_destructive, and publish_gtm_version needs confirm.
Over MCP, the approval step is Claude Code’s own prompt. It asks before it runs a tool unless you allowed it with --allowedTools or in your settings. PaidSync adds checks on its side. Deletes, pauses and budget changes need confirm_destructive, and a pre-write rule check blocks unsafe arguments. The approval card and one-tap undo apply only in the PaidSync workspace.
preview_gtm_workspace first.get_gtm_container_snippet still has to be on your pages.Sign up at paidsync.ai, connect Google Tag Manager in the dashboard with your Google sign-in, then run claude mcp add --transport http paidsync https://mcp.paidsync.ai/mcp in your terminal. Type /mcp inside a session, pick paidsync, and sign in with your PaidSync login.
Yes, with two checks. publish_gtm_version needs confirm set, and Claude Code asks before it runs the tool. Build changes in a separate workspace and test them with a preview link first.
No. GTM uses a separate OAuth client from Google Ads, so connecting GTM leaves your Google Ads connection as it is.
Yes. Once you have signed in through /mcp, claude -p reuses the stored OAuth token. Audits and reads run straight through. Writes need care. No one is there to answer the Claude Code prompt, so any write tool you allowed with --allowedTools runs straight through. For an unattended job, allow only the read tools it needs.
Yes. The free plan is $0 for 15 tasks a month with no card. Pro starts at $99 a month and Team at $249 a month.
39 GTM tools. One command in Claude Code.