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)
| Area | Details |
|---|---|
| Webflow site | 669e9035529a7f101e149eca (pacing.agency) |
| GTM (web) | GTM-PGPK24VR via Stape loader https://load.data.pacing.agency/... |
| sGTM (server) | GTM-NHVBMP3D |
| GA4 | Measurement ID G-TPFS2Z0HNJ (via sGTM) |
| Ads pixels | Meta 1743482129607086 (CAPI); Pinterest Advertiser 549769377338; Google Ads AW-17079344453; LinkedIn Insight/Conversion IDs via lookup; Reddit Pixel present; Floodlight (historical, verify) |
| Data sink | BigQuery: pacing-agency-we-1733769538574.SGTMtoBQ1pacing.pacingeventssgtm1 |
| Consent | Termly 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.
| Collection | ID | Notes |
|---|---|---|
| Services | 676058e3b03e90853d8d8ceb | Required: name, slug, category; deliverable bullets; rich text; related tools/case studies; FAQ toggles; SEO title/description. |
| Sub-Services | 682b1fbd6c6612118937bd6e | Required: name, slug; short-description, images/icons; linked services and service category; rich text. |
| Case Studies | 68763c05b86dd4610d8d02b5 | Rich media, KPIs, colours, CTA, team, gallery, SEO; linked services/clients; toggles. |
| Blog Posts | 669e9035529a7f101e149f62 | Required: name, slug, date, category, main/thumbnail images, summary, body, SEO title/description; author options; featured; TOC/comments toggles. |
| Blog Categories | 669e9035529a7f101e149f3f | Name, slug, description, SEO title/description. |
| Tools | 6846f16677c2090f3a234e1e | Required: name, slug, h1, short-name; tool category (options), colour, rich text; links to services/sub-services/case studies; icon/main image; SEO. |
| Service Categories | 676059e731c716d9f1c56a81 | Taxonomy for Services. |
| Case Study Categories | 6877b2356fe34f35bd1aee7c | Taxonomy for Case Studies. |
| FAQs | 682b4ac67f18d4b67ac2573b | Name/slug; question, answers (short/long), sort-order; SEO; links to services/tools/case studies/static pages. |
| Clients | 68763c19276771c33e72e281 | Logos, sort order, linked case studies. |
| Stats | 6877c4d76b2a3fa8115d9602 | Metrics support. |
| Processes | 68d1c1156a3f8fbcca06ca01 | Steps, images, bullets, sort order. |
| Testimonials | 68f8b252cedf970a559665dd | Quotes, names/roles, images, links to clients/case studies, SEO. |
| Landing Pages | 6904dcb47ebff962cc495004 | LP-specific content. |
| Contact LP1s | 69121374a47442d74f41201b | Contact LP variant. |
| Callouts / Callout Categories | 691214529959af0aee59ca74 / 691214642055c39447645580 | CTA snippets and taxonomy. |
| FAQ Page Reference (Static) | 6846f93bfb297bfbf47d3034 | Static page linkage for FAQs. |
Analytics, Tracking, and Tagging
- Tag manager: Web container
GTM-PGPK24VRloaded via Stape custom loader (https://load.data.pacing.agency/...); server containerGTM-NHVBMP3D(sGTM) hosted on Stape atdata.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_pcaprioritises localStorage over cookie; propagated to forms and server events; seetools/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.comfor internal agency use and client workspaces. Multi-workspace instance with Google OAuth authentication. Seetools/twentycrm.mdfor REST API documentation. - CRM Hosting: Hetzner Cloud project "CRM1" (project ID:
12083932). Servertwenty-crm-prod-2(CPX31: 4 vCPU, 8GB RAM, 160GB disk) in Falkenstein, Germany. Public IP:49.13.82.194. Managed via hcloud CLI. Seetools/hetzner.mdfor infrastructure details. - Automation: N8N self-hosted automation platform at
n8n.pacing.agencyfor client and internal workflows. Seetools/n8n.mdfor details. - N8N Hosting: Hetzner Cloud project "Pacing n8n" (project ID:
12332922). Servern8n2(CCX13: 2 vCPU dedicated, 8GB RAM, 80GB disk) in Falkenstein, Germany. Public IP:91.98.150.95. Managed via hcloud CLI. Seetools/hetzner.mdfor 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.mdfor complete workflow documentation. - N8N API: REST API available at
https://n8n.pacing.agency/api/v1with workflow management, execution tracking, and tag organisation. API key stored in project.envfile. Seetools/n8n.mdfor API documentation. - Email: Notifuse self-hosted email sending platform at
email.pacing.agencyfor transactional and marketing emails. Seetools/notifuse.mdfor details. - Notifuse Hosting: Hetzner Cloud project "notifuse-pacing1" (project ID:
12336267). Servernotifuse-email(CPX21: 3 vCPU, 4GB RAM, 80GB disk) in Nuremberg, Germany. Public IP:91.99.193.35. Managed via hcloud CLI. Seetools/hetzner.mdfor infrastructure details. - SMTP: Stalwart open source SMTP server for cold email delivery. See
tools/stalwart.mdfor details. - Stalwart Hosting: Hetzner Cloud project "Stalwart SMTP" (project ID:
12629745). Serverstalwart-smtp(CPX11: 2 vCPU, 2GB RAM, 40GB disk) in Nuremberg, Germany. Public IP:157.90.126.220. Managed via hcloud CLI. Seetools/hetzner.mdfor infrastructure details. - Comments: Remark42 self-hosted commenting system installed on Pacing blog, available for client websites. See
tools/remark42.mdfor details. - Remark42 Hosting: Hetzner Cloud project "Comments1" (project ID:
12402044). Serverremark42(CPX21: 3 vCPU, 4GB RAM, 80GB disk) in Nuremberg, Germany. Public IP:91.98.226.29. Managed via hcloud CLI. Seetools/hetzner.mdfor infrastructure details. - AI Headshots: HeadshotAI professional AI headshot generator at
headshots.pacing.agencyfor generating professional headshots. Seetools/headshotai.mdfor details. - HeadshotAI Hosting: Hetzner Cloud project "headshotai" (project ID:
12423907). Serverheadshots-pacing(CPX21: 3 vCPU, 4GB RAM, 80GB disk) in Nuremberg, Germany. Public IP:91.98.70.125. Managed via hcloud CLI. Seetools/hetzner.mdfor infrastructure details. - Digital Asset Management: ResourceSpace open source DAM system for organising, storing, and sharing digital assets. See
tools/resourcespace.mdfor details. - ResourceSpace Hosting: Hetzner Cloud project "resource-space" (project ID:
12401568). No servers currently deployed. Seetools/hetzner.mdfor 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 Conversions
- 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/(seescripts/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).