Skip to content
esc close · switch
LYRA/ Tools/ Operations/ GTM Manager
Operations Approval-gatedOn-demand

GTM workspaces, staged before they publish.

GTM Manager wraps the Google Tag Manager API with a cache-first read layer, an approval workflow before publish, and an internal template library for the platforms most agencies wire. Stage your changes; route them through PENDING_APPROVAL → APPROVED → PUBLISHED; the audit log keeps every version. On-demand only — no scheduled publish, no one-click rollback.

On-demand publish · 3-state approval workflow · Version history per publish
What runs · the GTM workflow

Cache-first reads, approval-gated writes.

Each managed container is read through a local cache (containers + cached tags/triggers/variables JSONB) so day-to-day reads don't hit GTM's API. Writes — adding a tag, changing a trigger, publishing a workspace — route through the 3-state approval workflow with a full audit log.

Workflow · Multi-brand agency · 11 GTM containers Live · last cache refresh 14:11 UTC
01 · Containers 11 Cache-first reads One per client account. Cached tags/triggers/variables stored as JSONB; refresh on demand.
02 · Approval 3 states PENDING → APPROVED → PUBLISHED Every publish request lands in PENDING. Reviewer approves (or rejects). Approver publishes. All three states logged with timestamps.
03 · Templates 4 Internal library google_ads · ga4 · meta_pixel · conversion_linker. Pre-built configurations per platform; add new ones via onboarding.
04 · Cadence On-demand No scheduled publish Reads via cache; writes via the approval queue. There is no cron that publishes on a schedule today.
Tables
  • gtm_accounts · gtm_containersregistry
  • gtm_publish_logaudit
  • gtm_templatesplatform-keyed
  • gtm_conversion_linksGAds ↔ GTM
Approval workflow
  • PENDING_APPROVALsubmitted
  • APPROVEDreviewer ok
  • PUBLISHEDlive
  • REJECTEDwith reason
Limitations · today
  • No scheduled publishon roadmap
  • No one-click rollbackmanual republish
  • No LLM in pathby design
Sample · workspace + publish log

A workspace diff before it ships.

Below: a sample workspace pending publish. Top strip: the changeset summary. The log shows the individual changes (tag added, tag changed, etc.) plus the publish request itself awaiting reviewer approval. Each event has an actor and a timestamp; PUBLISHED versions are retained for audit.

