Skip to main content

Pacing Tech Stack Architecture

Purpose: single source of truth for Pacing Agency marketing/website stack. Keep this aligned with live systems before executing changes.

⚠️⚠️ Critical: Always Pull Before Editing

This documentation is in a shared Google Drive folder. Multiple team members can work in the same folder.

Before making any edits:

  1. Run git pull origin main to get the latest changes
  2. Verify you're editing the correct file type (tool doc vs custom page)
  3. Check git status before committing to ensure you're only committing intended changes

Never commit generated files in docusaurus/docs/tools/ (they're auto-generated on build).

Quick map (IDs and routes)

ℹ️📋 Quick Reference: Key IDs
AreaDetails
Webflow site669e9035529a7f101e149eca (pacing.agency)
GTM (web)GTM-PGPK24VR via Stape loader https://load.data.pacing.agency/...
sGTM (server)GTM-NHVBMP3D
GA4Measurement ID G-TPFS2Z0HNJ (via sGTM)
Ads pixelsMeta 1743482129607086 (CAPI); Pinterest Advertiser 549769377338; Google Ads AW-17079344453; LinkedIn Insight/Conversion IDs via lookup; Reddit Pixel present; Floodlight (historical, verify)
Data sinkBigQuery: pacing-agency-we-1733769538574.SGTMtoBQ1pacing.pacingeventssgtm1
ConsentTermly CMP in web GTM; Consent Mode to confirm
Client ID_c_pca localStorage-first; propagates to forms and server events

Web Properties, Hosting, and Frameworks

  • Primary domain: pacing.agency (London-based agency site).
  • Hosting: Amazon Web Services with Cloudflare CDN/proxy in front; HSTS enabled; SSL active (Cloudflare-issued).
  • Frontend: React with GSAP and jQuery present; Webpack build; core-js polyfills.
  • CMS: Webflow for all content (marketing pages, blog, ecommerce).
  • Hosting backend: Webflow hosting infrastructure.

Content & CMS Model (current Webflow structure)

✅ Comprehensive CMS Documentation Available

Complete documentation for all CMS collections is available in scripts/resources/webflow/CMS Collections Documentation.md, including:

  • Tone of voice guidelines for each collection
  • Content types and usage patterns
  • Keyword optimization strategies
  • Maintenance to-do lists
  • Cross-collection linking strategies

MCP automation tools are available in scripts/resources/webflow/MCP Prompts/ for automating common tasks like SEO audits, keyword optimization, and style refactoring. See tools/webflow.md for details.

CollectionIDNotes
Services676058e3b03e90853d8d8cebRequired: name, slug, category; deliverable bullets; rich text; related tools/case studies; FAQ toggles; SEO title/description.
Sub-Services682b1fbd6c6612118937bd6eRequired: name, slug; short-description, images/icons; linked services and service category; rich text.
Case Studies68763c05b86dd4610d8d02b5Rich media, KPIs, colours, CTA, team, gallery, SEO; linked services/clients; toggles.
Blog Posts669e9035529a7f101e149f62Required: name, slug, date, category, main/thumbnail images, summary, body, SEO title/description; author options; featured; TOC/comments toggles.
Blog Categories669e9035529a7f101e149f3fName, slug, description, SEO title/description.
Tools6846f16677c2090f3a234e1eRequired: name, slug, h1, short-name; tool category (options), colour, rich text; links to services/sub-services/case studies; icon/main image; SEO.
Service Categories676059e731c716d9f1c56a81Taxonomy for Services.
Case Study Categories6877b2356fe34f35bd1aee7cTaxonomy for Case Studies.
FAQs682b4ac67f18d4b67ac2573bName/slug; question, answers (short/long), sort-order; SEO; links to services/tools/case studies/static pages.
Clients68763c19276771c33e72e281Logos, sort order, linked case studies.
Stats6877c4d76b2a3fa8115d9602Metrics support.
Processes68d1c1156a3f8fbcca06ca01Steps, images, bullets, sort order.
Testimonials68f8b252cedf970a559665ddQuotes, names/roles, images, links to clients/case studies, SEO.
Landing Pages6904dcb47ebff962cc495004LP-specific content.
Contact LP1s69121374a47442d74f41201bContact LP variant.
Callouts / Callout Categories691214529959af0aee59ca74 / 691214642055c39447645580CTA snippets and taxonomy.
FAQ Page Reference (Static)6846f93bfb297bfbf47d3034Static page linkage for FAQs.

Analytics, Tracking, and Tagging

💡💡 Server-Side Tracking Benefits

The dual GTM setup (Web + Server) provides several advantages:

Privacy & Compliance:

  • Server-side tracking is more privacy-friendly and less susceptible to ad blockers
  • Better control over what data is sent to third parties
  • Enhanced consent management via Termly CMP

Data Quality:

  • More reliable data collection (not affected by browser restrictions)
  • Improved attribution accuracy
  • Server-side enrichment capabilities

Performance:

  • Reduced client-side JavaScript execution
  • Faster page load times
  • Consolidated tracking reduces network requests
  • Tag manager: Web container GTM-PGPK24VR loaded via Stape custom loader (https://load.data.pacing.agency/...); server container GTM-NHVBMP3D (sGTM) hosted on Stape at data.pacing.agency.
  • Consent: Termly CMP drives firing; confirm Consent Mode settings and any geo rules.
  • Analytics/behaviour: GA4 routed via sGTM (Measurement ID G-TPFS2Z0HNJ), Microsoft Clarity, Cloudflare Browser Insights.
  • Ads/remarketing pixels: Meta Pixel (1743482129607086) via CAPI, LinkedIn Insight/Conversions, Pinterest (Advertiser ID 549769377338), Microsoft Ads UET, Reddit Pixel, Google Ads (AW-17079344453), Floodlight historically (verify current use).
  • Server routing: sGTM sends GA4 (all events), Google Ads conversions, Meta CAPI, LinkedIn CAPI, Pinterest CAPI; BigQuery logging to pacing-agency-we-1733769538574.SGTMtoBQ1pacing.pacingeventssgtm1.
  • Event naming (spec): base events include page_view, scroll_75, contact/link clicks, form submits (lead_form_submit, demo_form_submit, newsletter_form_submit), video events, 404. Only lead/demo events are mapped to ad platforms; others are GA-only unless expanded.
  • Client ID: first-party _c_pca prioritises localStorage over cookie; propagated to forms and server events; see tools/gtm.md.
  • Security/anti-abuse: reCAPTCHA active.
  • CDN/perf telemetry: Cloudflare Browser Insights running; Cloudflare edge caching.

Data Flow Architecture

Tech Stack Overview

Marketing Automation, CRM, and Data

  • CRM: TwentyCRM (open source) deployed at pacingagency.com for internal agency use and client workspaces. Multi-workspace instance with Google OAuth authentication. See tools/twentycrm.md for REST API documentation.
  • CRM Hosting: Hetzner Cloud project "CRM1" (project ID: 12083932). Server twenty-crm-prod-2 (CPX31: 4 vCPU, 8GB RAM, 160GB disk) in Falkenstein, Germany. Public IP: 49.13.82.194. Managed via hcloud CLI. See tools/hetzner.md for infrastructure details.
  • Automation: N8N self-hosted automation platform at n8n.pacing.agency for client and internal workflows. See tools/n8n.md for details.
  • N8N Hosting: Hetzner Cloud project "Pacing n8n" (project ID: 12332922). Server n8n2 (CCX13: 2 vCPU dedicated, 8GB RAM, 80GB disk) in Falkenstein, Germany. Public IP: 91.98.150.95. Managed via hcloud CLI. See tools/hetzner.md for infrastructure details.
  • N8N Active Workflows: 9 active workflows including Webflow cache clearing (Pacing, TTL, HML), Twilio call data processing, Google Ads offline conversion uploads, and CircleLoop webhooks. See tools/n8n.md for complete workflow documentation.
  • N8N API: REST API available at https://n8n.pacing.agency/api/v1 with workflow management, execution tracking, and tag organisation. API key stored in project .env file. See tools/n8n.md for API documentation.
  • Email: Notifuse self-hosted email sending platform at email.pacing.agency for transactional and marketing emails. See tools/notifuse.md for details.
  • Notifuse Hosting: Hetzner Cloud project "notifuse-pacing1" (project ID: 12336267). Server notifuse-email (CPX21: 3 vCPU, 4GB RAM, 80GB disk) in Nuremberg, Germany. Public IP: 91.99.193.35. Managed via hcloud CLI. See tools/hetzner.md for infrastructure details.
  • SMTP: Stalwart open source SMTP server for cold email delivery. See tools/stalwart.md for details.
  • Stalwart Hosting: Hetzner Cloud project "Stalwart SMTP" (project ID: 12629745). Server stalwart-smtp (CPX11: 2 vCPU, 2GB RAM, 40GB disk) in Nuremberg, Germany. Public IP: 157.90.126.220. Managed via hcloud CLI. See tools/hetzner.md for infrastructure details.
  • Comments: Remark42 self-hosted commenting system installed on Pacing blog, available for client websites. See tools/remark42.md for details.
  • Remark42 Hosting: Hetzner Cloud project "Comments1" (project ID: 12402044). Server remark42 (CPX21: 3 vCPU, 4GB RAM, 80GB disk) in Nuremberg, Germany. Public IP: 91.98.226.29. Managed via hcloud CLI. See tools/hetzner.md for infrastructure details.
  • AI Headshots: HeadshotAI professional AI headshot generator at headshots.pacing.agency for generating professional headshots. See tools/headshotai.md for details.
  • HeadshotAI Hosting: Hetzner Cloud project "headshotai" (project ID: 12423907). Server headshots-pacing (CPX21: 3 vCPU, 4GB RAM, 80GB disk) in Nuremberg, Germany. Public IP: 91.98.70.125. Managed via hcloud CLI. See tools/hetzner.md for infrastructure details.
  • Digital Asset Management: ResourceSpace open source DAM system for organising, storing, and sharing digital assets. See tools/resourcespace.md for details.
  • ResourceSpace Hosting: Hetzner Cloud project "resource-space" (project ID: 12401568). No servers currently deployed. See tools/hetzner.md for infrastructure details.
  • Data warehouse: BigQuery sync configured for TwentyCRM data (crm1-474415.twentycrm_live). Daily automated sync at 2:00 AM. See deployment docs in /Users/benpower/VSC/twentyCRM/BIGQUERY_SYNC_SETUP.md.
  • Reporting: BigQuery dataset available for Looker Studio, custom dashboards, and analytics.

Security, Compliance, and Performance Notes

🚨🚨 Security & Compliance Requirements

Critical security and compliance considerations:

  • HTTPS Everywhere: Cloudflare fronting AWS with HSTS enforces HTTPS-by-default
  • Form Protection: reCAPTCHA active for form abuse mitigation
  • Consent Management: Confirm current Termly CMP configuration and regional compliance (UK/EU GDPR)
  • Data Privacy: Server-side tracking improves privacy posture
  • Performance: Keep third-party pixels/SDKs consolidated through GTM to reduce layout shift

Action Required: Verify Consent Mode configuration and document any geo-specific rules.

  • Cloudflare fronting AWS with HSTS suggests HTTPS-by-default posture.
  • reCAPTCHA present for form abuse mitigation.
  • Cookie/consent tooling not identified in scan — confirm current consent management platform and regional compliance (UK/EU).
  • Keep third-party pixels/SDKs consolidated through GTM where possible to reduce layout shift and duplicate beacons.

Automation Workflows (n8n)

Workflow Overview

Workflow Details

Webflow → Cloudflare Cache Clearing

  • Pacing Website: Webhook triggers Cloudflare cache purge on publish (workflow N11idwXDFWNwGYDh)
  • TTL Website: Webhook triggers Cloudflare cache purge on publish (workflow KowT1FqN6Xk6UoRE)
  • HML Website: Webhook triggers Cloudflare cache purge on publish (workflow lQvLaJJihWpebP6c)

Twilio Call Processing

  • Process Call Data LIVE TWILIO (workflow Br8hV6MAxI3ZqR2J): Downloads recordings, transcribes via ElevenLabs, analyzes with Google Vertex AI, extracts structured data (booking likelihood, pricing, addresses, spam detection), stores in Google Sheets
  • Process Call Data LIVE (workflow TsmCwp84TKbHa62o): Processes call data from Google Sheets
  • Google Ads Offline Conversion - CALL (workflow lvWrOkP2lyFnVbQV): Uploads call conversions to Google Ads API from processed call data
  • Google Ads Offline Conversion - CALL NON-CL (workflow kFpW5Ahu63kGfrSL): Uploads non-CircleLoop call conversions

Other Workflows

  • CIRCLELOOP-WEBHOOK1 (workflow ZOYW9YJWM7Zlyob9): CircleLoop webhook handler for MTL client
  • My workflow 3 (workflow QpjmWcZTwupjkXHI): Internal workflow

See tools/n8n.md for complete workflow documentation and scripts/resources/n8n/ for workflow backups.

Open Questions / Next Steps

⚠️⚠️ Action Items

References

  • Operational guidelines: README.md.
  • Cursor execution and writing rules: Project Rules in .cursor/rules/ (primary) and the legacy .cursorrules file.
  • Tool-specific notes live under tools/ (add before creating new tags or integrations).
  • Automation scripts and resource files organised by tool in scripts/resources/ (see scripts/resources/README.md).
  • Webflow CMS documentation: scripts/resources/webflow/CMS Collections Documentation.md (tone of voice, content types, keywords, to-do lists).
  • Webflow MCP prompts: scripts/resources/webflow/MCP Prompts/ (automation capabilities for SEO, keywords, links, styles, breakpoints, sliders).

FAQs

What is the primary tracking setup for pacing.agency?

The site uses a dual GTM setup: Web container GTM-PGPK24VR loaded via Stape custom loader, and Server container GTM-NHVBMP3D hosted on Stape. All events flow through sGTM to GA4 (Measurement ID G-TPFS2Z0HNJ) and BigQuery for data warehousing.

How does the data flow from the website to analytics platforms?

User events are captured by the Web GTM container, which checks consent via Termly CMP. After consent, events are sent to the Server GTM container, which routes them to GA4, ad platforms (via CAPI), and BigQuery for long-term storage. The client ID _c_pca is stored in localStorage and propagated to forms and server events.

What is the hosting infrastructure for pacing.agency?

The site is hosted on Amazon Web Services with Cloudflare CDN/proxy in front. Cloudflare provides HSTS, SSL certificates, edge caching, and Browser Insights. The frontend uses React with GSAP and jQuery, built with Webpack.

Where are automation workflows hosted?

n8n automation workflows are self-hosted at n8n.pacing.agency on a Hetzner Cloud server. The platform handles Webflow cache clearing, Twilio call processing, Google Ads offline conversions, and various webhook integrations. See tools/n8n.md for complete workflow documentation.

How is consent management handled?

Termly CMP (Consent Management Platform) is integrated into the Web GTM container. It drives tag firing based on user consent. Consent Mode settings should be confirmed, and any geo-specific rules need to be documented.