Claude skills for sales: Prospecting, outreach and CRM hygiene

by Sujay ChoubeyAug 28, 202618 min read
AI AgentsAI Use Case

TL;DR:

  • Most solo sellers draft emails in Claude, then manually paste them into Gmail and update HubSpot by hand, the same three-step hand-off on every deal.

  • Connect Claude directly to your CRM, inbox, and calendar via Composio. Claude reads and writes your tools directly. You stop acting as the middleman.

  • A Salesforce survey of 5,500 reps across 27 countries found sales professionals spend 70% of their time on non-selling tasks (administrative work and meeting preparation).

  • Claude drafts and stops. Every email saves to Gmail drafts for your manual review before anything sends.

Prompt templates are not sales automation. Drafting an email in Claude and then copying it into Gmail is not a workflow - it's a faster version of typing. To turn Claude into a true sales assistant, you need to give it actual tools, not just better instructions.

A Salesforce survey of 5,500 sales professionals across 27 countries found that reps spend 70% of their time on non-selling tasks: administrative work and meeting preparation. For a solo consultant managing their own pipeline, that ratio compounds fast. Every hour you spend copying contact details between Claude and HubSpot is an hour you're not having conversations that close deals.

This guide shows you how to connect Claude directly to your CRM, inbox, and calendar using Composio, and turn static prompts into active, tool-enabled skills that run in a single session.

Eliminate manual hand-offs with Claude automation

Think of Claude as the brain and Composio as the nervous system. Claude reasons, plans, and decides what action to take next. Composio handles the connections to your actual tools, HubSpot, Gmail, Google Calendar, so Claude's decisions become real actions without you acting as the middleman.

The manual hand-off (Claude drafts, you switch tabs, paste into Gmail, open HubSpot, update the lead status) runs multiple times a day across your active contacts. Copy-pasting CRM fields into Claude prompts also introduces errors, and manual HubSpot updates are only as fresh as the last time you remembered to sync. When Claude has direct tool access via Composio, it shifts from passive draft generator to active execution layer. It reads contact records, checks deal stages, drafts outreach from real data, and writes updates back, all in one run. Composio's managed authentication layer handles the login flows once. Access persists across every future session.

Where Zapier routes data between fixed endpoints, Composio's Tool Router adapts to whichever CRM or email provider you have connected without rewriting your integration logic.

Sync your CRM and inbox with Claude AI

This section walks you through a one-session setup that requires no formal IT support. The entire connection runs through Composio's Gateway, which uses the Model Context Protocol (MCP) to connect Claude to your apps. For a visual walkthrough, the Claude Connectors beginner's guide covers the connection flow for non-technical users in plain language.

Prerequisites for Claude sales workflows

Before you start, make sure you have:

  • A Claude account (Pro or API access for tool use)

  • A HubSpot, Salesforce, or Pipedrive account (free tiers work, no enterprise plan needed)

  • A Gmail or Outlook account (personal or workspace)

  • A free Composio account (connects everything, no credit card required)

  • Basic comfort with a terminal and environment variables, only needed if you follow the Python path. The no-code MCP Gateway path below requires none of this The free Composio tier includes 100,000 tool calls per month with unlimited connections and three team members. It's hard-capped with no surprise billing, so there's no financial risk to a full evaluation.

Authorize Claude to access your CRM

Composio handles credential management through an in-chat OAuth flow, so you authorize each tool without leaving the conversation:

  1. Start a Composio session from your Python environment or the MCP Gateway

  2. When Claude needs CRM access, it returns a Connect Link URL

  3. Open the link, approve the OAuth connection, and return to Claude

  4. Credentials persist for all future sessions - no re-authentication loops

The Tool Router session documentation covers this session pattern in full, including how each session scopes all connections and tool calls to a single user ID, keeping your HubSpot data isolated. If you're concerned about credential security, Composio maintains SOC 2 Type II and ISO 27001 certifications, with all OAuth tokens encrypted at rest with AES-256. You can review and revoke any connection from the Composio dashboard at any time.

Linking email for Claude workflows

Connecting Gmail follows the same pattern as the CRM. When you initialize a Composio session and load the Gmail toolkit, Claude can read threads, create draft messages, and manage labels without you touching the Gmail interface.

