Pipedrive API Skill: AI-Powered CRM Automation via Maton OAuth Gateway
14,487+ downloads and 5 stars on ClawHub. The pipedrive-api skill by @byungkyu connects OpenClaw agents to the full Pipedrive CRM API through Maton's managed OAuth gateway. Manage deals, persons, organizations, activities, and pipelines — all from your AI agent, with no OAuth token handling required.
The Problem It Solves
Sales teams live in Pipedrive. But keeping it updated is manual work: logging call notes, moving deals between stages, creating follow-up activities. Every minute a rep spends updating the CRM is a minute not spent selling.
AI agents can automate the CRM busywork — but Pipedrive's API requires OAuth, which adds setup friction. The pipedrive-api skill removes that friction by routing all requests through Maton's gateway, which handles OAuth token injection automatically.
The AI-Native CRM Context
Pipedrive isn't just adding AI features — in February 2025, they launched a full "agentic experience": a network of AI agents that act as digital sales teammates. Voice + text enabled, they delegate routine tasks and surface real-time deal insights. Their "Pipedrive Pulse" feature (Spring 2025 rollout) proactively flags deals at risk.
The pipedrive-api skill lets your OpenClaw agent work with this ecosystem — or build your own sales automation on top of Pipedrive's data via API.
Quick Start
export MATON_API_KEY="your-maton-key"
# List deals
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/pipedrive/api/v1/deals')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOFFirst-time setup — authorize your Pipedrive account:
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'pipedrive'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
result = json.load(urllib.request.urlopen(req))
print(result['connection']['url']) # Open to complete OAuth
EOFCore Operations
Deals
# List deals (with filters)
GET /pipedrive/api/v1/deals?status=open&stage_id=1&start=0&limit=50
# Get a specific deal
GET /pipedrive/api/v1/deals/{id}
# Create a deal
POST /pipedrive/api/v1/deals
{
"title": "Acme Corp - Enterprise Plan",
"person_id": 123,
"org_id": 456,
"pipeline_id": 1,
"stage_id": 2,
"value": 50000,
"currency": "USD",
"expected_close_date": "2026-06-30"
}
# Move deal to next stage
PATCH /pipedrive/api/v1/deals/{id}
{ "stage_id": 3 }
# Mark deal as won
PATCH /pipedrive/api/v1/deals/{id}
{ "status": "won" }Creating a deal from a qualified lead — a common agent action:
python <<'EOF'
import urllib.request, os, json
deal = {
"title": "Globex Corp - Team Plan",
"value": 12000,
"currency": "USD",
"pipeline_id": 1,
"stage_id": 1,
"expected_close_date": "2026-05-15"
}
data = json.dumps(deal).encode()
req = urllib.request.Request(
'https://gateway.maton.ai/pipedrive/api/v1/deals',
data=data, method='POST'
)
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
result = json.load(urllib.request.urlopen(req))
print(f"Created deal ID: {result['data']['id']}")
EOFPersons (Contacts)
# Search for a person
GET /pipedrive/api/v1/persons/search?term=john@acme.com&fields=email
# Create a contact
POST /pipedrive/api/v1/persons
{
"name": "John Smith",
"email": [{"value": "john@acme.com", "primary": true}],
"phone": [{"value": "+1-555-0100", "primary": true}],
"org_id": 456
}Organizations
# Search for an organization
GET /pipedrive/api/v1/organizations/search?term=Acme Corp
# Get organization with all deals
GET /pipedrive/api/v1/organizations/{id}/deals?status=openActivities (Follow-ups)
Logging a call and scheduling a follow-up in one agent turn:
# Log a completed call
POST /pipedrive/api/v1/activities
{
"subject": "Discovery call with John Smith",
"type": "call",
"deal_id": 789,
"person_id": 123,
"done": 1,
"note": "Discussed enterprise requirements. Budget confirmed at $50K. Decision in Q2."
}
# Schedule a demo
POST /pipedrive/api/v1/activities
{
"subject": "Product demo",
"type": "meeting",
"deal_id": 789,
"due_date": "2026-04-10",
"due_time": "14:00",
"duration": "01:00"
}Pipeline and Stage Introspection
# Get all pipelines
GET /pipedrive/api/v1/pipelines
# Get stages in a pipeline
GET /pipedrive/api/v1/stages?pipeline_id=1Useful for agents that need to dynamically determine stage IDs before creating or moving deals.
AI Agent Use Cases
Lead qualification pipeline: An agent monitors a web form submission, enriches the lead data, creates a Person and Organization in Pipedrive, creates a Deal in Stage 1, and assigns the rep — all automatically.
CRM hygiene: A weekly agent scans open deals with no activity in 14+ days, creates a follow-up Activity for the assigned rep, and adds a note flagging the deal as stale.
Post-call automation: After a sales call transcript arrives (via Fathom API), an agent extracts action items, updates the Deal stage if a decision was made, logs a call Activity, and schedules the next meeting.
Pipeline reporting: An agent queries all open deals grouped by stage and owner, calculates weighted pipeline value, and posts a summary to Slack.
Multi-account agency management: Use Maton-Connection headers to manage multiple clients' Pipedrive instances from a single agent:
req.add_header('Maton-Connection', 'connection-id-for-client-b')Comparison: Agent Approaches to Pipedrive
| Approach | Setup | Agent-friendly | Multi-account |
|---|---|---|---|
| pipedrive-api skill (Maton) | One browser auth | ✅ Single env var | ✅ Connection IDs |
| Pipedrive direct API | API key per account | ✅ Simple key | ⚠️ Key per account |
| n8n MCP server (45 operations) | n8n instance + config | ⚠️ Indirect | ⚠️ Complex |
| Composio managed MCP | Composio account | ✅ Good | ✅ Built-in |
| Zapier MCP | Zapier subscription | ⚠️ Limited | ❌ |
Considerations
- API versioning: This skill targets
api/v1. Pipedrive is evolving rapidly; check the Pipedrive changelog if specific endpoints behave unexpectedly. - Rate limits: Pipedrive enforces rate limits (varies by plan tier). Bulk operations should include delays.
- Custom fields: Pipedrive supports custom fields on deals, persons, and organizations. Custom field IDs vary per Pipedrive instance — query them at
/pipedrive/api/v1/dealFieldsbefore using them. - Webhook support: Real-time event notifications (deal stage changes, new contacts) require Pipedrive webhook configuration separately — not handled by this skill.
The Bigger Picture
Pipedrive's own 2025 product direction — digital sales teammates, Pipedrive Pulse, 24/7 AI chatbots — shows where CRM is heading: AI that takes action, not just surfaces insights. The pipedrive-api skill lets your OpenClaw agent join that workflow: creating deals from inbound signals, logging activities from call transcripts, and keeping the pipeline clean without manual data entry.
The best CRM data is data that gets entered automatically. This skill makes that possible.
View the skill on ClawHub: pipedrive-api