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.

Quick map (IDs and routes)

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/Ecommerce signals: WordPress and Webflow Ecommerce detected — likely a hybrid setup (e.g., WordPress for blog, Webflow for marketing pages/commerce). Confirm the canonical CMS before edits.
  • Backend languages/stores detected: PHP and MySQL (likely from WordPress component).

Content & CMS Model (current Webflow structure)

Comprehensive CMS documentation: See scripts/resources/webflow/CMS Collections Documentation.md for detailed documentation of all collections including tone of voice guidelines, content types, keyword optimization strategies, and maintenance to-do lists.

MCP automation tools: Webflow MCP prompts available in scripts/resources/webflow/MCP Prompts/ for automating common tasks (SEO audits, keyword optimization, link fixing, style refactoring, breakpoint management, slider building). See tools/webflow.md for MCP tool 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

  • 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.

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

  • 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)

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

  • Confirm canonical CMS split (WordPress vs Webflow) and content ownership for blog vs landing/ecommerce.
  • Confirm current Consent Mode configuration and any geo rules tied to Termly.
  • Validate whether Floodlight is still required and document advertiser/config IDs if active.
  • Document form → CRM data flows (Webflow forms → TwentyCRM via API/webhooks).
  • If server-side tracking is planned, define event schema and tagging migration path.

References

  • Operational guidelines: README.md.
  • Cursor execution and writing rules: .cursorrules.
  • 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).