Browse workflows

Revenue and sales operations teams

CRM revenue workspace with Salesforce, HubSpot, Gmail, and Slack

Unify pipeline visibility across Salesforce and HubSpot, draft follow-ups in Gmail, and alert revenue teams in Slack without forcing a single CRM.

Outcome: A cross-CRM deal brief with stage changes, stalled opportunities, and draft follow-up actions

Integrations in this workflow

The problem

Revenue teams often run deals in both Salesforce and HubSpot while follow-ups live in Gmail and escalations happen in Slack. Copy-pasting pipeline context between systems slows reviews and hides stalled deals.

Example prompt

Using the business gateway, build today's revenue brief. List Salesforce opportunities that moved stage in the last 7 days, search HubSpot deals closing this month, and flag any account names that appear in both systems with conflicting stages. Draft a Gmail follow-up for the top stalled deal and post a summary to #revenue in Slack — do not send email or Slack messages until I approve.

Gateway tool bundle

Use namespaced tools on the business gateway (company workspace) or private gateway (personal workspace):

Salesforce (read-first)

  • salesforce__query_records — opportunities, accounts, and contacts via SOQL
  • salesforce__search_records — SOSL search across CRM objects
  • salesforce__get_record — single record details by Id

HubSpot (read-first)

  • hubspot__search_dealshubspot__get_deal for pipeline stages
  • hubspot__search_contactshubspot__get_contact for owners and stakeholders
  • hubspot__search_companieshubspot__get_company for account context
  • hubspot__list_associations — link deals to contacts and companies

Gmail

  • gmail__list_messagesgmail__get_message for recent threads on an account
  • gmail__send_message — compose follow-ups only after explicit approval

Slack

  • slack__list_channelsslack__send_channel_message for revenue alerts

Start with list-services-tool or describe-service-tool to confirm which CRMs are connected.

Token scope recommendations

Business gateway (recommended for revenue teams)

  • Scope API tokens to mcp:business-gateway so agents discover only integrations your company allowlist permits.
  • Add per-integration scopes when you need tighter control, for example mcp:salesforce, mcp:hubspot, mcp:gmail, and mcp:slack without granting * full access.
  • Bind tokens to a company environment (production vs staging) when deals must not leak across sandboxes.

Private gateway (individual sellers)

  • Use mcp:private-gateway for a personal CRM + comms stack.
  • Omit write-capable integrations from the token unless the agent must draft or send on your behalf.

Least-privilege example

{
  "abilities": [
    "mcp:business-gateway"
  ]
}

For read-only pipeline reviews, instruct agents to call only search-*, query_records, get-*, and list-* tools. Keep create-*, update-*, send_message, and send_channel_message out of automated playbooks until a human approves each action.

Company integrations checklist

  1. Enable CRMs in company settings — add Salesforce and HubSpot to the company integration allowlist before members connect.
  2. Connect both CRMs — teams running dual CRM should connect Salesforce and HubSpot in the company workspace, not only personal accounts.
  3. Approve Gmail and Slack — ensure OAuth scopes cover the mailboxes and channels revenue ops needs.
  4. Issue a business-gateway token — scope to mcp:business-gateway or explicit mcp:{type} abilities; avoid empty selection that defaults to full access.
  5. Verify with a read-only prompt — run the example prompt above and confirm audit logs attribute calls to the correct company environment.

Governance

  • Dual-CRM guardrails: treat Salesforce and HubSpot as complementary read sources. Do not auto-sync or overwrite records across systems without a human-defined mapping.
  • Write tools off by default: salesforce__create_record, salesforce__update_record, HubSpot create-* / update-* tools, gmail__send_message, and slack__send_channel_message should run only after explicit approval in the agent prompt.
  • Slack channel access: restrict OAuth to approved revenue channels during connect — agents should not post to private channels you did not allowlist.
  • CRM data sensitivity: pipeline and contact data may include PII; paste redacted summaries into public Slack threads and review Audit logs before sharing externally.

Connect via private gateway

Activate the integrations above, create an API token scoped to mcp:private-gateway, then add this config to your MCP client.

Config file: ~/.cursor/mcp.json

{
    "mcpServers": {
        "stackgate-private-gateway": {
            "url": "https://stackgate.ai/mcp/private",
            "headers": {
                "Authorization": "Bearer YOUR_API_TOKEN"
            }
        }
    }
}