作者:互联网 时间: 2026-07-31 19:15:01
Pipedrive 技能通过 Maton 网关使用托管 OAuth,为与 Pipedrive API 交互提供了一个流线型接口。它允许开发人员将强大的 CRM 能力集成到他们的 AI 智能体中,而无需手动处理令牌刷新或复杂的身份验证流。此集成专为高性能销售环境设计,在这些环境中,对交易漏斗和联系人管理的程序化访问至关重要。
通过利用 Openclaw Skills 库中的此 Pipedrive 集成,您可以以编程方式管理整个销售漏斗。网关架构确保您对原生 Pipedrive API 的请求被安全代理,同时自动注入必要的授权令牌,使构建自动化销售助手和数据同步工具变得前所未有的简单。
下载入口:https://github.com/openclaw/skills/tree/main/skills/byungkyu/pipedrive-api
从源直接安装技能的最快方式。
npx clawhub@latest install pipedrive-api
将技能文件夹复制到以下位置之一
全局模式~/.openclaw/skills/
工作区
<project>/skills/
优先级:工作区 > 本地 > 内置
将此提示词复制到 OpenClaw 即可自动安装。
请帮我使用 Clawhub 安装 pipedrive-api。如果尚未安装 Clawhub,请先安装(npm i -g clawhub)。
要开始使用 Openclaw Skills 的这项技能,请按照以下步骤操作:
export MATON_API_KEY="YOUR_API_KEY"
# 使用 Python 发起连接的示例
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')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
该技能与 Pipedrive 的原生数据结构交互。以下是核心实体的基本元数据分类:
| 实体 | 描述 | 关键字段 |
|---|---|---|
| 交易 (Deals) | 销售机会 | title, value, status, stage_id, org_id |
| 人员 (Persons) | 联系人信息 | name, email[], phone[], visible_to |
| 组织 (Organizations) | 公司实体 | name, address, visible_to |
| 活动 (Activities) | 日历事件/任务 | subject, type, due_date, deal_id |
| 备注 (Notes) | 记录注释 | content, deal_id, person_id |
| 漏斗 (Pipelines) | 销售工作流 | name, active, order_nr |
name: pipedrive
description: |
Pipedrive API integration with managed OAuth. Manage deals, persons, organizations, activities, and pipelines. Use this skill when users want to interact with Pipedrive CRM. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway).
compatibility: Requires network access and valid Maton API key
metadata:
author: maton
version: "1.0"
clawdbot:
emoji: ??
requires:
env:
- MATON_API_KEY
Access the Pipedrive API with managed OAuth authentication. Manage deals, persons, organizations, activities, pipelines, and more for sales CRM workflows.
# 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))
EOF
https://gateway.maton.ai/pipedrive/{native-api-path}
Replace {native-api-path} with the actual Pipedrive API endpoint path. The gateway proxies requests to api.pipedrive.com and automatically injects your OAuth token.
All requests require the Maton API key in the Authorization header:
Authorization: Bearer $MATON_API_KEY
Environment Variable: Set your API key as MATON_API_KEY:
export MATON_API_KEY="YOUR_API_KEY"
Manage your Pipedrive OAuth connections at https://ctrl.maton.ai.
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=pipedrive&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
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')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Response:
{
"connection": {
"connection_id": "21fd90f9-5935-43cd-b6c8-bde9d915ca80",
"status": "ACTIVE",
"creation_time": "2025-12-08T07:20:53.488460Z",
"last_updated_time": "2026-01-31T20:03:32.593153Z",
"url": "https://connect.maton.ai/?session_token=...",
"app": "pipedrive",
"metadata": {}
}
}
Open the returned url in a browser to complete OAuth authorization.
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
If you have multiple Pipedrive connections, specify which one to use with the Maton-Connection header:
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"]}')
req.add_header('Maton-Connection', '21fd90f9-5935-43cd-b6c8-bde9d915ca80')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
If omitted, the gateway uses the default (oldest) active connection.
GET /pipedrive/api/v1/deals
Query parameters:
status - Filter by status: open, won, lost, deleted, all_not_deletedfilter_id - Filter ID to usestage_id - Filter by stageuser_id - Filter by userstart - Pagination start (default 0)limit - Items per page (default 100)sort - Sort field and order (e.g., add_time DESC)Example:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/pipedrive/api/v1/deals?status=open&limit=50')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
GET /pipedrive/api/v1/deals/{id}
POST /pipedrive/api/v1/deals
Content-Type: application/json
{
"title": "New Enterprise Deal",
"value": 50000,
"currency": "USD",
"person_id": 123,
"org_id": 456,
"stage_id": 1,
"expected_close_date": "2025-06-30"
}
PUT /pipedrive/api/v1/deals/{id}
Content-Type: application/json
{
"title": "Updated Deal Title",
"value": 75000,
"status": "won"
}
DELETE /pipedrive/api/v1/deals/{id}
GET /pipedrive/api/v1/deals/search?term=enterprise
GET /pipedrive/api/v1/persons
Query parameters:
filter_id - Filter IDstart - Pagination startlimit - Items per pagesort - Sort field and orderGET /pipedrive/api/v1/persons/{id}
POST /pipedrive/api/v1/persons
Content-Type: application/json
{
"name": "John Doe",
"email": ["[email protected]"],
"phone": ["+1234567890"],
"org_id": 456,
"visible_to": 3
}
PUT /pipedrive/api/v1/persons/{id}
Content-Type: application/json
{
"name": "John Smith",
"email": ["[email protected]"]
}
DELETE /pipedrive/api/v1/persons/{id}
GET /pipedrive/api/v1/persons/search?term=john
GET /pipedrive/api/v1/organizations
GET /pipedrive/api/v1/organizations/{id}
POST /pipedrive/api/v1/organizations
Content-Type: application/json
{
"name": "Acme Corporation",
"address": "123 Main St, City, Country",
"visible_to": 3
}
PUT /pipedrive/api/v1/organizations/{id}
Content-Type: application/json
{
"name": "Acme Corp International"
}
DELETE /pipedrive/api/v1/organizations/{id}
GET /pipedrive/api/v1/activities
Query parameters:
type - Activity type (e.g., call, meeting, task, email)done - Filter by completion (0 or 1)user_id - Filter by userstart_date - Filter by start dateend_date - Filter by end dateGET /pipedrive/api/v1/activities/{id}
POST /pipedrive/api/v1/activities
Content-Type: application/json
{
"subject": "Follow-up call",
"type": "call",
"due_date": "2025-03-15",
"due_time": "14:00",
"duration": "00:30",
"deal_id": 789,
"person_id": 123,
"note": "Discuss contract terms"
}
PUT /pipedrive/api/v1/activities/{id}
Content-Type: application/json
{
"done": 1,
"note": "Completed - customer agreed to terms"
}
DELETE /pipedrive/api/v1/activities/{id}
GET /pipedrive/api/v1/pipelines
GET /pipedrive/api/v1/pipelines/{id}
GET /pipedrive/api/v1/stages
Query parameters:
pipeline_id - Filter by pipelineGET /pipedrive/api/v1/stages/{id}
GET /pipedrive/api/v1/notes
Query parameters:
deal_id - Filter by dealperson_id - Filter by personorg_id - Filter by organizationPOST /pipedrive/api/v1/notes
Content-Type: application/json
{
"content": "Meeting notes: Discussed pricing and timeline",
"deal_id": 789,
"pinned_to_deal_flag": 1
}
GET /pipedrive/api/v1/users
GET /pipedrive/api/v1/users/me
const headers = {
'Authorization': `Bearer ${process.env.MATON_API_KEY}`
};
// List open deals
const deals = await fetch(
'https://gateway.maton.ai/pipedrive/api/v1/deals?status=open',
{ headers }
).then(r => r.json());
// Create a deal
await fetch(
'https://gateway.maton.ai/pipedrive/api/v1/deals',
{
method: 'POST',
headers: { ...headers, 'Content-Type': 'application/json' },
body: JSON.stringify({
title: 'New Deal',
value: 10000,
currency: 'USD'
})
}
);
import os
import requests
headers = {'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'}
# List open deals
deals = requests.get(
'https://gateway.maton.ai/pipedrive/api/v1/deals',
headers=headers,
params={'status': 'open'}
).json()
# Create a deal
response = requests.post(
'https://gateway.maton.ai/pipedrive/api/v1/deals',
headers=headers,
json={
'title': 'New Deal',
'value': 10000,
'currency': 'USD'
}
)
visible_to values: 1 (owner only), 3 (entire company), 5 (owner's visibility group), 7 (entire company and visibility group)open, won, lost, deletedstart and limit for paginationabc123_custom_field)curl -g when URLs contain brackets (fields[], sort[], records[]) to disable glob parsingjq or other commands, environment variables like $MATON_API_KEY may not expand correctly in some shell environments. You may get "Invalid API key" errors when piping.| Status | Meaning |
|---|---|
| 400 | Missing Pipedrive connection |
| 401 | Invalid or missing Maton API key |
| 404 | Resource not found |
| 429 | Rate limited (10 req/sec per account) |
| 4xx/5xx | Passthrough error from Pipedrive API |
MATON_API_KEY environment variable is set:echo $MATON_API_KEY
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
pipedrive. For example:https://gateway.maton.ai/pipedrive/api/v1/dealshttps://gateway.maton.ai/api/v1/deals