salesascode
← All feature docs
Feature docs · /settings/connect

Connect your tools

Link your CRM, inbox, and calendar in Settings. 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.

The connection health table includes tools you have not connected, with Not configured and Setup needed beside them. Those rows do not imply a successful read or live verification. Open connection setup to configure a tool; listing it does not turn on access.

Start with a CRM or mailbox, or use your business brief while building your first customer list. Connected describes credential status. Drafting needs source context; sending needs a reviewed action with a permitted destination. Live verification is specific to the provider operation. Advanced API and MCP setup stays in an expandable section.

If a sync response is interrupted, the page reports that its result is unconfirmed. Review connection status before retrying Sync now. For account and opportunity updates, an event remains pending until its data reaches the records used by scheduled readers, so a failed reader update can be retried without creating another account. When an old record changes in your CRM, including after a reconnect, the update lands on the same account and keeps what the product added to it, such as its support signals and its link to the CRM record your plan created. A record that changes again while a sync is running is picked up on the next pass rather than skipped. When your CRM brings in a company your research already found, the two are linked by domain, and a person is linked by exact email. Both records stay, each pointing at the other, and scheduled per-account work treats the company as one account instead of researching it twice.

Start with the tools you use

Connected tools appear first. Expand Available tools when you want to add a provider. If nothing is connected, enable managed connectors in setup and connect a source. A connected badge shows account configuration; live verification requires a successful provider run and its receipt.

Page layout

Connections starts with a health table of saved connections, their read operations, latest read receipts and server-reported states. Beside the connection state, needs verification means nobody has yet recorded this provider's reads working against the live vendor, so check the first results before relying on them; live verified means that run is on record. Open Add or manage connections to use the existing setup controls. CRM coverage, import activity, CSV import and advanced setup remain below. The table scrolls on smaller screens.

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 starts with the CRM because it gives your first standup useful context, then shows other import and advanced paths only when you open them.

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

How to read a card

Under the badge and the last-sync line, a connected card lists what it reads (each kind of record, with the count landed and how long ago the newest one arrived), what it writes back and on whose say-so (every write waits for your approval, or "off" when no write path exists for that tool), and how often it polls, with the per-poll read limit. Underneath that is the account of the last read: how many rows came back, how long it took, and, on a degraded read, which record kind did not finish. The same facts, plus the vendor doc a connector was written against, are in integrationCapabilities() (src/lib/integrations/capabilities.ts), which this card and the docs page both read, so the two cannot disagree about what a connector does.

Every connection, and what it can do

The directory below is generated from the provider registry, the writeback adapters and the projectors, so a connection can only appear here by being registered, and a tier can only read what its own file declares. For each connection: what it reads, what it can write and the approval that covers a write, which outcomes reach your accounts, contacts or signals, how fresh it is, what access it needs, its read limits, and the date it was last run against a live vendor account. Where that date is missing, nobody has run it live from this codebase yet, whatever the tier says about the code.

67 registered connections, 0 run against a live vendor account so far. A tier is a claim about verification, not about code: preview means the adapter exists and has not been run live from this codebase; partner-gated means the vendor approves access before anything flows.