GTM · basalt-dtc · workspace v.4.2 → v.4.3 5 changes pending · 0 conflicts v.1.0 · gtm-manager
Tags · added 2 new conversion + page view
Tags · changed 1 updated firing rule
Triggers · added 1 purchase event
Variables · changed 1 data layer key
T-018 Apr 26 · 13:42 UTC Tag · added d.mercer GA4 · Add to cart event Added GA4 event tag ga4_add_to_cart firing on Custom Event (add_to_cart). Template: ga4. Event params from data layer: currency, value, items. template · ga4
T-019 Apr 26 · 13:48 UTC Tag · added d.mercer Google Ads conversion · Purchase Added Google Ads conversion tag for Purchase goal (conversion ID AW-6478291). Linked to GTM Conversion Linker tag for cross-domain attribution. Template: google_ads. template · google_adsconversion-linked
T-005 Apr 26 · 14:01 UTC Tag · changed d.mercer GA4 · Page view (updated firing rule) Changed firing rule from All Pages → All Pages except /checkout/* (where the dedicated GA4 Begin Checkout tag fires). Avoids double-counting page views during checkout flow. rule change
TR-007 Apr 26 · 14:03 UTC Trigger · added d.mercer Custom Event · purchase New trigger fires on Custom Event purchase. Used by both Google Ads conversion and GA4 purchase tags.
PUB-031 Apr 26 · 14:11 UTC Publish request d.mercer → e.morgan Workspace v.4.2 → v.4.3 · status PENDING_APPROVAL Publish request submitted by d.mercer; reviewer e.morgan notified. Includes 5 changes (3 tags, 1 trigger, 1 variable). Awaiting approval. PENDING_APPROVAL5 changes
PUB-030 Apr 23 · 16:08 UTC Publish · approved e.morgan Workspace v.4.1 → v.4.2 · PUBLISHED Approved by e.morgan; published. Snapshot retained in gtm_publish_log for audit + manual revert if needed. PUBLISHEDaudit-snapshot
Last 6 events shown · publish log retains every version Approval workflow · version history · manual revert
How the workflow works

GTM API wrapped in approval rails.

GTM Manager is a thin wrapper around the Google Tag Manager API: a local cache for reads, an approval queue for writes, an internal template library for common platforms. No LLM in the path; no scheduled publishing today; no one-click rollback today.

01 · Cache-first readsPerformance

Containers cached locally.

Container metadata + tags/triggers/variables stored as JSONB in `gtm_containers`. Day-to-day reads (browse a workspace, view a tag) hit the cache. Refresh button re-pulls from GTM API on demand. Saves API quota and makes the UI fast.

Cache layer JSONB columns
Refresh On-demand
API saving Significant
02 · Approval workflow3 states

PENDING → APPROVED → PUBLISHED.

Every publish request lands in PENDING_APPROVAL with a workspace snapshot attached. A reviewer moves it to APPROVED (or REJECTED with reason). The approver triggers PUBLISHED, which calls GTM's publish API. All four state changes logged with timestamps and the user who acted.

States PENDING · APPROVED · PUBLISHED · REJECTED
Logged All transitions
Snapshot On submit
03 · TemplatesInternal library

Common platforms, pre-wired.

Pre-built tag/trigger/variable configurations for the platforms agencies wire most: google_ads (conversion + remarketing), ga4 (events + page view), meta_pixel (PageView + standard events), conversion_linker. Custom templates ship via onboarding.

Built-in google_ads · ga4 · meta_pixel · linker
Custom Onboarding · agency
Stored in gtm_templates
04 · Conversion linkingGAds ↔ GTM

Map conversion IDs to tags.

Google Ads conversion IDs are mapped to the GTM tags that fire them — stored in `gtm_conversion_links`. Useful for tracing 'which GTM tag fires this Google Ads conversion?' without clicking through the GTM UI.

Mapping GAds conv ID → GTM tag
Used by Conversion audits
05 · Audit trailgtm_publish_log

Every publish leaves a row.

`gtm_publish_log` keeps: version_id, version_name, published_by, approved_by, status, workspace_snapshot_json, created_at, published_at. Snapshot lets you see exactly what was in the workspace when it shipped — and is the basis for manual revert.

Retention Indefinite · audit
Snapshot Full workspace JSON
Revert Manual republish of older snapshot
06 · LimitationsToday

What's not in scope yet.

No scheduled publish (publishing is operator-triggered). No one-click rollback (version history exists; revert means selecting an older version and republishing it). No LLM in the workflow (deliberate — GTM operations should be deterministic and auditable).

Scheduled publish Roadmap
One-click rollback Roadmap
LLM in path By design · none
Frequently asked

The honest answers about GTM Manager.

Does GTM Manager publish on a schedule?

No. Publishing is operator-triggered only — you stage changes in a workspace, route them through the approval workflow, and an approver clicks publish when ready. There is no cron / scheduled publish today. It's on the roadmap for the case where agencies want a 'publish every Wednesday' rhythm; not in scope yet.

Is there a one-click rollback?

Not yet. Every published version writes a row to `gtm_publish_log` with a full workspace snapshot — so you can see exactly what was in any prior version. Reverting means selecting a prior version and republishing it (the snapshot is restored as the active workspace). It's a manual revert, not a one-click; the one-click flow is on the roadmap.

Why two-person approval?

GTM publishes affect every page on the client's site — conversion tracking, analytics events, the lot. Agencies (and clients with shared GTM access) generally want a second pair of eyes before a publish ships. The 3-state workflow makes that explicit and keeps a permanent audit trail of who-approved-what-when.

What templates ship by default?

Four: google_ads (conversion + remarketing tags), ga4 (events + page view), meta_pixel (PageView + standard events), conversion_linker (Google's Conversion Linker tag, pre-configured). They're pre-wired with the right firing rules and variable mappings so adding 'GA4 Add to cart' is one click instead of 12. Custom templates ship via onboarding for agency plans.

Is there an LLM involved?

No — and that's deliberate. GTM operations affect site-level tracking; we want them deterministic and auditable, not generative. Templates are hand-crafted and reviewed; tag/trigger/variable changes are made by a human operator and approved by a human reviewer. The Lyra Agent doesn't propose or write GTM changes.

14-day free trial · No credit card · Cancel in one click

Run the audit.
Keep the findings.

Connect your account and let Lyra run its 18 tools for 14 days. If the projected waste recovery isn't worth at least 10× the $49, don't pay. You keep every insight either way.

Read-only connect · write access opt-in per tool · SOC 2 in progress · GDPR + CCPA compliant