# graph8 for GTM Engineer

> graph8 field guide for GTM Engineer. Live URLs, real surfaces, screenshots from a public-data showcase tenant.

Source: https://docs.graph8.com/roles/gtm-engineer/

*A field guide for GTM Engineer. Live URLs, real surfaces. Screenshots captured from a showcase tenant with public-company data only.*

## The five things to use today

### 01. Event pipeline — Connections, Functions, Destinations

*A Jitsu-style event router: capture events from sites and apps, transform them with JavaScript Functions, fan them out to warehouses, ad pixels, CRMs, and analytics destinations.*

**Open it at**

- `app.graph8.com/connections/overview` — pipeline overview
- `/connections/list` — source→destination event routing table
- `/connections/streams` — tracking streams (sites/apps) with browser + server write keys
- `/connections/functions` — JavaScript event-transform functions
- `/connections/destinations` — routing targets (warehouse, GA4, Meta, LinkedIn Tag, OpenReplay, Matomo, etc.)
- `/connections/live-events` — real-time event stream with Incoming / API Destinations / Batches tabs
- `/connections/tailor` — dynamic page personalization
- `/connections/syncs` — data sync jobs

![Connections list showing source-to-destination event routing table with Functions transforms](../../../../assets/roles/gtm-engineer/1-workflows-list.webp)

***Fig 1.1** — Connections list. Each row is a source → (optional Function transform) → destination edge. This is the heart of the GTM pipeline.*

**Functions are real JavaScript with test + run**

Open `/connections/functions` and any function pops a full code editor with: live JS code, Test Env Vars, Sample Event payload, and a Run button. Write your transform, paste a sample event, click Run, see the output before deploying.

![Function code editor showing JavaScript event-transform with Test Env Vars, Sample Event, Run button](../../../../assets/roles/gtm-engineer/2-workflow-builder.webp)

***Fig 1.2** — Function code editor. Standard JS with access to the incoming event payload + Env Vars. Test before you ship.*

> **Tip: Try this now**
> **Try this now.** Open `/connections/streams`, copy the browser write key for your test site, drop the snippet into a staging page, then open `/connections/live-events` in another tab. You'll see your test events stream in real-time. Now add a Function to enrich them with UTM data and route to a warehouse Destination.

### 02. CRM + billing integrations with bidirectional field mapping

*Connect HubSpot, Salesforce, Zoho, SugarCRM, and Stripe. Map fields both ways. Auto-fill or overwrite per field. Push/Pull/Activity/Appointments toggles per integration.*

**Open it at**

- `app.graph8.com/studio/settings?tab=integrations` — full integrations catalog

Today live: **HubSpot connected** (Salesforce/Zoho/SugarCRM available), **Stripe connected** for billing. Click any integration to open the settings modal — sub-tabs *Push · Pull · Fields · Appointments* with Auto Sync, Activity Sync, and per-record-type controls (Contact / Lead / Company / Deal).

![Integrations tab showing CRM (HubSpot, Salesforce, Zoho, SugarCRM) and Payment (Stripe) integrations](../../../../assets/roles/gtm-engineer/3-integrations.webp)

***Fig 2.1** — `/studio/settings?tab=integrations`. CRM + Payment categories. HubSpot &amp; Stripe live; rest are one-click-connect.*

![HubSpot field mappings showing Graph8 Field to CRM Field with Auto Fill / Overwrite controls](../../../../assets/roles/gtm-engineer/5-custom-fields.webp)

***Fig 2.3** — Field mapping. Per-object (Contact / Lead / Company / Deal) **Graph8 Field ↔ CRM Field** with *Auto Fill* / *Overwrite* radio per row. **This is also the closest thing to a custom-field surface today** — there's no standalone `/fields` route.*

> **Tip: Try this now**
> **Try this now.** Open the HubSpot integration. Click *Fields* tab. Toggle Auto Fill on for the fields graph8 should own (intent_keywords, last_visit_at, sentiment) and Overwrite off for fields the CRM owns (deal_stage, owner). One mapping pass keeps both systems in sync forever.