Show
  • Calendly

    preview

    calendar · your own token · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    Your own API token, pasted on the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Gong

    partner-gated

    calendar · sign-in · Polled every 60 minutes

    Reads
    calls
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    1 event type reach your accounts, contacts or signals.
    Access
    Gong admin enablement: Gong API access requires a Gong administrator to approve the integration and enable API access for the org. Ask your Gong admin to enable it, then connect.
    Limits
    Up to 20 pages or 1000 rows per object per poll; a capped read is marked on the card.
    Last live verification
    None recorded. Partner-gated: the vendor approves access first
  • Google Calendar

    available

    calendar · sign-in · Polled every 30 minutes

    Reads
    events
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    1 event type reach your accounts, contacts or signals.
    Access
    A sign-in to the vendor from the card.
    Limits
    Up to 20 pages or 1000 rows per object per poll; a capped read is marked on the card.
    Last live verification
    None recorded. Available
  • Google Meet

    preview

    calendar · sign-in · Polled every 60 minutes

    Reads
    transcripts
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    1 event type reach your accounts, contacts or signals.
    Access
    A sign-in to the vendor from the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Limits
    Up to 20 pages or 1000 rows per object per poll; a capped read is marked on the card.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Microsoft Calendar

    preview

    calendar · sign-in · Polled every 30 minutes

    Reads
    meetings
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    1 event type reach your accounts, contacts or signals.
    Access
    A sign-in to the vendor from the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Limits
    Up to 20 pages or 1000 rows per object per poll; a capped read is marked on the card.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Teams transcripts

    preview

    calendar · sign-in · Polled every 60 minutes

    Reads
    transcripts
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    1 event type reach your accounts, contacts or signals.
    Access
    A sign-in to the vendor from the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Limits
    Up to 20 pages or 1000 rows per object per poll; a capped read is marked on the card.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Zoom

    preview

    calendar · sign-in · Polled every 30 minutes

    Reads
    recordings, recording_trash
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    2 event types reach your accounts, contacts or signals.
    Access
    A sign-in to the vendor from the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Limits
    Up to 20 pages or 1000 rows per object per poll; a capped read is marked on the card.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Attio

    preview

    crm · your own token · Polled every 30 minutes

    Reads
    companies, people, deals, notes, tasks
    Writes
    note.create, note.delete, company.ensure, person.ensure, record.update, task.create, association.upsert, deal.update_stage. Every write waits for your approval.
    Outcomes it feeds
    5 event types reach your accounts, contacts or signals.
    Access
    Your own API token, pasted on the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Limits
    Up to 20 pages or 1000 rows per object per poll; a capped read is marked on the card.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Clari

    preview

    crm · sign-in · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    A sign-in to the vendor from the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Crossbeam

    preview

    crm · your own token · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    Your own API token, pasted on the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Hubspot

    available

    crm · webhook · Pushed by the vendor as events happen

    Reads
    Nothing is read from this connection.
    Writes
    contact.upsert, deal.update_stage, deal.update_field, note.create, note.delete, task.create, association.upsert, record.create. Every write waits for your approval.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    A webhook URL and secret minted on the card, pasted into the vendor.
    Last live verification
    None recorded. Available
  • Hubspot (API)

    preview

    crm · your own token · Polled every 60 minutes

    Reads
    companies, deals, contacts, tasks, notes, calls, meetings, archived_companies, archived_deals, archived_contacts
    Writes
    contact.upsert, deal.update_stage, deal.update_field, note.create, note.delete, task.create, association.upsert, record.create. Every write waits for your approval.
    Outcomes it feeds
    10 event types reach your accounts, contacts or signals.
    Access
    Your own API token, pasted on the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Limits
    Up to 20 pages or 1000 rows per object per poll; a capped read is marked on the card.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • LinkedIn Sales Navigator

    partner-gated

    crm · sign-in · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    LinkedIn SNAP: Sales Navigator requires LinkedIn Sales Navigator Application Platform (SNAP) approval. Apply through LinkedIn's partner program; once approved, set LINKEDIN_SNAP_SCOPES with the entitled scopes and reconnect.
    Last live verification
    None recorded. Partner-gated: the vendor approves access first
  • Pipedrive

    available

    crm · sign-in · Polled every 30 minutes

    Reads
    organizations, persons, deals, activities
    Writes
    deal.update_stage, activity.create, activity.delete, record.create, record.update, note.create, association.upsert. Every write waits for your approval.
    Outcomes it feeds
    4 event types reach your accounts, contacts or signals.
    Access
    A sign-in to the vendor from the card.
    Limits
    Up to 20 pages or 1000 rows per object per poll; a capped read is marked on the card.
    Last live verification
    None recorded. Available
  • Salesforce

    available

    crm · sign-in · Polled every 30 minutes

    Reads
    opportunities, accounts, contacts, tasks, events
    Writes
    opp.update_stage, opp.update_field, task.create, task.delete, record.create, note.create, association.upsert. Every write waits for your approval.
    Outcomes it feeds
    10 event types reach your accounts, contacts or signals.
    Access
    A sign-in to the vendor from the card.
    Limits
    Up to 20 pages or 1000 rows per object per poll; a capped read is marked on the card.
    Last live verification
    None recorded. Available
  • Salesforce Outbound Messaging

    available

    crm · webhook · Pushed by the vendor as events happen

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    A webhook URL and secret minted on the card, pasted into the vendor.
    Last live verification
    None recorded. Available
  • Nooks

    partner-gated

    dialer · sign-in · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    Nooks Developer Program: Nooks does not publish its developer portal, credentials and API access are issued through their developer success team. Contact Nooks to request integration access, then drop the client id/secret into the deployment env. Until then, Connect is disabled.
    Last live verification
    None recorded. Partner-gated: the vendor approves access first
  • Gmail

    available

    email · sign-in · Polled every 15 minutes

    Reads
    threads
    Writes
    gmail.draft_insert, gmail.draft_delete. Every write waits for your approval.
    Outcomes it feeds
    No event from this connection is read by a role yet. 1 more are stored and not yet read.
    Access
    A sign-in to the vendor from the card.
    Limits
    Up to 20 pages or 1000 rows per object per poll; a capped read is marked on the card.
    Last live verification
    None recorded. Available
  • Instantly

    preview

    email · your own token · Polled every 60 minutes

    Reads
    replies, enrollments
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    2 event types reach your accounts, contacts or signals. 1 more are stored and not yet read.
    Access
    Your own API token, pasted on the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Limits
    Up to 20 pages or 1000 rows per object per poll; a capped read is marked on the card.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Outlook

    preview

    email · sign-in · Polled every 15 minutes

    Reads
    inbox, sent mail
    Writes
    outlook.draft_insert. Every write waits for your approval.
    Outcomes it feeds
    No event from this connection is read by a role yet. 1 more are stored and not yet read.
    Access
    A sign-in to the vendor from the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Limits
    Up to 20 pages or 1000 rows per object per poll; a capped read is marked on the card.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Any tool (webhook)

    preview

    other · webhook · Pushed by the vendor as events happen

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    A webhook URL and secret minted on the card, pasted into the vendor. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Apollo

    preview

    other · your own token · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    Your own API token, pasted on the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Bluesky

    preview

    other · your own token · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    Your own API token, pasted on the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Clay

    available

    other · webhook · Pushed by the vendor as events happen

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    A webhook URL and secret minted on the card, pasted into the vendor.
    Last live verification
    None recorded. Available
  • Cognism

    preview

    other · your own token · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    Your own API token, pasted on the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Consensus

    preview

    other · your own token · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    Your own API token, pasted on the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Customer.io

    preview

    other · your own token · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    Your own API token, pasted on the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Dev.to

    preview

    other · your own token · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    Your own API token, pasted on the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Fathom

    preview

    other · your own token · Polled every 60 minutes

    Reads
    meetings
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    1 event type reach your accounts, contacts or signals.
    Access
    Your own API token, pasted on the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Limits
    Up to 20 pages or 1000 rows per object per poll; a capped read is marked on the card.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Gainsight

    partner-gated

    other · your own token · Polled every 60 minutes

    Reads
    CTAs, deleted CTAs
    Writes
    success.timeline_create. Every write waits for your approval.
    Outcomes it feeds
    2 event types reach your accounts, contacts or signals.
    Access
    Gainsight admin enablement: Gainsight API access is provisioned by a Gainsight administrator, who issues an API key and enables external access. Ask your Gainsight admin to enable it, then connect.
    Limits
    Up to 20 pages or 1000 rows per object per poll; a capped read is marked on the card.
    Last live verification
    None recorded. Partner-gated: the vendor approves access first
  • Google BigQuery

    preview

    other · sign-in · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    A sign-in to the vendor from the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Google Drive

    available

    other · sign-in · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    drive.file_create. Every write waits for your approval.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    A sign-in to the vendor from the card.
    Last live verification
    None recorded. Available
  • Google Search Console

    preview

    other · sign-in · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    A sign-in to the vendor from the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Greenhouse

    preview

    other · sign-in · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    A sign-in to the vendor from the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Hashnode

    preview

    other · your own token · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    Your own API token, pasted on the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • HeyReach

    partner-gated

    other · sign-in · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    HeyReach API Program: HeyReach issues API keys to accounts on eligible plans. Request API access from HeyReach, then set the key in the deployment env. LinkedIn automation also carries platform-compliance risk the operator owns. Until access is granted, Connect is disabled.
    Last live verification
    None recorded. Partner-gated: the vendor approves access first
  • HubSpot Marketing

    preview

    other · your own token · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    Your own API token, pasted on the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Hunter

    preview

    other · your own token · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    Your own API token, pasted on the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Intercom

    preview

    other · your own token · Polled every 1440 minutes

    Reads
    conversations
    Writes
    ticket.private_note, ticket.public_reply, ticket.resolve. Every write waits for your approval.
    Outcomes it feeds
    2 event types reach your accounts, contacts or signals.
    Access
    Your own API token, pasted on the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Limits
    Up to 20 pages or 1000 rows per object per poll; a capped read is marked on the card.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Ironclad

    preview

    other · sign-in · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    A sign-in to the vendor from the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Jira

    preview

    other · sign-in · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    A sign-in to the vendor from the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • LeanData

    preview

    other · sign-in · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    A sign-in to the vendor from the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • LinkedIn

    available

    other · sign-in · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    A sign-in to the vendor from the card.
    Last live verification
    None recorded. Available
  • LinkedIn (company page)

    partner-gated

    other · sign-in · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    LinkedIn Community Mgmt API: Company-page posting requires LinkedIn Community Management API approval (a registered company entity + use-case review). Once approved, set LINKEDIN_CM_CLIENT_ID/SECRET and reconnect, selecting the organization to post as.
    Last live verification
    None recorded. Partner-gated: the vendor approves access first
  • Mailchimp

    preview

    other · your own token · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    Your own API token, pasted on the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Microsoft Teams

    preview

    other · your own token · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    message.send, decision.request. Every write waits for your approval.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    Your own API token, pasted on the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Notion

    preview

    other · your own token · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    Your own API token, pasted on the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Planhat

    preview

    other · your own token · Polled every 720 minutes

    Reads
    companies, tasks, conversations, deals, lineitems
    Writes
    success.task_create, success.note_create, success.company_update, success.deal_update, success.renewal_update. Every write waits for your approval.
    Outcomes it feeds
    10 event types reach your accounts, contacts or signals.
    Access
    Your own API token, pasted on the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Limits
    Up to 20 pages or 1000 rows per object per poll; a capped read is marked on the card.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • PostHog

    preview

    other · your own token · Polled every 60 minutes

    Reads
    events
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    1 event type reach your accounts, contacts or signals.
    Access
    Your own API token, pasted on the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Limits
    Up to 20 pages or 1000 rows per object per poll; a capped read is marked on the card.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • RB2B

    partner-gated

    other · webhook · Pushed by the vendor as events happen

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    RB2B: RB2B resolves person-level website visitors on eligible plans and delivers them to a webhook you configure in the RB2B dashboard. Add the RB2B pixel to your site, point its webhook at this connection URL, then identifications flow in. Until an account is connected, no visitor events arrive.
    Last live verification
    None recorded. Partner-gated: the vendor approves access first
  • Reddit

    preview

    other · sign-in · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    A sign-in to the vendor from the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Responsive (RFP)

    partner-gated

    other · sign-in · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    Responsive API program: Responsive issues API access through its vendor program, and most teams work in RFP tools by import and export rather than live sync. Request API access from Responsive, or export a project and upload it. Until API access is granted, Connect is disabled and the import path is the fallback.
    Last live verification
    None recorded. Partner-gated: the vendor approves access first
  • Slack

    preview

    other · your own token · Polled every 60 minutes

    Reads
    configured channel messages
    Writes
    message.send, message.delete. Alerting only, posts into your own workspace.
    Outcomes it feeds
    1 event type reach your accounts, contacts or signals.
    Access
    Your own API token, pasted on the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Snowflake

    preview

    other · sign-in · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    A sign-in to the vendor from the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Stripe

    preview

    other · your own token · Polled every 60 minutes

    Reads
    subscriptions, invoices, customers, refunds, changes (Events API)
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    5 event types reach your accounts, contacts or signals.
    Access
    Your own API token, pasted on the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Limits
    Up to 20 pages or 1000 rows per object per poll; a capped read is marked on the card.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Sumble

    preview

    other · your own token · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    Your own API token, pasted on the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Threads

    partner-gated

    other · sign-in · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    A vendor approval step before anything flows.
    Last live verification
    None recorded. Partner-gated: the vendor approves access first
  • Trigify

    preview

    other · your own token · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    Your own API token, pasted on the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Webflow

    preview

    other · your own token · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    Your own API token, pasted on the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • WordPress

    preview

    other · your own token · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    Your own API token, pasted on the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • X (Twitter)

    preview

    other · sign-in · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    A sign-in to the vendor from the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • YouTube

    preview

    other · sign-in · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    A sign-in to the vendor from the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • Zendesk

    preview

    other · your own token · Polled every 30 minutes

    Reads
    tickets
    Writes
    ticket.private_note, ticket.public_reply, ticket.resolve. Every write waits for your approval.
    Outcomes it feeds
    2 event types reach your accounts, contacts or signals.
    Access
    Your own API token, pasted on the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Limits
    Up to 20 pages or 1000 rows per object per poll; a capped read is marked on the card.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live
  • ZoomInfo

    partner-gated

    other · your own token · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    A vendor approval step before anything flows.
    Last live verification
    None recorded. Partner-gated: the vendor approves access first
  • Outreach

    available

    sequences · sign-in · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    prospect.add_to_cadence, task.create. Every write waits for your approval.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    A sign-in to the vendor from the card.
    Last live verification
    None recorded. Available
  • Outreach (webhook)

    available

    sequences · webhook · Pushed by the vendor as events happen

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    A webhook URL and secret minted on the card, pasted into the vendor.
    Last live verification
    None recorded. Available
  • Salesloft

    preview

    sequences · sign-in · Not polled; used on demand or as a destination

    Reads
    Nothing is read from this connection.
    Writes
    Nothing is written; read-only.
    Outcomes it feeds
    No event from this connection is read by a role yet.
    Access
    A sign-in to the vendor from the card. Written from the vendor's published API and not yet run against a live account from this codebase.
    Last live verification
    None recorded. Preview: written from the vendor API, not yet run live

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. We custody your 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.