Composio's ToolRouter automatically selects the correct email provider based on your connected accounts. If you have Gmail authorized, it routes email tasks to Gmail. Switch to Outlook later, and routing updates with no code changes. Tech With Tim's Claude tutorial on connecting Claude to any tool shows how this routing behavior plays out across different tool combinations.

Running your first live data test

There are two ways to connect. Choose the one that matches your setup.

Path A: No-code (MCP Gateway): If you're not writing Python, use the Composio MCP Gateway directly. Open the Gateway, select HubSpot and Gmail from the toolkit list, approve the OAuth connections via Connect Link, and Claude has live tool access from the Claude.ai interface with no code required. The Claude Connectors beginner's guide walks through this flow step by step.

Path B: Python SDK (developer setup): If you're comfortable managing environment variables and running a script locally, the initialization code below gives you a fully programmable agent session with HubSpot and Gmail toolsets loaded via Composio's Anthropic provider, based on the Composio Python documentation:

import json
import os

import anthropic
from composio import Composio
from composio_anthropic import AnthropicProvider

# Initialize Composio with the Anthropic provider
# You'll need to add your API keys as environment variables on your system
composio = Composio(
    api_key=os.getenv("COMPOSIO_API_KEY"),
    provider=AnthropicProvider(),
)

# Initialize the Anthropic client
client = anthropic.Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))

# Load HubSpot and Gmail tools, scoped to this user
tools = composio.tools.get(
    user_id="your_user_id",
    toolkits=["hubspot", "gmail"],
)

messages = [{
    "role": "user",
    "content": (
        "Find the contact Jane Smith in HubSpot. "
        "Summarize their deal stage and last activity, "
        "then save a personalized follow-up email as a Gmail draft."
    ),
}]

response = client.messages.create(
    model="claude-sonnet-5",
    max_tokens=1024,
    tools=tools,
    messages=messages,
)

# Agentic loop: keep executing tool calls until Claude responds with text
while response.stop_reason == "tool_use":
    tool_use_blocks = [block for block in response.content if block.type == "tool_use"]
    results = composio.provider.handle_tool_calls(response=response, user_id="your_user_id")
    messages.append({"role": "assistant", "content": response.content})
    messages.append({
        "role": "user",
        "content": [
            {"type": "tool_result", "tool_use_id": tool_use_blocks[i].id, "content": json.dumps(result)}
            for i, result in enumerate(results)
        ],
    })
    response = client.messages.create(
        model="claude-sonnet-5",
        max_tokens=1024,
        tools=tools,
        messages=messages,
    )

# Print Claude's final text response
for block in response.content:
    if block.type == "text":
        print(block.text)

Replace 'your_user_id' with any unique identifier for your Composio account (your email address works). This ID scopes all tool connections and keeps your CRM data isolated. Run this and Claude queries HubSpot, pulls the contact record, drafts a personalized email from actual CRM data, and saves it as a Gmail draft. Your job is to review and click send.

Skill 1: Prospecting research that updates your CRM

Most prospecting research lives in a browser tab, gets copy-pasted into a spreadsheet, and lands in the CRM days later - partially complete. This skill closes that gap by having Claude extract structured prospect data and push it directly to your CRM in one operation. The LeadIQ integration on Composio pairs well with this workflow for lead enrichment alongside HubSpot, pulling verified contact data before Claude writes anything to the CRM.

Crafting prompts that extract prospect data

Give Claude a raw text block, such as a LinkedIn bio, a company about page, or a meeting transcript, and instruct it to return structured JSON matching your CRM fields:

Extract the following fields from the text below and return JSON:
- full_name, company, job_title
- email (if present)
- company_size (if mentioned)
- key_pain_points (up to three bullet points)

Text: [paste raw input here]

Composio's HubSpot toolkit accepts the structured data Claude returns and passes it directly to the CRM API. No manual field mapping required on your end.

Pushing prospect data to your CRM

Once Claude extracts the structured data, it passes the JSON to Composio's HubSpot toolkit, which creates or updates the contact record directly. Composio's Tool Router inspects the request and routes it to whichever CRM you have connected, removing conditional logic from your agent code entirely.