### 03. Capture leads — Forms + web tracking snippet

*Forms feed straight into the contact directory with full submission history. Web snippet is one HTML tag pointed at `events.flow.graph8.com`.*

**Open it at**

- `app.graph8.com/forms` — form list + submission tables
- `/connections/streams` → click a stream → *Setup Instructions* for the web snippet

Forms detail shows the live submission table: *First Name · Email · Received At · Page Title · URL*. Every submission becomes a contact with full attribution to the source page.

![Forms detail view for go-data-progressive-form with submissions table](../../../../assets/roles/gtm-engineer/6-forms.webp)

***Fig 3.1** — `/forms` submissions table. Every row is one form fill, linked back to the contact record.*

**Web snippet — paste once, track everything**

The snippet ships as a single `&lt;script&gt;` tag with your stream's write-key, pointed at `events.flow.graph8.com`. Drop it in your site's `&lt;head&gt;` once; from then on every pageview, form submit, button click, and custom event flows into the Connections pipeline.

![Site stream Setup Instructions showing HTML script snippet with write-key](../../../../assets/roles/gtm-engineer/7-web-snippet.webp)

***Fig 3.2** — Stream setup. Copy the snippet, paste into `&lt;head&gt;`, watch events appear in `/connections/live-events` within seconds.*

> **Tip: Try this now**
> **Try this now.** Create a stream in `/connections/streams`. Copy the snippet. Paste into a staging site. Visit the page, then check `/connections/live-events` — you should see your pageview event within 2 seconds.

### 04. Programmatic access — API keys, Webhooks, MCP &amp; CLI

*10 API keys provisioned today, webhook endpoints for inbound events, and a full MCP server that exposes 80+ tools to Claude/Copilot via stdio or HTTP.*

**Open it at**

- `app.graph8.com/studio/settings?tab=api` — API Keys + Webhooks + MCP &amp; CLI config

![API Keys + Webhooks panel showing 10 keys redacted as d325...8e33 and webhook section](../../../../assets/roles/gtm-engineer/8-api-keys.webp)

***Fig 4.1** — `/studio/settings?tab=api`. API keys are displayed redacted (`d325…8e33`) — copy once at creation. Webhook section below for inbound POSTs.*

**MCP — Claude/Copilot/Cursor + graph8**

The MCP server exposes the same 80+ tools the in-app Copilot uses (search contacts, create lists, launch sequences, query deals, generate quotes, etc.). Two modes: **Local stdio** for dev (running on your laptop) and **GTM Mode** for Claude Desktop. Config is JSON.

![MCP Server and CLI configuration with JSON snippets for Local stdio and GTM Mode](../../../../assets/roles/gtm-engineer/10-mcp-tools.webp)

***Fig 4.2** — MCP &amp; CLI config. Copy the JSON, drop into Claude Desktop / Cursor / your stdio host, restart, get all 80+ graph8 tools natively.*

**Tool discovery (heads-up for LLM consumers)**

Only ~30 tools are returned in the default `tools/list` — the rest are hidden to keep context lean. Use `g8_tool_search` to load specific categories on demand:

g8_tool_search(query="workflow") // workflow / automation building g8_tool_search(query="dialer") // voice / dialer / phone calls g8_tool_search(query="intent") // buyer intent / signals / keywords g8_tool_search(query="skill") // LLM skill authoring g8_tool_search(query="field") // custom fields / properties g8_tool_search(query="form") // forms / form responses g8_tool_search(query="snippet") // web snippet / tracking install g8_tool_search(query="playbook") // playbooks (multi-step guides)

> **Tip: Try this now**
> **Try this now.** Open `/studio/settings?tab=api`, create an API key for your dev environment. Copy the MCP config block, drop it in `~/Library/Application Support/Claude/claude_desktop_config.json`, restart Claude Desktop. Ask Claude "find me VPs of Sales at SaaS companies with 100+ employees" — it calls `g8_find_contacts` for you.

### 05. Audience sync, ad campaigns, and conversion attribution

*Push graph8 audiences to Meta / LinkedIn / Google / X as match-rate-optimized custom audiences. Track form-fill + meeting-booked conversion rates back to ad source.*

