Pipedrive Integration
61 pre-built action templates across 13 categories
One-Click Connect available! Go to Settings → Integrations → Connect Platform → Pipedrive to connect with a single click via OAuth. No API keys needed.
Overview
The Pipedrive integration gives your AI agents full access to your CRM data during live phone calls and widget conversations. With 61 pre-built action templates across 13 categories, your AI can search contacts, create deals, schedule activities, manage products, look up records, traverse relationships, and more, all while talking to the customer.
Connect via One-Click OAuth. No API tokens needed. Token refresh is handled automatically.
Connection Setup
- Go to Settings → Integrations
- Click Connect Platform
- Select Pipedrive from the grid
- Authorize access on Pipedrive's consent screen
- You're connected! Click Add Action to start adding templates.
Pipedrive-Specific Notes
Email & Phone Arrays
Pipedrive stores emails and phones as arrays with metadata: [{"value": "...", "primary": true, "label": "work"}]. The templates handle this automatically and optional fields are cleaned up before sending.
Lead IDs are UUIDs
Unlike other Pipedrive objects that use integer IDs, leads use UUID strings (e.g., a1b2c3d4-e5f6-7890-abcd-ef1234567890).
Activity Duration Format
Durations use HH:MM format. 5 minutes = 00:05, 1.5 hours = 01:30. The AI converts natural language automatically.
Activity Types
Supported types: call, meeting, task, deadline, email, lunch.
API Versions
Most endpoints use Pipedrive API v2. Leads (CUD), Notes, Call Logs, Users, Currencies, and Lead Labels use v1. The templates use the correct version automatically.
Persons (Contacts)
4 templates: Search, create, update, and delete persons in Pipedrive.
Search Persons
| Setting | Value |
|---|---|
| Method | GET |
| Endpoint | /api/v2/persons/search |
| Required | term (min 2 chars) |
| Optional | fields, exact_match |
Searches by name, email, or phone. Returns matching persons with contact details and organization.
Create Person
| Setting | Value |
|---|---|
| Method | POST |
| Endpoint | /api/v2/persons |
| Required | name |
| Optional | emails[], phones[], org_id |
{
"name": "{{name}}",
"emails": [{"value": "{{email}}", "primary": true, "label": "work"}],
"phones": [{"value": "{{phone}}", "primary": true, "label": "mobile"}],
"org_id": "{{org_id}}"
}Update Person
| Setting | Value |
|---|---|
| Method | PATCH |
| Endpoint | /api/v2/persons/{{id}} |
| Required | id (path) |
| Optional | name, emails[], phones[], org_id |
Delete Person
| Setting | Value |
|---|---|
| Method | DELETE |
| Endpoint | /api/v2/persons/{{id}} |
| Required | id (path) |
| Confirmation | Required |
Organizations
4 templates: Search, create, update, and delete organizations.
Search Organizations
| Setting | Value |
|---|---|
| Method | GET |
| Endpoint | /api/v2/organizations/search |
| Required | term (min 2 chars) |
| Optional | fields, exact_match |
Create Organization
| Setting | Value |
|---|---|
| Method | POST |
| Endpoint | /api/v2/organizations |
| Required | name |
| Optional | address |
{
"name": "{{name}}",
"address": "{{address}}"
}Update Organization
| Setting | Value |
|---|---|
| Method | PATCH |
| Endpoint | /api/v2/organizations/{{id}} |
| Required | id (path) |
| Optional | name, address |
Delete Organization
| Setting | Value |
|---|---|
| Method | DELETE |
| Endpoint | /api/v2/organizations/{{id}} |
| Required | id (path) |
| Confirmation | Required |
Deals
4 templates: Search, create, update, and delete deals.
Search Deals
| Setting | Value |
|---|---|
| Method | GET |
| Endpoint | /api/v2/deals/search |
| Required | term (min 2 chars) |
| Optional | fields, exact_match |
Create Deal
| Setting | Value |
|---|---|
| Method | POST |
| Endpoint | /api/v2/deals |
| Required | title |
| Optional | value, currency, person_id, org_id, expected_close_date |
{
"title": "{{title}}",
"value": "{{value}}",
"currency": "{{currency}}",
"person_id": "{{person_id}}",
"org_id": "{{org_id}}",
"expected_close_date": "{{expected_close_date}}"
}Update Deal
| Setting | Value |
|---|---|
| Method | PATCH |
| Endpoint | /api/v2/deals/{{id}} |
| Required | id (path) |
| Optional | title, value, status (open/won/lost), expected_close_date |
Delete Deal
| Setting | Value |
|---|---|
| Method | DELETE |
| Endpoint | /api/v2/deals/{{id}} |
| Required | id (path) |
| Confirmation | Required |
Leads
4 templates: Search, create, update, and delete leads. Lead IDs are UUIDs.
Search Leads
| Setting | Value |
|---|---|
| Method | GET |
| Endpoint | /api/v2/leads/search |
| Required | term (min 2 chars) |
| Optional | fields |
Create Lead
| Setting | Value |
|---|---|
| Method | POST |
| Endpoint | /v1/leads |
| Required | title + person_id or organization_id |
| Optional | value (nested: {amount, currency}), expected_close_date |
{
"title": "{{title}}",
"person_id": "{{person_id}}",
"organization_id": "{{organization_id}}",
"value": {"amount": "{{amount}}", "currency": "{{currency}}"},
"expected_close_date": "{{expected_close_date}}"
}Lead value uses a nested object format, unlike deals which use flat fields.
Update Lead
| Setting | Value |
|---|---|
| Method | PATCH |
| Endpoint | /v1/leads/{{id}} |
| Required | id (path, UUID) |
| Optional | title, value |
Delete Lead
| Setting | Value |
|---|---|
| Method | DELETE |
| Endpoint | /v1/leads/{{id}} |
| Required | id (path, UUID) |
| Confirmation | Required |
Activities
4 templates: List, create, update, and delete activities (calls, meetings, tasks, etc.).
Activity Types
call · meeting · task · deadline · email · lunch
List Activities
| Setting | Value |
|---|---|
| Method | GET |
| Endpoint | /api/v2/activities |
| Optional Filters | type, done, person_id, deal_id |
Pipedrive activities don't have a search endpoint. Use query filters to narrow results.
Create Activity
| Setting | Value |
|---|---|
| Method | POST |
| Endpoint | /api/v2/activities |
| Required | subject, type |
| Optional | due_date, due_time, duration, deal_id, person_id, org_id, note, done |
{
"subject": "{{subject}}",
"type": "{{type}}",
"due_date": "{{due_date}}",
"due_time": "{{due_time}}",
"duration": "{{duration}}",
"deal_id": "{{deal_id}}",
"person_id": "{{person_id}}",
"org_id": "{{org_id}}",
"note": "{{note}}",
"done": "{{done}}"
}Update Activity
| Setting | Value |
|---|---|
| Method | PATCH |
| Endpoint | /api/v2/activities/{{id}} |
| Required | id (path) |
| Optional | subject, type, due_date, due_time, duration, done |
Delete Activity
| Setting | Value |
|---|---|
| Method | DELETE |
| Endpoint | /api/v2/activities/{{id}} |
| Required | id (path) |
| Confirmation | Required |
Products
4 templates: Search, create, update, and delete products.
Search Products
| Setting | Value |
|---|---|
| Method | GET |
| Endpoint | /api/v2/products/search |
| Required | term (min 2 chars) |
| Optional | fields |
Create Product
| Setting | Value |
|---|---|
| Method | POST |
| Endpoint | /api/v2/products |
| Required | name |
| Optional | code, unit, tax, prices[] |
{
"name": "{{name}}",
"code": "{{code}}",
"unit": "{{unit}}",
"tax": "{{tax}}",
"prices": [{"currency": "{{currency}}", "price": "{{price}}"}]
}Update Product
| Setting | Value |
|---|---|
| Method | PATCH |
| Endpoint | /api/v2/products/{{id}} |
| Required | id (path) |
| Optional | name, code, unit, tax, prices[] |
Delete Product
| Setting | Value |
|---|---|
| Method | DELETE |
| Endpoint | /api/v2/products/{{id}} |
| Required | id (path) |
| Confirmation | Required |
Notes
4 templates: List, create, update, and delete notes.
List Notes
| Setting | Value |
|---|---|
| Method | GET |
| Endpoint | /v1/notes |
| Optional Filters | person_id, deal_id, org_id |
Create Note
| Setting | Value |
|---|---|
| Method | POST |
| Endpoint | /v1/notes |
| Required | content + one of deal_id/person_id/org_id/lead_id |
{
"content": "{{content}}",
"deal_id": "{{deal_id}}",
"person_id": "{{person_id}}",
"org_id": "{{org_id}}",
"lead_id": "{{lead_id}}"
}Update Note
| Setting | Value |
|---|---|
| Method | PUT |
| Endpoint | /v1/notes/{{id}} |
| Required | id (path) |
| Optional | content |
Uses PUT (not PATCH) and replaces the entire note content.
Delete Note
| Setting | Value |
|---|---|
| Method | DELETE |
| Endpoint | /v1/notes/{{id}} |
| Required | id (path) |
| Confirmation | Required |
Direct Lookups
6 templates: Retrieve a single record by its ID for persons, organizations, deals, leads, activities, and products.
Get Person by ID
| Setting | Value |
|---|---|
| Method | GET |
| Endpoint | /api/v2/persons/{{id}} |
| Required | id (path) |
Returns full person details including emails, phones, and linked organization.
Get Organization by ID
| Setting | Value |
|---|---|
| Method | GET |
| Endpoint | /api/v2/organizations/{{id}} |
| Required | id (path) |
Returns full organization details including address and custom fields.
Get Deal by ID
| Setting | Value |
|---|---|
| Method | GET |
| Endpoint | /api/v2/deals/{{id}} |
| Required | id (path) |
Returns full deal details including value, stage, pipeline, and linked contacts.
Get Lead by ID
| Setting | Value |
|---|---|
| Method | GET |
| Endpoint | /api/v2/leads/{{id}} |
| Required | id (path, UUID) |
Returns full lead details. Lead IDs are UUID strings.
Get Activity by ID
| Setting | Value |
|---|---|
| Method | GET |
| Endpoint | /api/v2/activities/{{id}} |
| Required | id (path) |
Returns full activity details including type, due date, and linked records.
Get Product by ID
| Setting | Value |
|---|---|
| Method | GET |
| Endpoint | /api/v2/products/{{id}} |
| Required | id (path) |
Returns full product details including pricing and custom fields.
Pipelines & Stages
4 templates: List and inspect pipelines and their stages.
List Pipelines
| Setting | Value |
|---|---|
| Method | GET |
| Endpoint | /api/v2/pipelines |
Returns all pipelines in the account with their names and deal/stage counts.
Get Pipeline
| Setting | Value |
|---|---|
| Method | GET |
| Endpoint | /api/v2/pipelines/{{id}} |
| Required | id (path) |
Returns details for a single pipeline including deal grouping and order.
List Stages
| Setting | Value |
|---|---|
| Method | GET |
| Endpoint | /api/v2/stages |
| Optional | pipeline_id |
Returns all stages. Filter by pipeline_id to get stages for a specific pipeline.
Get Stage
| Setting | Value |
|---|---|
| Method | GET |
| Endpoint | /api/v2/stages/{{id}} |
| Required | id (path) |
Returns details for a single stage including its pipeline and order number.
Call Logs
5 templates: List, create, update, retrieve, and delete call logs.
List Call Logs
| Setting | Value |
|---|---|
| Method | GET |
| Endpoint | /v1/callLogs |
Returns all call logs for the authenticated user.
Create Call Log
| Setting | Value |
|---|---|
| Method | POST |
| Endpoint | /v1/callLogs |
| Required | subject, duration, outcome, to_phone_number, start_time |
| Optional | person_id, org_id, deal_id, note |
{
"subject": "{{subject}}",
"duration": "{{duration}}",
"outcome": "{{outcome}}",
"to_phone_number": "{{to_phone_number}}",
"start_time": "{{start_time}}",
"person_id": "{{person_id}}",
"org_id": "{{org_id}}",
"deal_id": "{{deal_id}}",
"note": "{{note}}"
}Duration is in seconds. Outcome values: connected, no_answer, left_message, left_voicemail, wrong_number.
Update Call Log
| Setting | Value |
|---|---|
| Method | PATCH |
| Endpoint | /v1/callLogs/{{call_log_id}} |
| Required | call_log_id (path) |
| Optional | subject, duration, outcome, note, to_phone_number, from_phone_number |
{
"subject": "{{subject}}",
"duration": "{{duration}}",
"outcome": "{{outcome}}",
"note": "{{note}}"
}Get Call Log
| Setting | Value |
|---|---|
| Method | GET |
| Endpoint | /v1/callLogs/{{id}} |
| Required | id (path) |
Returns details for a single call log entry.
Delete Call Log
| Setting | Value |
|---|---|
| Method | DELETE |
| Endpoint | /v1/callLogs/{{id}} |
| Required | id (path) |
| Confirmation | Required |
Users
3 templates: List users, get a specific user, or get the current authenticated user.
List Users
| Setting | Value |
|---|---|
| Method | GET |
| Endpoint | /v1/users |
Returns all users in the Pipedrive account.
Get User
| Setting | Value |
|---|---|
| Method | GET |
| Endpoint | /v1/users/{{id}} |
| Required | id (path) |
Returns details for a specific user including name, email, and role.
Get Current User
| Setting | Value |
|---|---|
| Method | GET |
| Endpoint | /v1/users/me |
Returns the currently authenticated user's details. Useful for identifying ownership context.
Utilities
9 templates: Convert leads, manage deal products, list activity types, search globally, and more.
Convert Lead to Deal
| Setting | Value |
|---|---|
| Method | POST |
| Endpoint | /v1/leads/{{id}}/convert |
| Required | id (path, UUID) |
Converts a lead into a deal. The lead is archived after conversion.
Add Product to Deal
| Setting | Value |
|---|---|
| Method | POST |
| Endpoint | /api/v2/deals/{{id}}/products |
| Required | id (path), product_id, item_price, quantity |
| Optional | discount, comments |
{
"product_id": "{{product_id}}",
"item_price": "{{item_price}}",
"quantity": "{{quantity}}",
"discount": "{{discount}}",
"comments": "{{comments}}"
}Remove Product from Deal
| Setting | Value |
|---|---|
| Method | DELETE |
| Endpoint | /api/v2/deals/{{id}}/products/{{product_attachment_id}} |
| Required | id (path), product_attachment_id (path) |
Removes a product attachment from a deal. Use the product_attachment_id from the deal's products list, not the product ID itself.
List Activity Types
| Setting | Value |
|---|---|
| Method | GET |
| Endpoint | /api/v2/activityTypes |
Returns all activity types including custom ones created in Pipedrive settings.
List Lead Labels
| Setting | Value |
|---|---|
| Method | GET |
| Endpoint | /v1/leadLabels |
Returns all available lead labels used for categorizing leads.
Global Search
| Setting | Value |
|---|---|
| Method | GET |
| Endpoint | /api/v2/itemSearch |
| Required | term (min 2 chars) |
| Optional | item_types, fields, exact_match |
Searches across all item types (persons, organizations, deals, leads, products) simultaneously. Narrow results with the item_types parameter.
List Currencies
| Setting | Value |
|---|---|
| Method | GET |
| Endpoint | /v1/currencies |
Returns all supported currencies with codes and symbols. Useful for validating currency input on deals and products.
Get Note by ID
| Setting | Value |
|---|---|
| Method | GET |
| Endpoint | /v1/notes/{{id}} |
| Required | id (path) |
Returns a single note by its ID including content and linked records.
List Deal Fields
| Setting | Value |
|---|---|
| Method | GET |
| Endpoint | /api/v2/dealFields |
Returns all deal fields including custom fields. Useful for discovering field keys when creating or updating deals with custom data.
Example Conversation
Here's how your AI agent uses Pipedrive during a real phone call:
Caller: “Hi, this is Lisa Chen from Acme Corp. I wanted to check on the status of our deal.”
→ Executes: search_persons with term=“Lisa Chen”
→ Found: Lisa Chen (id: 42), Acme Corp, [email protected]
AI Agent: “Hi Lisa! Let me pull up your deals right away.”
→ Executes: list_person_deals with id=42
→ Found: “Acme Corp Enterprise License” — $24,000, stage: Proposal Sent
AI Agent: “I can see your deal 'Acme Corp Enterprise License' for $24,000. It's currently in the Proposal Sent stage. Would you like me to schedule a follow-up call with your account manager?”
Caller: “Yes, how about Thursday at 3 PM?”
→ Executes: create_activity with subject=“Follow-up call - Lisa Chen / Acme Corp”, type=“call”, due_date=“2026-03-06”, due_time=“15:00”, person_id=42
AI Agent: “Done! I've scheduled a follow-up call for Thursday at 3 PM. I'll also log this conversation.”
→ Executes: create_note with content=“Inbound call from Lisa Chen. Inquired about deal status (Proposal Sent). Follow-up call scheduled for Thursday 3 PM.”, person_id=42
Last updated: March 2026