Open See CRM read and write coverage below the connector panel to check the exact scope for HubSpot, Attio, Pipedrive and Salesforce. Each card counts the record families and approved actions with a code path, then names what remains open. This coverage is separate from connection state and live vendor verification.

When someone edits the same field in the CRM first. A change we propose to a HubSpot, Salesforce, Attio or Pipedrive record remembers the value it was proposed against. Before writing, we read the record again. If that field has changed since, we do not overwrite it: the write is held for review with the old value, the value in the CRM now, and ours, and it is not retried on its own. Salesforce also sends the update on the condition that the record has not changed since that read, and a vendor that answers "conflict" (409 or 412) is held the same way. Fields Salesforce derives from the stage, such as probability, are written through. The receipt for a held write says held for review. Every change we make to a field on an existing CRM record now carries that value: a next step an agent proposes, a hygiene fix, a MEDDPICC push and the closed-won handoff. When the field was empty, the change says so, so a value someone typed in since is held too. A hygiene fix to a close plan or a competition note writes into the opportunity's Description, which we do not keep a copy of, so we read Description from Salesforce or HubSpot just before the write and hold the write if it changes in between. If that read fails, nothing is written and the result says so.

Deciding a held change. Held changes wait in the Resolve field ownership panel, which appears under Connection health only when a change is held, when the list could not be read, or when a receipt linked you here. With nothing held, Review CRM conflict is greyed out and says so. Each one shows the record, the field, the value it was proposed against, the value in the CRM now and ours. Choose Keep the CRM value (nothing is written), Apply my value, or Enter a value, then Save decision. The result says what happened and whether anything reached the CRM. A value you apply is checked against the value the CRM holds now, so a further edit in the CRM holds it again rather than being overwritten. Keeping the CRM value needs only a sign-in; writing a value needs an active product. The receipt for a held write links straight to its decision, and once the page has loaded the cursor waits on that decision's resolution menu.

What a CRM write records. Every HubSpot, Attio, Pipedrive and Salesforce write keeps the record id the CRM answered with, the status it sent and, where the CRM sends one, the revision or modified time, and Receipts shows them. Every call a sync, a CRM write, a publish or a send makes is also counted for your workspace, by tool, on the Tool usage card under Settings, API & AI. A write whose answer was lost is never sent again. An hourly check reads the record back and marks the write applied when the record holds every value it intended; otherwise it stays unknown for you to check. These read paths have not yet been run against live accounts.

Our own writes do not come back as news. When the next sync reads back a stage we just wrote, it is not recorded as a stage change made in the CRM. A change someone makes after ours is recorded as usual. These checks are built and tested against each vendor's documented API; none has yet been run against a live account.

What you can link in the browser:

Trigify (a Data card) reads who reacted to or commented on LinkedIn posts about your topic and by the competitor pages you watch, on your own Trigify API key from Settings, API Keys in Trigify. No key, no read, and nothing is read on a deployment key. Reads happen only when you press Read now in Content Studio, one at a time and at most four times a day, and each post or engager read counts one credit against your Enrichment Budget as well as spending a credit on Trigify. Topics and post data need Trigify's Enterprise plan. Without Trigify, import a CSV of engagers in Studio instead.