The routing decision is transparent: HubSpot connected means updates go to HubSpot. Connect Salesforce later and disconnect HubSpot, and the same agent code routes to Salesforce without any rewrites.

Enriching lead lists in bulk

To enrich multiple leads at once, pass an array of raw inputs to Claude and loop through the extraction and push steps for each entry. Composio handles each tool call in sequence, and the free tier's 100,000 monthly tool calls gives you room to run this on lists of several hundred leads before hitting any limits. Manual enrichment typically runs somewhere between 10 and 30 minutes per lead depending on how much research you do. At that rough estimate, 50 contacts can consume the better part of a full working week. Claude with Composio handles the same batch in minutes, with output landing directly in the CRM.

Skill 2: Generating personalized emails from CRM data

Recipients ignore generic outreach. This skill pulls actual CRM data into Claude's context so every email it drafts reflects the contact's real situation, not a mail-merge placeholder.

"Constructing our no-code AI automation platform, connecting Gmail and Drive was a barrier. Handling authentication flows seemed daunting until we found Composio... Composio helped us connect Gmail and Drive within 30 minutes, a pivotal milestone that enabled us to present our MVP in a prominent industry conference, much faster than our development schedule." - Pavan P. on G2

Linking CRM fields to Claude outputs

When Claude has access to your HubSpot toolkit, it retrieves specific contact fields before drafting. A prompt structure that works:

Pull the HubSpot contact record for [email address].
Using their first name, company name, job title, and last activity date,
draft a personalized outreach email under 150 words that references
their recent activity and offers a specific next step.

Composio returns the CRM fields as structured JSON, so Claude has reliable data to work with rather than guessing from a name alone. The Gmail MCP integration guide documents how this data retrieval pattern connects to email drafting through Composio's Gmail toolkit.

Teaching Claude your brand voice

Save a SKILL.md file in your project repository with three to five examples of your best-performing past emails:

# Outreach skill

## Voice guidelines
- Conversational, not formal
- One specific reference to the contact's context
- Clear single ask in the last line
- Under 150 words

## Examples
[paste three real emails here]

Each time you run the outreach skill, include this file's contents in Claude's system prompt. Claude matches your style automatically, and because the file is version-controlled, you can test new voice approaches and roll back if conversion rates drop.

How to chain follow-ups by lead status

Set up a conditional sequence where Claude checks the contact's CRM status before drafting:

  • Stage: New lead - Draft initial outreach referencing the contact's context

  • Stage: Contacted - Draft a follow-up referencing the prior email date

  • Stage: Meeting booked - Draft a confirmation with a pre-call agenda

The critical safety rule: Claude saves every draft to Gmail and stops. You review and send manually every time. Claude drafts, Composio saves to Gmail drafts, and you approve.

Skill 3: Turn calendar events into sales briefings

Walking into a call without context is manageable with five clients. At twenty, it becomes a pattern that costs you renewals. This skill automates pre-call prep so you arrive with full context regardless of how busy the morning was. The Composio AI assistant workflow guide covers how calendar and CRM data combine into pre-meeting briefings, which is exactly the structure this skill uses.

Generating pre-call research automatically

You can set up Composio's trigger system to initiate this workflow automatically when a calendar event is detected. Once a trigger fires, Claude can:

  1. Reads the event details and attendee email

  2. Queries HubSpot for the contact record

  3. Pulls their deal stage, last activity, and open notes

  4. Generates a company summary from available context

Composio's Google Calendar MCP integration documents the event-based triggers, including "Event Created" and "Attendee Response Changed," that make this kind of calendar-briefing workflow possible.

Extracting insights from CRM data

Composio's structured schemas return only the fields you specify, which prevents the AI from becoming overwhelmed by too much information. A focused query that keeps the briefing sharp:

From HubSpot, retrieve for contact [email]:
- Deal stage and value
- Last three interaction notes
- Any open tasks or follow-up flags
Return as a structured summary under 200 words.

Limiting the query scope matters. Full contact records from HubSpot can return dozens of fields, and asking Claude to process everything at once degrades briefing quality. Specific schema requests return focused, actionable summaries.

