Claude Code + Close CRM: Built-In Calling Meets AI Automation
By Kushal Magar · April 27, 2026 · 13 min read
Key Takeaway
Claude Code connects to Close CRM via the Close MCP server or direct REST API. The highest-ROI automations: bulk sequence enrollment based on ICP filters, pre-call briefs generated before every dial, and lead enrichment via SyncGTM pushing verified data into Close custom fields before Claude queries them.
Claude Code and Close CRM is one of the most practical AI-plus-CRM combinations for sales teams in 2026. Close is built around calling — every lead has a built-in VoIP dialer, call recording, and sequence automation. Claude Code adds the intelligence layer: deciding which leads to call, generating pre-call briefs, enrolling prospects into the right sequence, and running post-call automation based on outcomes.
This guide covers the full integration stack. You will learn how to authenticate Claude Code against the Close REST API, automate sequence enrollment with Claude prompts, generate call prep briefs before every dial, and feed SyncGTM enrichment data into Close so Claude always queries complete lead records.
Close's own research shows that reps who log pre-call research activity close 27% more deals than those who cold-dial without context. Automating that research with Claude removes the manual work while keeping the human on the phone.
TL;DR
- MCP server: Close has an official Claude MCP server — connect via help.close.com/v1/docs/en/mcp-server for natural language CRM access
- REST API: Generate a Close API key, store it as an env var, give Claude a helper script — works in 15 minutes
- Best automation #1: Bulk sequence enrollment — Claude filters leads by ICP criteria and subscribes them to the right sequence in one prompt
- Best automation #2: Pre-call briefs — Claude pulls lead history, last activity, opportunity stage, and company signals before every call
- Data quality: SyncGTM enriches Close leads with verified emails, phone numbers, and firmographics before Claude queries them
Why Close CRM for Claude Code?
Close CRM is purpose-built for outbound sales teams. It ships with built-in VoIP calling, email, SMS, and sequence automation — no third-party dialer needed. That tight integration of communication and data makes it an ideal target for Claude Code automation.
Where most CRMs store call data as free-text notes, Close structures it: call duration, outcome, recording URL, and follow-up task — all queryable via the API. Claude Code can read that structure and act on it: routing leads based on call outcomes, re-enrolling no-shows, or flagging stale opportunities for manager review.
The Close + Claude integration launched in 2025 as an official MCP server built jointly by Close and Anthropic. It gives Claude named tools for every core CRM operation — no raw HTTP required.
Close CRM capabilities Claude Code can automate
- Sequence enrollment — subscribe or unsubscribe leads in bulk
- Lead creation and field updates from external data sources
- Call prep briefs — summarize last N activities before dialing
- Opportunity pipeline reporting — stages, value, age, rep breakdown
- Activity logging — notes, email sends, call outcomes via API
- Smart View queries — filter leads by any field combination
- Bulk actions — edit, email, or delete leads matching a filter
For context on where Close CRM fits in the broader sales stack, see the Close CRM 2026 review covering pricing and built-in calling features in detail.
Close API: Authentication and Setup
The Close REST API uses HTTP Basic Auth with an API key. The key acts as the username; the password field is left blank. This is the fastest path to getting Claude Code talking to Close — no OAuth dance required for personal integrations.
Step 1: Generate a Close API key
- Log in to Close CRM
- Go to Settings → Developer → API Keys
- Click + Generate API Key
- Name it (e.g.,
claude-code-integration) and copy the key
Store the key as an environment variable. Never paste it into Claude directly or hardcode it in a script.
# Add to your shell profile (.bashrc, .zshrc) or .env file export CLOSE_API_KEY="api_xxxxxxxxxxxxxxxxxxxx" # Verify echo $CLOSE_API_KEY
Step 2: Create a Close API helper script
Give Claude a thin wrapper that handles authentication. This prevents Claude from reconstructing the auth pattern each session and keeps credentials out of the prompt.
#!/usr/bin/env python3
# close_helper.py — place in your project root
import os
import requests
import json
API_KEY = os.environ.get("CLOSE_API_KEY")
BASE_URL = "https://api.close.com/api/v1"
def close_get(endpoint, params=None):
"""GET request to Close API."""
resp = requests.get(
f"{BASE_URL}{endpoint}",
auth=(API_KEY, ""),
params=params or {},
)
resp.raise_for_status()
return resp.json()
def close_post(endpoint, data):
"""POST request to Close API."""
resp = requests.post(
f"{BASE_URL}{endpoint}",
auth=(API_KEY, ""),
json=data,
)
resp.raise_for_status()
return resp.json()
def close_put(endpoint, data):
"""PUT request to Close API."""
resp = requests.put(
f"{BASE_URL}{endpoint}",
auth=(API_KEY, ""),
json=data,
)
resp.raise_for_status()
return resp.json()
if __name__ == "__main__":
# Quick test: fetch organization info
org = close_get("/me/")
print(json.dumps({"organization": org.get("organization_id"), "user": org.get("email")}, indent=2))Step 3: Option B — Connect via Close MCP Server
For Claude.ai or Claude Code with MCP support, use the Close official connector. In Claude.ai, go to Settings → Connectors → search for Close and complete the OAuth flow. For Claude Code CLI, follow the Close MCP server setup guide. The MCP approach gives Claude named tools rather than raw HTTP — faster for common operations, more reliable for complex queries.
Test prompt after setup
“Using close_helper.py, fetch the 5 most recently updated leads. Show lead name, status, last activity date, and assigned user.”
Automate Sequences With Claude Code
Close Sequences are multi-step automated workflows — email, call task, and SMS steps triggered on a schedule. The Close API exposes full sequence management: list sequences, subscribe leads, unsubscribe, and query subscription status.
Claude Code adds the decision layer. Instead of manually picking which leads go into which sequence, you describe the criteria in a prompt and Claude runs the enrollment.
Bulk sequence enrollment by ICP filter
Example prompt
“Using close_helper.py, find all leads where status is 'Potential' and the custom field 'ICP_Score' is above 70. List them first so I can confirm. Then subscribe each one to sequence ID seq_abc123 using my user ID.”
Claude will query the leads endpoint with your filters, display the list for review, then POST to /sequence_subscription/ for each lead. The confirmation step prevents accidental enrollment at scale.
Sequence enrollment script template
# Claude will write and run something like this:
def enroll_leads_in_sequence(lead_ids: list, sequence_id: str, sender_user_id: str):
"""Subscribe a list of leads to a Close sequence."""
results = []
for lead_id in lead_ids:
payload = {
"lead_id": lead_id,
"sequence_id": sequence_id,
"sender": {
"user_id": sender_user_id,
},
}
result = close_post("/sequence_subscription/", payload)
results.append({
"lead_id": lead_id,
"subscription_id": result.get("id"),
"status": result.get("status"),
})
return resultsPause or unsubscribe based on activity
Example prompt
“Find all leads currently in sequence seq_abc123 who have had an inbound email reply in the last 7 days. Unsubscribe them from the sequence and set their status to 'Active'.”
This keeps sequences clean. Leads who engage get moved to active status automatically — no manual scan of the sequence report required. For more on how Close sequences compare to other CRM automation, see top CRM automation tools in 2026.
Call Prep Automation: Brief Every Rep Before They Dial
Close's built-in calling is the feature that distinguishes it from most CRMs. Reps dial from inside the app — no tab-switching. Claude Code leverages this by automating the prep work that happens before the call.
The typical pre-call brief takes a rep 5–8 minutes to pull manually. Claude generates the same brief in under 30 seconds — and can do it for an entire call list at once.
Generate a pre-call brief for a single lead
Example prompt
“Using close_helper.py, fetch lead ID lead_abc123. Pull the last 5 activities (calls, emails, notes), the current opportunity stage and value, and any custom fields starting with 'ICP_'. Format a concise pre-call brief: company overview, last contact summary, open opportunity, and 3 talking points for this call.”
Generate briefs for today's call queue
Example prompt
“Using close_helper.py, fetch all leads with a call task due today assigned to user ID usr_xyz. For each, generate a 5-line pre-call brief: company name, industry, deal stage, last activity summary, and one personalized opener based on the lead's most recent note. Output as a numbered list.”
The output is a Slack-pasteable or email-forwardable brief for each rep. Zero manual research time. Close's activity API returns calls, emails, notes, and tasks with timestamps — Claude reads those and synthesizes the context automatically.
| Brief section | Close API source | What Claude does |
|---|---|---|
| Company overview | Lead fields: name, URL, industry, description | Summarizes in 2 sentences |
| Last contact summary | Activities endpoint — last 5 activities | Extracts key points from notes and call outcomes |
| Deal stage and value | Opportunities endpoint | Shows stage, value, expected close date |
| ICP fit signals | Custom fields (SyncGTM-enriched) | Highlights score, firmographic fit, buying signals |
| Talking points | Recent notes + opportunity context | Generates 3 specific openers from context |
Lead Enrichment: SyncGTM Data Feeds Into Close
Claude Code is only as useful as the data it reads. If your Close leads are missing phone numbers, company headcount, or industry — Claude's briefs and routing logic will reflect those gaps.
SyncGTM solves this with waterfall enrichment. It pulls verified contact and company data from 50+ providers — Apollo, RocketReach, Datagma, FullEnrich, and more — and writes the results back to Close custom fields. The enrichment runs automatically on new leads and on a schedule for existing ones.
What SyncGTM pushes to Close CRM custom fields
- Verified work email and direct phone number
- Mobile phone number (for calling queues)
- Company headcount, industry, revenue range, tech stack
- LinkedIn profile URL for every contact
- ICP score based on your target account criteria
- Buying signals: job postings, funding events, tech stack changes, news
- Funding stage and last funding amount
How the enrichment → Close → Claude pipeline works
- New lead enters Close (manual entry, web form, or API import)
- SyncGTM trigger fires — enriches the lead with verified data from waterfall providers and writes results to Close custom fields
- Claude Code runs daily or on-demand — queries enriched leads, filters by ICP score or buying signals, enrolls in sequences, and generates call briefs
- Rep dials from Close — with a complete brief already prepared
The specific custom fields SyncGTM creates in Close follow a consistent naming convention (e.g., sync_icp_score, sync_mobile_phone, sync_funding_stage). Claude uses these field names in queries without guessing.
For a full breakdown of enrichment options for Close CRM, see the 8 Close CRM enrichment tools our SDRs swear by. For the broader Claude Code CRM integration context, see the Claude Code CRM integration guide.
Bulk Lead Operations With Claude Code
The Close API supports bulk actions — update, email, delete, and sequence-subscribe across multiple leads in a single operation. Claude Code makes these accessible via plain-English prompts instead of manual filters in the UI.
Bulk field update by filter
Example prompt
“Using close_helper.py, find all leads where status is 'Potential' and the created date is older than 90 days. Update their status to 'Stale'. Show me the count before updating.”
Lead import with enrichment
Example prompt
“I have a CSV of 200 company names and LinkedIn URLs at /data/new_leads.csv. Create a Close lead for each one, setting status to 'Potential' and adding a note: 'Imported from LinkedIn outreach campaign, April 2026'. Report how many were created successfully.”
Pipeline health report
Example prompt
“Using close_helper.py, pull all open opportunities. Group by pipeline stage and show: count, total value, average deal size, and the oldest deal per stage. Flag any deal that has not been updated in 14+ days.”
These prompts replace what would otherwise require manual Smart View setup, CSV export, and spreadsheet work. Claude runs the query, formats the output, and returns results in the same session.
For RevOps teams using Claude Code across multiple CRMs and tools, see Claude Code RevOps workflows for the full automation stack.
Close MCP vs Direct REST API: Which to Use
Close supports both integration paths in 2026. The right choice depends on your team's technical depth and workflow.
| Dimension | Close MCP Server | Direct REST API |
|---|---|---|
| Setup time | <10 min (OAuth flow) | 15–20 min (API key + helper script) |
| Technical skill needed | Low — UI-based connection | Medium — Python or bash scripting |
| Works in Claude.ai chat | Yes | No — CLI only |
| Custom field access | Depends on MCP tool coverage | Full — any field via API |
| Bulk operations | Limited | Full bulk API access |
| Sequence management | Yes (named tools) | Full — subscribe, pause, unsubscribe |
| Best for | Ops and sales reps querying via Claude.ai | Engineers building automated pipelines |
Recommendation: Start with the Close MCP server if your team uses Claude.ai and needs immediate access without scripting. Move to the direct REST API if you are building scheduled automations (cron jobs, webhook-triggered workflows) that run without a human in the loop.
For context on how this fits the broader MCP ecosystem for GTM teams, see top GTM MCPs for Claude Code in 2026.
Security Best Practices
Connecting Claude Code to a live CRM requires explicit decisions about access scope and credential management. These are non-negotiable for production integrations.
Create a dedicated integration API key
Generate a separate Close API key named specifically for the Claude integration. If the key is ever exposed, you can revoke it without affecting other integrations or team member access. Label it clearly in Close Settings → Developer → API Keys.
Store credentials in environment variables
Never do this
# DO NOT paste your API key into Claude or hardcode it in a script API_KEY = "api_xxxxxxxxxxxxxxxxxxxx" # ← exposed in code and chat history
Do this instead
# Set once in your shell profile
export CLOSE_API_KEY="api_xxxxxxxxxxxxxxxxxxxx"
# Script reads from environment — never from hardcoded value
API_KEY = os.environ.get("CLOSE_API_KEY")Confirm before bulk writes
For any prompt that will update or enroll more than 10 leads, ask Claude to list the affected records first. Verify the count and sample matches your intent before confirming the write operation. Close does not have a native undo for bulk field updates.
Test on a small subset first
For new automation workflows — especially sequence enrollment — run on 5–10 leads before scaling. Verify the enrolled leads appear correctly in the Close sequence report before processing the full list.
For comprehensive security guidance on AI-powered CRM automation, the Claude Code CRM integration guide covers the full credential management and permission scoping framework.
Claude Queries Your Close Leads. SyncGTM Fills What's Missing.
Claude Code automation is only as good as the data in your CRM. SyncGTM enriches every Close lead with verified emails, mobile numbers, firmographics, and buying signals from 50+ providers — automatic sync on every new lead or on a schedule.
Try SyncGTM Free — No Credit Card