Zoom, Google Meet, Teams transcripts, Sumble and Trigify are marked preview: written against the vendor's published API and not yet run against a live account from this codebase. The badge comes off when they have been. Teams transcripts also need a Microsoft 365 administrator to consent to transcript reading once for the organisation; until then the card shows the permission error Microsoft returns.

X for market reads is also marked preview, and it is a second, separate credential from the X connection that publishes posts. Publishing uses the sign-in on this page. Reading what your market says on X uses a bearer token from your own app in the X developer portal, which you paste under X reads on your own key in Studio, so X bills those reads to you and never to us. Nothing is read from X without that token, each request counts one credit against your credit budget, and removing the token stops the reads. Company news in the same list comes from the free GDELT Project and needs no connection.

A transcript is stored as speaker turns, not one block of text, up to two hundred thousand characters of speech per call, cut at a turn boundary rather than mid-sentence if a call runs longer than that. The post-call follow-up reads its own four-thousand-character summary of the call, cut separately, so a long call still gets a short brief.

Contribute company facts to the shared pool. A switch under the panel, off by default. When it is on, what your enrichment runs and research find about a company (industry, size, location, stack, a dated change with its public source) joins a pool keyed on the company's domain that every tenant's cascade reads before it spends a credit. Nothing about a person enters it: no name, no email, no phone, no title, and no tenant id. You read the pool whether or not you contribute. The rule and the test that pins it are in Contact Enrichment.

Until September 2026 this panel offered four of those, while the mappers behind Attio, Pipedrive, Stripe, Calendly, Zendesk and Fathom already worked. The data had somewhere to land and no way in. The list is now held to the mappers by a test, so a connector that learns to fill your book cannot again be one you have no way to link.

Pipedrive reads from your company's own API address, the one Pipedrive names when you connect, rather than the shared one. Connections made before September 2026 keep the shared address until you reconnect. Pipedrive imports organizations and people before deals, so a deal's account reference and a person's organization reference point to records in the same book. Deletion markers remain visible instead of silently removing history. Deals are read from Pipedrive's recent changes, and a sync that stops part way carries on from the page it reached, so older deals are not skipped. That read includes deleted deals, and a deal deleted in Pipedrive leaves your book on the next sync. Each deal carries its stage name from your pipeline's stage list, so a stage we set is not recorded as a change someone made in Pipedrive. Live Pipedrive verification remains open until an authorized workspace is available.

A Salesforce task or event deleted in Salesforce is removed from the account it was shown on at the next sync.

Instantly setup records one campaign and one sending account. An approval covers one recipient and one saved revision. The product does not treat Instantly as a raw email sender, because the vendor runs content already saved in its campaign. Pause and resume act on the exact campaign. Stopping one recipient requires the Instantly lead reference and removes that lead from the campaign. These controls remain unavailable until the live adapter is verified with an authorized Instantly account.

An Instantly action that got no clear answer, such as a rate limit or a timeout, is held as unknown and never repeated. An hourly check asks Instantly: an enrolled lead in the campaign, a campaign in the approved state, or a removed lead that is gone settles the action. Anything else leaves it held for you to check in Instantly. An accepted enrolment is logged to your connected CRM as an enrolment, once per Instantly lead, the same way a sent email is.

Connecting Instantly also subscribes two webhooks on your workspace, one for replies and one for bounces, each carrying a secret only your connection knows. A reply or a bounce Instantly reports stops further sends to that address from here: approvals, Instantly enrolment and the daily-prospecting follow-ups. If the bounce webhook cannot be created, the connection says so and replies still stop sends; connect again to retry it. Every hour the connection also reads Instantly directly: replies in the unibox since the last one it read, and the state of every person you enrolled through an approval. A reply sent before the webhook existed, or while it was down, still stops the next send, and a person Instantly marks as bounced is held the same way a bounce webhook would hold them. A reply seen both ways is recorded once. Replies also appear as reply signals on the person's account.

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.

Gmail and Google Calendar

The first Gmail sync reads the last seven days of threads. After that, each sync asks Gmail what changed since the last one, so a reply on a thread from last year is read the same day, not only mail inside a recent window. If a first sync has more mail than one sync reads, the next sync carries on from where it stopped rather than skipping the oldest part. Gmail forgets its change log after about a week; a mailbox that has not synced for that long reads again from the last mail it saw, at most 30 days back.

A thread you delete or move to the trash in Gmail is marked deleted here. It stops counting as a reply, and the reply check stops reading it.

Google Calendar keeps its place by when a meeting last changed, not when it starts, so booking a meeting for next month no longer hides the changes made before it. A sync that stops part way keeps what it read and picks up after it.

A Gmail draft that fails with a server error on Google's side is not sent again automatically, because Google may have saved it before the error. It is recorded as unknown, and the receipt asks you to check Gmail before retrying, so you do not get two copies of one draft.

An approved Campaigns answer to someone who replied to one of your Gmail sends goes into the same conversation: it is sent with the original's thread and names the original message, so their mail client shows it as a reply. Like every Gmail send, it is posted once; a server error is not retried automatically, because Gmail may have sent it before the error. The in-thread send is written against Google's published API and has not yet been run against a live mailbox from this codebase.

These reads use the Gmail read permission you already granted. They are written against Google's published API and have not yet been run against a live mailbox from this codebase.

Outlook and Microsoft Calendar

Until September 2026 there was no Microsoft connector of any kind, which took out three things at once for anyone not on Google: approved drafts had no mailbox to send from, replies could not be detected, and the meeting surfaces were empty. Both now connect the same way Google does.

Connecting Outlook does two jobs. It reads your threads as account activity, and it becomes the mailbox your approved drafts send from, using your address, your domain and your thread, so the reply lands where we can find it. If you connect both Google and Microsoft, Google sends: it is the older path and the verified one.

Both Microsoft connectors are marked preview, which on this site means written against Microsoft's published API and not yet run against a live Microsoft 365 account. The badge comes off when it has been.

Each sync checks the connection holds the mail or calendar permissions it reads with, and says reconnect when one is missing. Microsoft lists only those permissions in what it grants, not the sign-in ones such as staying signed in, and may write them in lower case, so neither reads as a missing permission.

We read message and meeting headers only. The body of an email is never fetched, on the poll or on the reply check. Microsoft's calendar change feed returns an invite's body along with the rest of the meeting; we drop it on arrival and never store it.

Each sync asks Microsoft what changed in your inbox, your sent mail and your calendar since the last one, so an edit to an older message or meeting is read too, not only new mail in a recent window. If a sync stops part way, what it read is kept and the next sync carries on from the last complete point rather than starting again. If Microsoft resets the change feed, the next sync reads again, at most 30 days back. The calendar reads 60 days ahead and starts a fresh read whenever fewer than 30 of those days are left.

A meeting deleted in Outlook is marked cancelled here, keeping its time and attendees. A message deleted outright, or a conversation whose every message is in Deleted Items, is marked deleted: it stops counting as a reply, and the reply check stops reading it. A message moved to another folder is not a deletion. A new message in that conversation brings it back.