Prompting Claude for meeting agendas

Turn the research and CRM history into a structured agenda with this prompt:

Using the contact summary and company research below,
create a five-point meeting agenda. Include:
1. A warm opener referencing their recent activity
2. Three discussion points based on their deal stage
3. A specific proposed next step

Then save this agenda to the description field of today's calendar event.

Claude writes the agenda directly to the calendar event via Composio. You open the event on your phone two minutes before the call and the prep is already there.

Skill 4: CRM hygiene and data cleanup

CRM data decays fast. Job titles change, phone numbers go stale, and fields get skipped during busy periods. A messy CRM means Claude's outreach drafts reference incorrect context, which defeats the purpose of personalization.

How to find and fix CRM data decay

Run a query that scans for missing or outdated fields across your active contact list:

Search HubSpot for all contacts where job_title is empty
OR last_modified is older than 90 days.
Return a list of contact names, companies, and missing fields.

Composio's search tools pass this query to HubSpot's API and return a structured list. Claude then processes each contact, flags the gaps, and suggests corrections. For contacts where available context confirms updated job titles, it can push those updates directly to the CRM record.

Cleaning data with AI templates

Manually standardizing formats across a CRM is tedious. A prompt template for bulk formatting cleanup:

For each contact in the list below, standardize:
- Phone numbers to international format (+1XXXXXXXXXX)
- Company names to title case
- Job titles to sentence case

Then update each record in HubSpot via the CRM toolkit.

Contacts: [paste JSON array here]

"I could build an end-to-end SQL agent in 30 minutes with Composio. Great platform, and a great team." - Verified user on G2

Streamlining database cleanup with AI

Schedule this cleanup to run automatically during off-hours using Composio's trigger system. Claude scans for data decay, applies formatting fixes, and logs a summary of changes to a Slack message or Notion page. You review the change log Monday morning instead of spending Monday morning doing the cleanup yourself.

Automating your daily Claude sales workflow

Here's what a full day looks like when all four skills run through Composio.

Morning: Pipeline review and prioritization

Claude pulls your CRM pipeline and generates a prioritized action list for the day:

From HubSpot, retrieve all deals in the "Follow-up needed" stage
where last_activity is older than 5 days.
Sort by deal value descending. Return the top three contacts
with a one-line outreach strategy for each based on their deal stage.

You get a ranked, focused list with context before your first coffee. The Claude multi-app access video shows what it looks like when Claude connects to multiple tools simultaneously.

Automating your midday sales outreach

Claude drafts personalized emails for each contact on the morning list and saves all of them to Gmail drafts. You batch-review during lunch, approve the ones that look right, adjust the ones that need it, and send. No email leaves your account without your eyes on it. Composio's Tool Router documentation describes how multi-tool agent workflows handle this kind of batch processing at scale, with multiple systems updating in sequence from a single agent run.

Closing out: Automate data cleanup

At end of day, Claude logs your call notes, updates deal stages based on outcomes you've described in plain text, and schedules follow-up tasks in HubSpot:

Log the following call outcomes in HubSpot and update deal stages accordingly.
For each contact where I said "follow up in two weeks," create a HubSpot task
due in 14 days.

[paste call notes here]

If you use PandaDoc for proposals, that integrates alongside your CRM and email tools in the same Composio session, so Claude can attach a proposal link to the deal record as part of the same closing workflow.

Troubleshooting your AI sales setup

Setup timeline for Claude workflows

A realistic estimate for getting live from scratch:

  1. A few minutes each: Connect HubSpot and Gmail via the Composio Gateway. Both use managed OAuth with no manual token setup required

  2. Next: Test the initialization code and verify CRM read and write access. Run the sample script above and confirm Claude can pull a contact record and save a Gmail draft

  3. Around 60 minutes: Run your first prospecting and outreach workflow end-to-end. The Claude Code Plugin documentation covers how to wire Composio into Claude Code directly if you prefer a code-editor-first setup over the API approach.

Which CRMs integrate with Claude?

