đź’¬ Draft partner intro emails from Crossbeam deal signals with Claude and Slack approval

⚡ 11 views · 💬 Lead Nurturing & AI Sales Agents

Description

Quick overview

This workflow pulls Crossbeam partner deal signals on a schedule or via webhook, matches them to relevant Salesforce accounts, uses Claude with the Crossbeam MCP to draft partner intro request emails, and routes them through Slack for approval before drafting or sending via Gmail and optionally logging a Salesforce task.

How it works

  1. Triggers every weekday at 08:45 or receives a Crossbeam webhook event and verifies the HMAC signature before proceeding.
  2. Fetches partner deal signals from the Crossbeam Signals API (when scheduled), normalizes key fields, and filters to in-scope event types, partners, and recent signals tied to a Salesforce Account ID.
  3. Removes duplicate events and skips signals that already have an outcome recorded in an n8n Data Table.
  4. Queries Salesforce in batches to retrieve matching Account context (including latest closed-lost opportunity) and joins that data back to the Crossbeam signals.
  5. Uses Anthropic Claude (via LangChain) plus Crossbeam MCP tools to find the partner’s account owner and shared contacts, then generates a short Slack brief and a draft intro email.
  6. Posts the brief to Slack and opens an interactive approval form in a thread where a reviewer can approve, edit, or skip within a configured wait time.
  7. If approved and not in dry-run mode, sends the email or saves a Gmail draft (based on configuration) and optionally creates a Salesforce Task, then records the final status in the Data Table and replies in the Slack thread with the outcome.

Setup

  1. Create and connect credentials for Crossbeam REST API (OAuth2), Crossbeam MCP (OAuth2), Salesforce (OAuth2), Anthropic (API key), Slack (OAuth2 with Interactivity enabled), and Gmail (OAuth2).
  2. In the “Configure me” step, fill in your Crossbeam organization UUID, Salesforce base URL, company name, Slack channel ID, and choose settings like event types, lookback windows, confidence threshold, send mode, and dry_run.
  3. Create an n8n Data Table with columns like event_key, status, partner_name, account_name, sfdc_account_id, partner_owner_email, and decided_at, then select it in the Data Table steps used to skip handled events and record outcomes.
  4. Invite your Slack app to the target channel and ensure “send and wait” forms work in your workspace.
  5. If using the webhook path, copy the n8n webhook URL from the Crossbeam webhook trigger and register it in Crossbeam, then set the webhook signing secret in “Configure me”.

Requirements

Customization

Additional info

Safe by default: dry_run is true on import, so the first runs only post to Slack. max_items_per_run (default 5) caps Slack posts and Crossbeam MCP credits per run, and the AI agent is limited to 3 read-only Crossbeam calls per account.

Data handling: partner contacts come from what the partner shares through Crossbeam. Check your data-sharing terms with each partner before adding them to outreach. Claude only receives the account, deal and partner context needed to draft the email.

Webhook path: the workflow verifies the HMAC signature and timestamp of each Crossbeam webhook and rejects unsigned or stale requests with a 401.

đź”— Nodes Used

HTTP Request, Slack, Webhook, Salesforce, Gmail, Schedule Trigger

📥 Import

Download workflow.json and import into n8n: Workflow menu → Import from File

📖 Importing guide · 🔑 Credential setup