When an approved email answers a message in your Outlook inbox, it is sent as a reply inside that conversation rather than as a new thread. Every Outlook send also carries a reference of its own, recorded before the send, so a send whose answer was lost can be found in your mailbox afterwards (see Receipts).

Keeping your mailbox healthy

Your outreach goes out from your own Gmail or Outlook, so its reputation is yours. When you connect either one, we read the address the mailbox sends as and look up three public DNS records for its domain. The result shows under the Gmail or Outlook card, and it is read again once a day.

Each missing record links to your provider's own setup page. When DNS does not answer, the card says it could not check, never that a record is missing. A personal gmail.com or outlook.com address has its records kept by Google or Microsoft, so the card says there is nothing to set. Check records again repeats the lookup now.

We also count bounces: mail sent from this mailbox that came back from mailer-daemon or postmaster as undeliverable. When at least 5% of the mail sent in the last seven days bounced, and at least three messages did, the mailbox is paused: no new drafts are written for it, and nothing sends or lands in its Drafts folder from here. Mail providers start sending a mailbox's mail to spam when bounces pass a few percent, so the pause comes early. The three-message floor keeps one mistyped address in a quiet week from pausing you. The card and Home both say how many bounced and why it matters.

While a mailbox is paused, every send control for one of its drafts (the queue's Send, Campaigns and console approvals, Approve and place in Outlook, and the Gmail draft button) is disabled, and hovering it gives the reason. Beside it is I checked this address. Check the recipient, choose it, and that one draft can send to that one address; every other draft from the mailbox stays held. Where the page does not already know the recipient, it asks which address you checked. We record who cleared which draft, for which address and when, and the clearance counts only for that draft, that address and the current pause. Drafts placed in the mailbox by anything else (write proposals, policy runs, launch drafts, Teams approvals) are refused outright while paused. Buyer portal update emails still reach your buyers, sent through our mail service with you as the reply-to address instead of through the paused mailbox. To lift the pause for everything, remove or correct the bounced addresses, then choose Resume sending. Bounces from before the resume stop counting.

Tokens, and what each card asks for

Some connectors use an OAuth handshake and open a sign-in window. The rest take a token you paste, and each card names the one it wants rather than saying "token" and leaving you to guess. Zendesk is the one that asks for three things in a single field, in the form subdomain|email|token.

If a sign-in connector has not been set up on the deployment you are using, its Connect button is disabled and the card says so. Pressing it used to open a window that failed with a server error, which told you nothing you could act on.

HubSpot has 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.

Check access before you save. Every card that takes a token has a Check access button beside Save. It sends the token and the destination fields to the same check Save runs, stores nothing, and shows an access preview: whether the provider accepted the token, and which operations the saved connection allows (read, drafts, publish, write), each marked allowed or not part of this connection. The list comes from what the connection's code can do; the check confirms the token, not each operation. A provider with no check we can run before storing the token says Access cannot be checked before saving rather than passing. Customer.io is checked in the region you chose, so a key from the other region is named as a wrong Region instead of being saved.

The token is checked with HubSpot before it is saved, and so is every replacement. We read one record each of companies, contacts, deals, tasks, notes, calls and meetings, which is everything the sync reads. A wrong token is refused. A token missing any of those is refused with each missing one named, all at once, rather than one per attempt. When HubSpot lists the token's scopes, the two the writes need, crm.objects.contacts.write and crm.objects.deals.write, are checked as well; when it does not, a missing write scope shows up on the first write instead.

Other tokens are checked the same way before they are saved, on first connect and on every reconnect. The site address, collection, database, segment or project you entered on the card goes into the check, so a token that works but cannot see the one you chose is refused then rather than on the first sync:

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:

A proposed action approved in Slack uses the connection for the reviewed action itself. A Salesforce action uses Salesforce, for example. The approval and provider result are recorded separately. A rejected attempt can be tried again only when the provider confirms that nothing was applied. An uncertain result stays held for review. If Slack cannot update the original card, the decision and its application receipt still remain recorded.

A message in a Slack channel set up for desk triage files one ticket for each person listening on that channel. Slack sends a message again when it does not get an answer within three seconds, and triage often takes longer. The repeat is recognised and skipped, so it does not file a second ticket, run triage twice or post a second reply. A new message in the same thread is still filed.

An edit or a deletion in that channel reaches the copy we hold. An edited message is replaced with its new text, unless a newer change is already stored, so an edit delivered late never overwrites a later one. A deleted message is marked deleted and its text is no longer kept, in the stored message or in the desk ticket it filed: the ticket stays in the queue, closed and marked deleted in Slack, with its text and triage answer cleared. A precedent someone saved from that ticket is kept, since saving it was a choice to reuse the answer. Neither an edit nor a deletion files a new ticket or runs triage again.

A desk channel belongs to the Slack workspace you connected. Adding a channel asks Slack, with your own connection, whether the channel is in that workspace, and a channel from another workspace is refused. Messages, edits and deletions reach only people whose Slack connection is in the workspace the message came from.

When you install Slack, the permissions Slack granted are saved with the connection. If the install left one out (the app asks for chat:write, channels:history, app_mentions:read and commands), the card reads reconnect needed and names the missing ones. Reinstalling with all of them clears it. A Slack token that Slack reports as revoked or invalid is treated the same way.

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:

Imports write rows individually. If an import stops, its receipt reports the rows confirmed saved and whether the interruption happened while saving rows or updating workspace readers. A lost response leaves the result uncertain. Review your records before retrying the same file; matching record IDs update in place. The file stays selected for retry. Rows above the 5,000-row import limit are reported separately and need another import.

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, accounts or contacts, choose the file, and import. The columns each kind reads are listed under the control. 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

To update records already read from a connector, add a CRM Provider column with salesforce, hubspot, attio or pipedrive. Use the provider record ID in Account ID or Opportunity ID. The import uses the connector identity and qualifies opportunity account links the same way. Existing connector fields not supplied by the file remain intact, and discovery research stays in its own record. Names and domains never trigger a merge. Files without CRM Provider keep their existing bare-ID behavior; older bare-ID duplicates are not automatically combined.

Importing contacts

Choose Contacts (people) for a list of people. Each row needs an Email; a row without a valid address is skipped and counted. Name, Title, Company and Domain are optional. The email is the identity, so importing the same list again updates the same people rather than adding them twice, and a retry after an interrupted import writes the same records.

An imported person whose email matches someone research already found is linked to that person by exact email. Nobody is merged.

Add a Do Not Contact or Opt Out column to carry opt-outs across. A cell reading yes, true, y, 1 or x marks that person, and the exclusion policy then holds that exact address from research, contact selection and every send. Other people at the same company are not held. A later file that leaves the column blank does not lift the opt-out.

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.

An import that stops part way shows an Import receipt under the card: the last durable checkpoint (the record position and the ID of the last confirmed record), the first failed record with its ID and the reason, and the rows confirmed. The file stays selected. Retry from checkpoint sends the same file with that checkpoint, and the import writes from the failed record onward; the confirmed rows before it are not written again. The failed record is written again under the same record ID, so if its first write did land, the retry updates it rather than adding a second row. A different file, or one whose record at the checkpoint has another ID, is refused with nothing written; import the whole file again instead, which is always safe.

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: three steps, one at a time. Add your AI provider key, connect your data (the same Connect your tools panel that is on this page), and choose where output goes. Then it hands you your console. Your progress through signup, the business record and the first connection is tracked on Home, not here.

How to use it

  1. Hold a seat, from the pricing page. One seat licenses every role, and it is the whole price list.
  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 roles up: Get started takes your AI provider key 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 a connection

Each connector card on Connect carries its own state, and the states are the ones you can act on:

This page used to carry a Diagnose panel that read the MCP audit log. Every fix it offered told you to set SALES_AS_CODE_API_KEY in an MCP client, which is not how anyone connects any more, so it was removed along with the four-step meter above it.

Manage your plan and billing

Settings opens on two panels. Your roles lists the roles this account holds, linking to Your roles for renewals, setup links and per-role rollups. What you own is the fuller ledger: each thing with its source and expiry, plus Subscription and the Stripe portal for invoices, payment method and cancellation. An account holding nothing yet is told what the seat costs rather than shown an empty list.

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 Connection details card on Connect holds the two things that path needs: the MCP endpoint to point at, and how to authenticate. Both are the same whichever roles you hold, so there is one of each rather than one per role.

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.

What has been verified against a live account

Connected means a token is saved. It does not mean every operation on that provider has been watched working against the vendor. Each integration below lists its operations and the evidence on record for each one. None recorded means nobody has yet run that operation against a live account, so check its first results before relying on it.

0 of 299 applicable operations verified against a live vendor. 75 built and not yet verified. 224 open. 25 not applicable. A row changes only when a person watches the operation work against the live vendor and records the date.

HubSpot: 0 of 12 operations verified
OperationEvidence
Connection and operation permissionsNone recorded
History beyond one pageNone recorded
Incremental old and recent changesNone recorded
Deletion and identity projectionNone recorded
Duplicates and out-of-order deliveryNone recorded
Rate limits and resumable retryNone recorded
Expired access and reconnectNone recorded
Tenant isolationBuilt and tested. Not yet run against a live account.
Approved write and conflict handlingNone recorded
Crash after provider acceptanceNone recorded
Receipt and usage settlementBuilt and tested. Not yet run against a live account.
Consuming-role outcomeNone recorded
Attio: 0 of 12 operations verified
OperationEvidence
Connection and operation permissionsNone recorded
History beyond one pageBuilt and tested. Not yet run against a live account.
Incremental old and recent changesBuilt and tested. Not yet run against a live account.
Deletion and identity projectionNone recorded
Duplicates and out-of-order deliveryNone recorded
Rate limits and resumable retryNone recorded
Expired access and reconnectNone recorded
Tenant isolationBuilt and tested. Not yet run against a live account.
Approved write and conflict handlingNone recorded
Crash after provider acceptanceNone recorded
Receipt and usage settlementBuilt and tested. Not yet run against a live account.
Consuming-role outcomeNone recorded
Pipedrive: 0 of 12 operations verified
OperationEvidence
Connection and operation permissionsNone recorded
History beyond one pageNone recorded
Incremental old and recent changesNone recorded
Deletion and identity projectionNone recorded
Duplicates and out-of-order deliveryNone recorded
Rate limits and resumable retryNone recorded
Expired access and reconnectNone recorded
Tenant isolationBuilt and tested. Not yet run against a live account.
Approved write and conflict handlingNone recorded
Crash after provider acceptanceNone recorded
Receipt and usage settlementBuilt and tested. Not yet run against a live account.
Consuming-role outcomeNone recorded
Salesforce: 0 of 12 operations verified
OperationEvidence
Connection and operation permissionsNone recorded
History beyond one pageNone recorded
Incremental old and recent changesNone recorded
Deletion and identity projectionNone recorded
Duplicates and out-of-order deliveryNone recorded
Rate limits and resumable retryNone recorded
Expired access and reconnectNone recorded
Tenant isolationBuilt and tested. Not yet run against a live account.
Approved write and conflict handlingNone recorded
Crash after provider acceptanceNone recorded
Receipt and usage settlementBuilt and tested. Not yet run against a live account.
Consuming-role outcomeNone recorded
Apollo: 0 of 8 operations verified
OperationEvidence
Connection and operation permissionsNone recorded
History beyond one pageNot part of this integration. The selected Apollo contract performs bounded on-demand people search and enrichment. It does not import a historical workspace feed.
Incremental old and recent changesNot part of this integration. The selected Apollo contract is request and response research, not a background change stream with incremental watermarks.
Deletion and identity projectionNot part of this integration. The selected Apollo research contract does not mirror provider-owned records, so it has no source deletion or tombstone event.
Duplicates and out-of-order deliveryBuilt and tested. Not yet run against a live account.
Rate limits and resumable retryNone recorded
Expired access and reconnectNone recorded
Tenant isolationBuilt and tested. Not yet run against a live account.
Approved write and conflict handlingNot part of this integration. The selected Apollo contract searches and enriches external data. It does not create or mutate records in the tenant Apollo workspace.
Crash after provider acceptanceBuilt and tested. Not yet run against a live account.
Receipt and usage settlementBuilt and tested. Not yet run against a live account.
Consuming-role outcomeNone recorded
Clay: 0 of 10 operations verified
OperationEvidence
Connection and operation permissionsNone recorded
History beyond one pageNot part of this integration. The Clay product contract is an asynchronous table workflow. It sends new rows to signed webhooks and exposes no historical import in this integration.
Incremental old and recent changesNone recorded
Deletion and identity projectionNot part of this integration. Returned Clay enrichment rows are append or refresh results. The product contract has no source deletion or tombstone event.
Duplicates and out-of-order deliveryNone recorded
Rate limits and resumable retryNone recorded
Expired access and reconnectNone recorded
Tenant isolationBuilt and tested. Not yet run against a live account.
Approved write and conflict handlingNone recorded
Crash after provider acceptanceNone recorded
Receipt and usage settlementNone recorded
Consuming-role outcomeNone recorded
Google Workspace: 0 of 12 operations verified
OperationEvidence
Connection and operation permissionsNone recorded
History beyond one pageNone recorded
Incremental old and recent changesNone recorded
Deletion and identity projectionNone recorded
Duplicates and out-of-order deliveryNone recorded
Rate limits and resumable retryNone recorded
Expired access and reconnectNone recorded
Tenant isolationBuilt and tested. Not yet run against a live account.
Approved write and conflict handlingBuilt and tested. Not yet run against a live account.
Crash after provider acceptanceBuilt and tested. Not yet run against a live account.
Receipt and usage settlementBuilt and tested. Not yet run against a live account.
Consuming-role outcomeNone recorded
Microsoft 365: 0 of 12 operations verified
OperationEvidence
Connection and operation permissionsNone recorded
History beyond one pageNone recorded
Incremental old and recent changesNone recorded
Deletion and identity projectionNone recorded
Duplicates and out-of-order deliveryNone recorded
Rate limits and resumable retryNone recorded
Expired access and reconnectNone recorded
Tenant isolationBuilt and tested. Not yet run against a live account.
Approved write and conflict handlingNone recorded
Crash after provider acceptanceBuilt and tested. Not yet run against a live account.
Receipt and usage settlementBuilt and tested. Not yet run against a live account.
Consuming-role outcomeNone recorded
Instantly: 0 of 11 operations verified
OperationEvidence
Connection and operation permissionsNone recorded
History beyond one pageNone recorded
Incremental old and recent changesNone recorded
Deletion and identity projectionNot part of this integration. The selected Instantly contract reads inventory for action preflight and consumes reply events; it does not mirror provider-owned records, so source deletion has no local identity projection to retract.
Duplicates and out-of-order deliveryNone recorded
Rate limits and resumable retryNone recorded
Expired access and reconnectNone recorded
Tenant isolationNone recorded
Approved write and conflict handlingNone recorded
Crash after provider acceptanceNone recorded
Receipt and usage settlementNone recorded
Consuming-role outcomeNone recorded
Fathom: 0 of 10 operations verified
OperationEvidence
Connection and operation permissionsNone recorded
History beyond one pageNone recorded
Incremental old and recent changesNone recorded
Deletion and identity projectionNot part of this integration. The selected Fathom API contract lists meeting content and can notify when new meeting content is ready, but exposes no deletion or tombstone signal to project.
Duplicates and out-of-order deliveryNone recorded
Rate limits and resumable retryNone recorded
Expired access and reconnectNone recorded
Tenant isolationBuilt and tested. Not yet run against a live account.
Approved write and conflict handlingNot part of this integration. The Fathom connector imports meetings and transcripts. Its provider contract exposes no approved mutation.
Crash after provider acceptanceBuilt and tested. Not yet run against a live account.
Receipt and usage settlementBuilt and tested. Not yet run against a live account.
Consuming-role outcomeNone recorded
Zoom: 0 of 11 operations verified
OperationEvidence
Connection and operation permissionsNone recorded
History beyond one pageNone recorded
Incremental old and recent changesNone recorded
Deletion and identity projectionNone recorded
Duplicates and out-of-order deliveryNone recorded
Rate limits and resumable retryNone recorded
Expired access and reconnectNone recorded
Tenant isolationBuilt and tested. Not yet run against a live account.
Approved write and conflict handlingNot part of this integration. The Zoom connector imports cloud recordings, participants, summaries, and transcripts. Its product contract exposes no approved mutation.
Crash after provider acceptanceBuilt and tested. Not yet run against a live account.
Receipt and usage settlementBuilt and tested. Not yet run against a live account.
Consuming-role outcomeNone recorded
Gong: 0 of 10 operations verified
OperationEvidence
Connection and operation permissionsNone recorded
History beyond one pageNone recorded
Incremental old and recent changesNone recorded
Deletion and identity projectionNot part of this integration. The selected Gong Public API permanently removes deleted calls and exposes no deletion tombstone. Gong data-cloud exports offer IS_DELETED, but that separate contract is not connected.
Duplicates and out-of-order deliveryNone recorded
Rate limits and resumable retryNone recorded
Expired access and reconnectNone recorded
Tenant isolationBuilt and tested. Not yet run against a live account.
Approved write and conflict handlingNot part of this integration. The Gong connector imports detailed calls and transcripts. Its product contract exposes no approved mutation.
Crash after provider acceptanceBuilt and tested. Not yet run against a live account.
Receipt and usage settlementBuilt and tested. Not yet run against a live account.
Consuming-role outcomeNone recorded
Stripe (tenant): 0 of 11 operations verified
OperationEvidence
Connection and operation permissionsBuilt and tested. Not yet run against a live account.
History beyond one pageNone recorded
Incremental old and recent changesNone recorded
Deletion and identity projectionNone recorded
Duplicates and out-of-order deliveryNone recorded
Rate limits and resumable retryNone recorded
Expired access and reconnectNone recorded
Tenant isolationBuilt and tested. Not yet run against a live account.
Approved write and conflict handlingNot part of this integration. The tenant Stripe connector reads billing state and outcomes with a restricted key. It cannot perform an approved mutation.
Crash after provider acceptanceBuilt and tested. Not yet run against a live account.
Receipt and usage settlementBuilt and tested. Not yet run against a live account.
Consuming-role outcomeNone recorded
Planhat: 0 of 12 operations verified
OperationEvidence
Connection and operation permissionsNone recorded
History beyond one pageNone recorded
Incremental old and recent changesNone recorded
Deletion and identity projectionNone recorded
Duplicates and out-of-order deliveryNone recorded
Rate limits and resumable retryNone recorded
Expired access and reconnectNone recorded
Tenant isolationNone recorded
Approved write and conflict handlingNone recorded
Crash after provider acceptanceNone recorded
Receipt and usage settlementNone recorded
Consuming-role outcomeNone recorded
Gainsight: 0 of 12 operations verified
OperationEvidence
Connection and operation permissionsNone recorded
History beyond one pageNone recorded
Incremental old and recent changesNone recorded
Deletion and identity projectionNone recorded
Duplicates and out-of-order deliveryNone recorded
Rate limits and resumable retryNone recorded
Expired access and reconnectNone recorded
Tenant isolationNone recorded
Approved write and conflict handlingNone recorded
Crash after provider acceptanceNone recorded
Receipt and usage settlementNone recorded
Consuming-role outcomeNone recorded
Intercom: 0 of 12 operations verified
OperationEvidence
Connection and operation permissionsNone recorded
History beyond one pageNone recorded
Incremental old and recent changesNone recorded
Deletion and identity projectionNone recorded
Duplicates and out-of-order deliveryNone recorded
Rate limits and resumable retryNone recorded
Expired access and reconnectNone recorded
Tenant isolationBuilt and tested. Not yet run against a live account.
Approved write and conflict handlingNone recorded
Crash after provider acceptanceNone recorded
Receipt and usage settlementNone recorded
Consuming-role outcomeNone recorded
Zendesk: 0 of 12 operations verified
OperationEvidence
Connection and operation permissionsNone recorded
History beyond one pageNone recorded
Incremental old and recent changesNone recorded
Deletion and identity projectionNone recorded
Duplicates and out-of-order deliveryNone recorded
Rate limits and resumable retryNone recorded
Expired access and reconnectNone recorded
Tenant isolationBuilt and tested. Not yet run against a live account.
Approved write and conflict handlingNone recorded
Crash after provider acceptanceNone recorded
Receipt and usage settlementNone recorded
Consuming-role outcomeNone recorded
HubSpot Marketing: 0 of 12 operations verified
OperationEvidence
Connection and operation permissionsNone recorded
History beyond one pageNone recorded
Incremental old and recent changesNone recorded
Deletion and identity projectionNone recorded
Duplicates and out-of-order deliveryNone recorded
Rate limits and resumable retryNone recorded
Expired access and reconnectNone recorded
Tenant isolationNone recorded
Approved write and conflict handlingNone recorded
Crash after provider acceptanceNone recorded
Receipt and usage settlementNone recorded
Consuming-role outcomeNone recorded
Mailchimp: 0 of 12 operations verified
OperationEvidence
Connection and operation permissionsBuilt and tested. Not yet run against a live account.
History beyond one pageNone recorded
Incremental old and recent changesNone recorded
Deletion and identity projectionNone recorded
Duplicates and out-of-order deliveryNone recorded
Rate limits and resumable retryNone recorded
Expired access and reconnectNone recorded
Tenant isolationNone recorded
Approved write and conflict handlingNone recorded
Crash after provider acceptanceNone recorded
Receipt and usage settlementNone recorded
Consuming-role outcomeNone recorded
Customer.io: 0 of 11 operations verified
OperationEvidence
Connection and operation permissionsNone recorded
History beyond one pageNone recorded
Incremental old and recent changesNone recorded
Deletion and identity projectionNot part of this integration. The selected Customer.io App API and reporting webhook contract exposes message and subscription outcomes, but a deleted person has empty identifiers and no stable deletion feed. The incoming Delete Person semantic event is a caller mutation, not an observable remote deletion stream.
Duplicates and out-of-order deliveryNone recorded
Rate limits and resumable retryNone recorded
Expired access and reconnectNone recorded
Tenant isolationNone recorded
Approved write and conflict handlingNone recorded
Crash after provider acceptanceNone recorded
Receipt and usage settlementNone recorded
Consuming-role outcomeNone recorded
WordPress: 0 of 11 operations verified
OperationEvidence
Connection and operation permissionsNone recorded
History beyond one pageNone recorded
Incremental old and recent changesNone recorded
Deletion and identity projectionNone recorded
Duplicates and out-of-order deliveryNone recorded
Rate limits and resumable retryNone recorded
Expired access and reconnectNone recorded
Tenant isolationBuilt and tested. Not yet run against a live account.
Approved write and conflict handlingNone recorded
Crash after provider acceptanceNone recorded
Receipt and usage settlementNone recorded
Consuming-role outcomeNot part of this integration. WordPress core exposes post state but no portable view, click, or conversion outcome contract. Those metrics require a separately selected analytics plugin or provider.
Webflow: 0 of 11 operations verified
OperationEvidence
Connection and operation permissionsBuilt and tested. Not yet run against a live account.
History beyond one pageNone recorded
Incremental old and recent changesNone recorded
Deletion and identity projectionNone recorded
Duplicates and out-of-order deliveryNone recorded
Rate limits and resumable retryNone recorded
Expired access and reconnectNone recorded
Tenant isolationBuilt and tested. Not yet run against a live account.
Approved write and conflict handlingNone recorded
Crash after provider acceptanceNone recorded
Receipt and usage settlementNone recorded
Consuming-role outcomeNot part of this integration. Webflow CMS exposes content state for this publishing contract. Webflow Analyze is a separate scoped product and is not implied as a portable view, click, or conversion outcome source.
Notion: 0 of 11 operations verified
OperationEvidence
Connection and operation permissionsBuilt and tested. Not yet run against a live account.
History beyond one pageNone recorded
Incremental old and recent changesNone recorded
Deletion and identity projectionNone recorded
Duplicates and out-of-order deliveryNone recorded
Rate limits and resumable retryNone recorded
Expired access and reconnectNone recorded
Tenant isolationBuilt and tested. Not yet run against a live account.
Approved write and conflict handlingNone recorded
Crash after provider acceptanceNone recorded
Receipt and usage settlementNone recorded
Consuming-role outcomeNot part of this integration. Notion pages expose workspace content state but no native portable view, click, or conversion metric for this publishing contract.
PostHog (tenant): 0 of 10 operations verified
OperationEvidence
Connection and operation permissionsNone recorded
History beyond one pageNone recorded
Incremental old and recent changesNone recorded
Deletion and identity projectionNot part of this integration. The tenant PostHog contract reads immutable event observations for attribution. Project retention and person deletion are administrative privacy operations, not mutable event identities mirrored by this connector.
Duplicates and out-of-order deliveryNone recorded
Rate limits and resumable retryNone recorded
Expired access and reconnectNone recorded
Tenant isolationNone recorded
Approved write and conflict handlingNot part of this integration. The tenant PostHog connector reads query results and attribution events. Its provider contract exposes no approved mutation.
Crash after provider acceptanceBuilt and tested. Not yet run against a live account.
Receipt and usage settlementBuilt and tested. Not yet run against a live account.
Consuming-role outcomeNone recorded
Slack: 0 of 12 operations verified
OperationEvidence
Connection and operation permissionsBuilt and tested. Not yet run against a live account.
History beyond one pageBuilt and tested. Not yet run against a live account.
Incremental old and recent changesBuilt and tested. Not yet run against a live account.
Deletion and identity projectionBuilt and tested. Not yet run against a live account.
Duplicates and out-of-order deliveryBuilt and tested. Not yet run against a live account.
Rate limits and resumable retryBuilt and tested. Not yet run against a live account.
Expired access and reconnectBuilt and tested. Not yet run against a live account.
Tenant isolationBuilt and tested. Not yet run against a live account.
Approved write and conflict handlingBuilt and tested. Not yet run against a live account.
Crash after provider acceptanceBuilt and tested. Not yet run against a live account.
Receipt and usage settlementBuilt and tested. Not yet run against a live account.
Consuming-role outcomeBuilt and tested. Not yet run against a live account.
Microsoft Teams: 0 of 9 operations verified
OperationEvidence
Connection and operation permissionsBuilt and tested. Not yet run against a live account.
History beyond one pageNot part of this integration. The Microsoft Teams product contract posts to an Incoming Webhook and receives signed decision callbacks. It does not request Microsoft Graph channel-history access.
Incremental old and recent changesNot part of this integration. The Incoming Webhook contract is outbound-only. Incremental collaboration input is limited to authenticated decision callbacks, not a channel event stream.
Deletion and identity projectionNot part of this integration. Microsoft Teams Incoming Webhooks can create cards but cannot delete channel messages. The product contract exposes no deletion mutation.
Duplicates and out-of-order deliveryBuilt and tested. Not yet run against a live account.
Rate limits and resumable retryBuilt and tested. Not yet run against a live account.
Expired access and reconnectBuilt and tested. Not yet run against a live account.
Tenant isolationBuilt and tested. Not yet run against a live account.
Approved write and conflict handlingBuilt and tested. Not yet run against a live account.
Crash after provider acceptanceBuilt and tested. Not yet run against a live account.
Receipt and usage settlementBuilt and tested. Not yet run against a live account.
Consuming-role outcomeBuilt and tested. Not yet run against a live account.
Generic inbound webhook: 0 of 9 operations verified
OperationEvidence
Connection and operation permissionsBuilt and tested. Not yet run against a live account.
History beyond one pageNot part of this integration. The generic webhook is a push-only event intake contract. It has no remote collection from which to request historical pages.
Incremental old and recent changesBuilt and tested. Not yet run against a live account.
Deletion and identity projectionNot part of this integration. Generic intake preserves caller-supplied deletion events as events, but it owns no remote entity collection and therefore has no source tombstone or identity-deletion contract.
Duplicates and out-of-order deliveryBuilt and tested. Not yet run against a live account.
Rate limits and resumable retryBuilt and tested. Not yet run against a live account.
Expired access and reconnectBuilt and tested. Not yet run against a live account.
Tenant isolationBuilt and tested. Not yet run against a live account.
Approved write and conflict handlingNot part of this integration. The generic webhook only receives signed customer events. It has no provider-side approved mutation contract.
Crash after provider acceptanceBuilt and tested. Not yet run against a live account.
Receipt and usage settlementBuilt and tested. Not yet run against a live account.
Consuming-role outcomeBuilt and tested. Not yet run against a live account.

Related