**Open it at**

- `app.graph8.com/ads` — ad campaign manager + Create Campaign wizard
- `/analytics/conversions` — Goal Completions + Form Performance
- `/analytics/acquisition` — Channel + Source/Medium breakdown
- `/analytics/attribution` — Sender performance (empty for graph8 org today)

The `/ads` wizard walks: *Platform → Audience → Creative → Budget → Review → Publish*. Audience step pulls saved lists from graph8 and pushes them as custom audiences. Creative step pulls ad images from the brand snapshot. Budget + Review + Publish hand off to the platform's ads API.

![Ads page with Create Campaign wizard showing your data for Meta, LinkedIn, Google, X](../../../../assets/roles/gtm-engineer/11-audience-sync.webp)

***Fig 5.1** — `/ads`. "Manage audience syncs and ad campaigns across Meta, LinkedIn, Google, and X."*

![Conversion analytics at /analytics/conversions showing Goal Completions and Form Performance with submission and conversion rates](../../../../assets/roles/gtm-engineer/12-attribution-config.webp)

***Fig 5.2** — `/analytics/conversions`. Goal Completions (Form Submission, Meeting Booked) + Form Performance with per-form submission + conversion rates.*

> **Tip: Try this now**
> **Try this now.** Open `/ads`, click *Create Campaign*, select Meta + a saved list + a creative. Push to draft. Now wire `/connections/destinations` → Meta CAPI Destination → enrich pageview events with email so the platform can attribute back. Watch conversions appear in `/analytics/conversions`.

## Discovered routes worth knowing

| What | Route |
| --- | --- |
| **Settings tree** — 14 sub-tabs (Company, Users, Teams, Roles, Domains, Mailboxes, Phone Numbers, SSO, API/MCP, Compliance, Scraping, Integrations, Billing, Revenue, Tasks, Docs, Enrichment) | `/studio/settings?tab=...` |
| Site crawl / scraping config | `/studio/settings?tab=scraping` |
| Domain purchase, mailbox purchase, phone numbers | `/studio/settings` sub-tabs |
| Live event stream (real-time debug) | `/connections/live-events` |
| Dynamic page personalization | `/connections/tailor` |
| Agents + Twins (Receptionist, SDR, CSM, AE roles) | `/agents` |
| graph8-admin dashboard (713 customer orgs, Services, LLM Charges, Custom JS) | `/admin` |
| Marketplace (SDR hiring) | `/marketplace` |
| 9-tab analytics | `/analytics/\{overview,acquisition,behavior,conversions,attribution,marketing-intelligence,realtime,live-visitors,performance-reports\}` |

## Heads-up — naming + missing routes

> **Caution:**
> **"Workflows" doesn't exist as a top-level route.** If you're looking for workflow/automation building, that surface is `/connections/functions` (JavaScript transforms) + `/connections/list` (event routing). graph8 does not have a no-code visual workflow builder today — it has code-based event transforms.
>
>  **"Custom fields" doesn't exist as a standalone route.** Field configuration lives inside each CRM integration's *Fields* tab (Fig 2.3). There's no `/fields` or `/properties` page. Per-record-type schema is managed by the CRM you're synced to.
>
>  **Playbooks, Skills, and Web-chat routes don't exist yet.** The MCP server instructions reference `g8_tool_search("playbook")` and `g8_tool_search("skill")` — those tools exist on the API surface but there's no UI route to manage them today.
>
>  **Attribution analytics is empty for graph8.com.** `/analytics/attribution` exists but shows "No sender data yet" because no `cb_outbound_sends` rows exist on graph8's own tenant. Use `/analytics/acquisition` + `/analytics/conversions` instead for channel-level attribution.
>
>  **Most settings are sub-tabs, not routes.** Don't try `/settings/tracking`, `/settings/fields`, `/settings/attribution`, `/developer` — they 404. Settings tree lives at `/studio/settings?tab=…`.

---

<small>Generated 2026-05-20 against `app.graph8.com` (org `your org`). Surface state verified live before publication</small>