Composio supports HubSpot, Pipedrive, Salesforce, Close, and Attio, alongside the broader catalogue of 1,000+ apps available through the Gateway. The Composio MCP Gateway connects to 1,000+ apps and 50,000+ agent-ready tools in total. You can switch CRM providers without rewriting your Claude agent code because Tool Router detects which CRM you have connected and routes all tool calls to the correct system automatically.

Removing Claude from your CRM

Open the Composio dashboard, navigate to Connections, and click Disconnect on the relevant integration. Composio removes the credentials immediately and you can verify the revocation directly in your CRM's connected apps settings.

Quantifying Claude sales automation ROI

Here's a straightforward comparison of total cost of ownership for a solo seller running this stack versus a traditional SaaS setup.

  • Claude API costs: Most solo sales workflows run well under the high-end usage figures associated with continuous multi-agent loops, since you're running discrete daily tasks rather than persistent background processes.

  • Composio costs: The free tier covers 100,000 tool calls per month. Pro runs $29 per month with a usage credit that resets monthly.

  • Time recovered: If the 70% admin time figure from the Salesforce survey applies to your week and these workflows recover even a portion of that overhead, you reclaim meaningful capacity for revenue-generating activity.

  • Comparison with alternatives: Nango's Starter tier starts at $50 per month, which includes 20 connections, with usage-based charges beyond that as you scale. Merge uses custom pricing for enterprise verticals. Composio's free tier covers managed auth, ToolRouter, and 100,000 tool calls at zero cost until you need to scale, making it the lowest-friction entry point for a solo operator evaluating this stack.

The comparison below shows exactly where Claude's native capabilities end and where Composio's tool layer begins:

Capability

Claude native

Claude + Composio

Benefit

CRM updates

Manual copy-paste required

Reads and writes HubSpot or Salesforce directly

Eliminates manual data entry

Email outreach

Drafts text output only

Saves drafts to Gmail or Outlook automatically

Removes copy-paste from every send

Calendar scheduling

Reads and writes Google Calendar when you explicitly prompt it. No automation, no CRM data

Trigger fires when a calendar event is detected. Claude pulls the matching HubSpot record and writes a structured briefing to the event description automatically

Delivers pre-call context without a manual prompt each time

Data enrichment

Generates text suggestions

Pushes structured data to CRM fields directly

Instant lead record updates at scale

Authentication

Re-authorize manually when tokens expire

Managed auth layer handles refresh automatically

Eliminates credential fragmentation

Start connecting your tools: the free tier requires no credit card and hard-caps at 100,000 tool calls per month so there's no surprise billing during your evaluation. To see how Tool Router automatically routes requests across your connected apps, the Tool Router session documentation walks through the full routing logic.

FAQs

How much does it cost to connect Claude to HubSpot via Composio?

Composio's free tier includes 100,000 tool calls per month and unlimited connections with no credit card required. Paid plans start at $29 per month and include a monthly usage credit that resets each billing cycle.

Can Claude send emails automatically without my approval?

No. This guide is built around a human-in-the-loop protocol. Claude saves every email as a Gmail draft and stops. This guide is intentionally built around that checkpoint: consequential actions like sending email always require your manual approval.

Which CRMs are supported by Composio's Tool Router?

Composio supports HubSpot, Salesforce, Pipedrive, Close, and Attio, with access to 1,000+ apps in total through the Composio Gateway. Tool Router automatically detects which CRM you have connected and routes all CRM-related tool calls to the correct system without any code changes on your end.

Key terms glossary

Claude Skill: A version-controlled file (typically SKILL.md) stored in a git repository that defines a reusable Claude workflow, including tool schemas, voice guidelines, and output templates.

Tool Router: A Composio feature that inspects incoming agent requests and routes them to the correct connected application (Gmail, Outlook, HubSpot, Salesforce) based on which accounts you have authorized, without requiring conditional logic in your agent code.

Connect Link: A URL Composio generates mid-conversation when Claude needs to authorize a new tool. You open the link, approve the OAuth connection, and return to Claude. Credentials persist across all future sessions once authorized.

Human-in-the-loop: A safety protocol where Claude completes a task such as drafting an email but stops before executing a consequential action such as sending. A human reviews the output and approves execution manually.

Share