StartConceptsPlaybooksFeature docsAPI & MCPChangelog
← All feature docs
Feature docs · /settings/connect

Connect your tools

Link your CRM, inbox, and calendar in the product. We custody the token encrypted and read it on a schedule, and the work runs on our servers. There is nothing to install. Output is draft-first: nothing is sent without your approval.

Overview

Sales as Code runs the work for you on a schedule, on our servers. There is nothing to install: no desktop app, no plugin, no marketplace. You connect your tools once, we custody the token, and the scheduled runs read your book and draft the work. Connect is where you link those tools and watch each one turn healthy.

Power users who want to drive the account from their own scripts or an MCP client can still issue a key. That path moved to Settings, Advanced, see API Keys & MCP. It is optional and not the main flow.

What it shows

Where to find it

Settings, then Connections. One tab, one page. It used to be two, "Connections" and "Advanced", and they landed you in the same place by way of a redirect. Everything is on this page now: the managed connectors below, and the power-user path (an API key, MCP, a self-hosted n8n kernel) further down.

Connect your CRM, inbox, and calendar

The Connect page carries a managed connectors panel. Link Salesforce, HubSpot, Gmail, or Google Calendar directly in the browser. We custody your OAuth token, encrypted and isolated to your tenant, poll it on a schedule, and fill your accounts, opps, and contacts server-side. The panel shows each provider's connection state and last sync, and Sync now pulls your book on demand.

This is opt-in, per account, and reversible. You can revoke a connection at any time. A security-strict team can leave it off and drive the account through the advanced API path or its own n8n instead. The same panel appears in every persona console under Settings.

Connecting HubSpot with a private-app token

HubSpot is the one connector with no OAuth handshake, so instead of a Connect button it takes a private-app token. Click Add token on the HubSpot card, paste the token, and save. We encrypt it at rest and read it on the schedule exactly like an OAuth token, and Replace token swaps it later.

The token is checked with HubSpot before it is saved. A wrong token, or one whose private app is missing the CRM read scope, is refused on the spot with HubSpot's own explanation, so you find out now rather than days later when nothing has synced.

If HubSpot cannot be reached at that moment (an outage, a rate limit, a timeout), the token is saved anyway and the panel says the check did not complete. Their bad day should not stop you connecting, and the next scheduled poll records a real error on the card if the token does turn out to be wrong.

Where the output lands

Every run drafts first. Nothing goes out on your behalf. You choose where the drafts land:

Alerting and admin-gated connectors

Two more kinds of connector sit alongside your CRM and mailbox:

Enterprise Salesforce access (behind SSO / Okta)

Okta gates the human login to the Salesforce UI, not the API. There are four rungs, and writes stay propose-and-apply on every one, never a silent write-back:

Importing a CRM report export

If your org will not grant API access at all, you do not need it. Export what you need from the CRM as CSV and upload it from the No API access? Import a CRM report export card on the Connect page. Pick whether the file holds opportunities or accounts, choose the file, and import. The rows land in the same store the connectors fill, so every surface that reads your stored book works exactly as it would with a live connection.

This is data in only. Nothing here writes back to your CRM; a write back stays propose-and-apply on every path.

What the file needs

What you get back

The card reports how many rows were imported and how many were skipped. Those are different findings and it says which: a file where every row was skipped tells you the export is missing its id column, not that the import failed.

Importing is idempotent. Re-uploading the same export updates the same rows rather than creating duplicates, so a weekly report export is a reasonable habit.

What it feeds

An imported book drives the stored-data side of attribution, win/loss, data quality, the Revenue Cockpit prefill, renewals, and deal inspection. Each of those tells you what it could not compute and why, so a partial export gives you the numbers it can support and a plain reason for the rest rather than a blank page.

Role-specific connectors and honest fallbacks

Each role has its own must-have tools. Where a vendor is open, you self-connect; where it is gated or closed, the badge says so and names the fallback:

Guided setup, /onboarding

Prefer to be walked through it? Get started is the guided version of this page: the same checks (Licensed, Tools connected, First run), one step at a time, verified live against your account. It carries the Connect your tools panel, so you can link a CRM, inbox, or calendar during onboarding. It walks you through setting up your product's schedule and picking where drafts land. The moment your first run lands, the wizard closes the loop and points you at Activity. Both surfaces read the same activation state, so a step checked off here is checked off there.

How to use it

  1. Pick your role's product on the pricing page. Buying gtmcron a la carte adds Company OS Core automatically.
  2. Open Connect and link your CRM, inbox, and calendar in the managed-connectors panel. We custody each token encrypted and read it on a schedule.
  3. Set your product up: the guided wizard interviews you, builds your company context, and proposes the scheduled runs.
  4. Choose where drafts land: the in-app queue, your Google Drive, or your mailbox as a draft.
  5. As runs happen, run telemetry and brain state fill up. Watch Activity from your Home.

When the connector panel cannot load

A network failure or an expired session used to leave the managed-connector panel on "Loading connectors…" indefinitely. It now says what went wrong, offers a retry, and states plainly that a load failure is not the same as having no connections, so nothing about your connected tools has changed.

Turning managed connectors on or off tells you if the change did not save. The toggle springs back to where it was, which on its own would look like the click never registered.

Troubleshooting, the Diagnose panel

Both the wizard and Connect include a Diagnose panel that checks the common failure modes live against your account and tells you the exact fix:

The panel footer shows your last scheduled run from the audit log, product, status, and how long ago, so you can tell "never connected" from "was working until Tuesday".

Manage your plan and billing

Settings, Account has a "Your products" panel (the "on cron" products you own, linking to My products) and a "gtmcron plan" panel: the products you own with their source and expiry, an upgrade to All-Access, and a "Billing & invoices" button that opens the Stripe portal to view invoices, change payment, or cancel. All-Access unlocks every gtmcron product, including ones shipped later.

Team & seats

On a team plan, Team, Members lets the owner invite teammates up to the seat count. Each pending invite can be re-sent or shared as a direct copy-link if the email is missed, no need to contact support. Teammates accept with one click and their seat is covered by the team subscription.

Advanced: drive it yourself (API + MCP)

The default flow needs no key. If you want to run the account from your own scripts, a cron, or any MCP-compatible agent, issue a Bearer token under Settings, Advanced and point the client at the tenant-scoped MCP endpoint. Every skill verifies your licensed session first, then reads and writes the same store the product uses. Full detail: API Keys & MCP. This is a power-user option, not a requirement.

The work runs on our servers, so we process the data you connect. It is encrypted at rest, isolated to your tenant, never sold, and never used to train models, and you can revoke a connection at any time. Run telemetry is metadata; generated drafts hold content, and they stay in your account until you send them.

Related