External APIs & Integrations

Every third-party / external service the platform talks to — what it provides, which part of the system calls it (Worker handler · n8n · a BigQuery transfer · the build), and the secret that authenticates it. This is the integration map; for the platform's own internal routes see worker-endpoints.md, and for the n8n jobs themselves n8n-workflows.md. Verified against the code 2026-05-20.

All Worker secrets are set via wrangler secret put (never committed); the n8n-held credentials live in the n8n tenant. Two callers dominate: the Worker (live, at the edge) and n8n (async / ETL / fallback).


Data warehouse & Google data

Service Used for Called by Auth
Google BigQuery (bigquery.googleapis.com) The warehouse — almost every read, plus DDL/DML Worker bq/client.js (all BQ handlers), bq-execute, bq-admin, bq-create-table BQ_SERVICE_ACCOUNT_JSON → JWT via oauth2.googleapis.com
Google Ads API (googleads.googleapis.com) Live keyword search volumes (county-level) Worker keyword-planner.js GOOGLE_ADS_DEVELOPER_TOKEN + OAuth (GOOGLE_ADS_CLIENT_ID/_SECRET/_REFRESH_TOKEN/_CUSTOMER_ID/_LOGIN_CUSTOMER_ID)
Google data via BigQuery Data Transfer — GA4, Search Console, GMB, Google Ads, Merchant Center Lands in BQ on a schedule; the Worker only reads it Google-side transfer (not a Worker call) → read by Worker ga4-stats, gsc-stats, gbp-stats, ads-stats, gmc-stats Google transfer service; see bigquery-and-sync.md

CSO / Pobal / Tailte / CRO / data.gov.ie are data sources loaded into BQ (provenance, not live APIs) — see cso-area-data.html.

AI / ML

Service Used for Called by Auth
OpenAI (api.openai.com) Embeddings for every Vectorize index + Whisper speech-to-text Worker: vector-*, deals-vector-*, company-knowledge-*, case-studies-reindex, docs-reindex/docs-search, crawl-website, deal-patterns, stt OPENAI_API_KEY
Anthropic Claude (api.anthropic.com) The AI advisor + generated insights + the docs bot Worker: ai-advisor, discovery-insights, map-advisor, deal-patterns, docs-search ANTHROPIC_API_KEY

Rank · SEO · local search

Service Used for Called by Auth
SerpAPI (serpapi.com) SERP rank grids, local rank checks, prospect search/enrich/audit, GBP live, NAP Worker: serp-grid, serp-local, prospect-search/-enrich/-audit, competitor-enrich, gbp-live, lib/insites-nap · + n8n batch refresh loops SERPAPI_KEY
Pleper (scrape.pleper.com) GBP profile scrape (photos, posts, hours, categories) Worker lib/pleperprospect-audit, gbp-live, prospect-pleper-refresh, competitor-enrich · + n8n batch PLEPER_API_KEY + PLEPER_API_SIG
Ahrefs (api.ahrefs.com) Keyword volumes + SEO metrics Worker: ahrefs-by-url, ahrefs-seo, prospect-intel, discovery-suggest, saymore-keyword-matrix AHREFS_API_KEY
InSites (api.insites.com / app.insites.com) Digital-footprint + LRC audits, share links, report settings Worker: insites-settings, insites-share-link, insites-report-summary, grid-map-build, ai-advisor · + n8n (submit / poll / callback — the primary path) INSITES_API_KEY_DF, INSITES_API_KEY_LRC, INSITES_PUBLIC_KEY (DF vs LRC are separate keys)

CRM · deals · delivery · support

Service Used for Called by Auth
FCR CRM (Dynamics) (crmprod.fcrmedia.ie) Account + order data (the billing source of truth) Worker check-account, check-enrichment · + n8n dashboard-account internal CRM auth
HubSpot (api.hubapi.com) Deals, engagements (notes/emails/calls), properties Worker: hubspot-deal-context/-live/-deals-search/-engagements-sync/-properties, roam-users-backfill, ai-advisor · + n8n sync to BQ HUBSPOT_ACCESS_TOKEN
Teamwork Projects (fcrie.teamwork.com) Build projects, milestones, tasks Worker teamwork-project, build-detail, ai-advisor (live single-project) · + n8n bulk sync → BQ TEAMWORK_PROJECTS_API_KEY
Teamwork Desk (fcrie.teamwork.com/desk) Support tickets (open + closed history) Worker teamwork-desk-ticket(s), twd-deep-dive, build-detail, ai-advisor TEAMWORK_DESK_API_KEY (Bearer) + TEAMWORK_DESK_WEBHOOK_SECRET (HMAC for the deep-dive webhook)

Marketing · listings · comms

Service Used for Called by Auth
Meta (Facebook) Marketing API (graph.facebook.com) Audience reach estimates per area Worker meta-reach, meta-reach-batch META_ACCESS_TOKEN + META_AD_ACCOUNT_ID
Yext Publisher-listings sync n8n (Worker yext-sync delegates to n8n; yext-listings reads the BQ cache) n8n-held Yext creds
iovox Call-tracking data Ingested to BQ via n8n/ETL; Worker iovox only reads BQ n8n/ETL
Roam (Ro.am) (api.ro.am) Post AM-filed briefs to the Development group; advisor chat surface Worker ai-advisor (send_brief_to_development) ROAM_BEARER + ROAM_DEV_GROUP_ID

Orchestration

Service Used for Called by Auth
n8n (fcrmedia.app.n8n.cloud/webhook) Async jobs, ETL, and Worker fallback — InSites submit/poll, CRM account fetch, HubSpot/Teamwork/Yext/iovox sync, batch SerpAPI+Pleper refresh Worker → n8n (ai-advisor, discovery-df-compare, hubspot-chat, insites-poll, prospect-engagement, report-annotate) and the web UI → n8n directly (dashboard-account, GA4/GSC/GBP stats, etc.) N8N_API_KEY

Cloudflare platform (bindings, not HTTP APIs)

Binding Service Used for
VECTORIZE / COMPANY_KNOWLEDGE_VECTORIZE / DEAL_VECTORIZE / DOCS_VECTORIZE Vectorize Semantic search (site portfolio, company knowledge, deal history, docs bot)
CACHE / REPORTS Workers KV Response cache + Discovery report storage
ADVISOR_CSV / SERP_SNAPSHOTS R2 CSV attachments + SERP HTML/PNG snapshots
BROWSER Browser Rendering Headless-Chrome screenshots (serp-screenshot)
BRIEF_QUEUE (+ DLQ) Queues Deal-brief refresh fan-out
PROGRESS_DO Durable Objects Strongly-consistent advisor progress state for the HubSpot card poller

Client-side / CDN (browser, not the server)

  • OpenStreetMap tiles + unpkg (Leaflet) — map rendering in the embedded maps (area-map-embed, grid-map-build).
  • Google Maps deep-links (maps.app.goo.gl) — links in case studies / reports (not an API call).

Source of truth: external hosts + env.* secrets in worker/src/**. If you add an integration, add its secret via wrangler secret put, wire CORS if a browser calls it, and add a row here.

FCR Dashboard documentation · generated from docs/ · keep counts verified, not guessed.

Ask the docsRAG over this site
Ask anything about the FCR Dashboard platform — architecture, BigQuery, the worker routes, billing rules, the LRC stack, scoring… Answers are grounded in this documentation, with source links.
How does the deal-brief refresh work? Which routes are Worker vs n8n? How is account health scored?