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.
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.
- gtm_accounts · gtm_containers
- gtm_publish_log
- gtm_templates
- gtm_conversion_links
- PENDING_APPROVAL
- APPROVED
- PUBLISHED
- REJECTED
- No scheduled publish
- No one-click rollback
- No LLM in path
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.
add_to_cart). Template: ga4. Event params from data layer: currency, value, items. template · ga4 AW-6478291). Linked to GTM Conversion Linker tag for cross-domain attribution. Template: google_ads. template · google_adsconversion-linked purchase. Used by both Google Ads conversion and GA4 purchase tags. gtm_publish_log for audit + manual revert if needed. PUBLISHEDaudit-snapshot 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.
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.
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.
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.
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.
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.
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).
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.
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