Skip to content
Talk to an Engineer Dashboard

Pipedrive

Connect to Pipedrive CRM. Manage deals, persons, organizations, leads, activities, and sales pipelines with 68 tools.

Connect to Pipedrive CRM. Manage deals, persons, organizations, leads, activities, and sales pipelines.

Pipedrive logo

Supports authentication: OAuth 2.0

What you can build with this connector
Use caseTools involved
Automated deal creation from leadspipedrive_lead_get → pipedrive_deal_create → pipedrive_activity_create
Contact enrichment pipelinepipedrive_persons_search → pipedrive_person_update + pipedrive_note_create
Pipeline health monitoringpipedrive_deals_list (by stage) → pipedrive_deal_update (move stage)
Activity scheduling agentpipedrive_deal_get → pipedrive_activity_create (follow-up call/meeting)
Revenue forecastingpipedrive_pipelines_list → pipedrive_deals_list → aggregate deal values
Competitive account mappingpipedrive_organizations_search → pipedrive_organization_deals_list → pipedrive_notes_list
Product attach rate analysispipedrive_deal_products_list → pipedrive_products_list → compute metrics
Onboarding automationpipedrive_person_create → pipedrive_deal_create → pipedrive_webhook_create

Key concepts:

  • Deals vs Leads: Leads are unqualified opportunities without a pipeline stage. Convert a lead to a deal with pipedrive_deal_create once it qualifies.
  • Persons and organizations: A person can belong to one organization. Linking both to a deal gives full account context.
  • Stages and pipelines: Every deal must be in a stage, which belongs to a pipeline. Use pipedrive_stages_list to get valid stage IDs before creating deals.
  • Activity types: Valid types include call, meeting, email, lunch, deadline, task, and other. Fetch the full list with pipedrive_activity_types_list.
  • Pagination: List endpoints use start (offset) and limit. The default limit is 100; max is 500 for most endpoints.
  • Filters: Use pipedrive_filter_create to save complex queries and pass filter_id to list endpoints for fast, reusable filtering.

Register your Scalekit environment with the Pipedrive connector so Scalekit handles the OAuth flow and token lifecycle on your behalf. The connection name you create is used to identify and invoke the connection in code.

  1. Create a connection in Scalekit

    • In Scalekit dashboard, go to Agent Auth → Create Connection. Find Pipedrive and click Create.

    • Click Use your own credentials and copy the Redirect URI. It looks like: https://<SCALEKIT_ENVIRONMENT_URL>/sso/v1/oauth/<CONNECTION_ID>/callback

    Keep this tab open — you’ll return to it in step 3.

  2. Create a Pipedrive OAuth app

    • Go to the Pipedrive Developer Hub and sign in with your Pipedrive account.

    • Create a new app and fill in the form:

      • App name — a name to identify your app (e.g., My Sales Agent)
      • Callback URL — paste the Redirect URI you copied from Scalekit
    • Under OAuth & Access Scopes, select the permissions your agent needs:

      ScopeAccess granted
      deals:fullRead and write deals
      contacts:fullRead and write persons and organizations
      leads:fullRead and write leads
      activities:fullRead and write activities
      products:fullRead and write products
      users:readRead user information
      webhooks:fullManage webhooks
    • Click Save.

  3. Copy your client credentials

    After saving your app, Pipedrive shows the Client ID and Client Secret.

    Copy both values now — you will need them in the next step.

  4. Add credentials in Scalekit

    • Return to Scalekit dashboard → Agent Auth → Connections and open the connection you created in step 1.

    • Enter the following:

      • Client ID — from Pipedrive
      • Client Secret — from Pipedrive
      • Permissions — the same scopes you selected in Pipedrive
    • Click Save.

Connect a user’s Pipedrive account and make API calls on their behalf — Scalekit handles OAuth and token refresh automatically.

import { ScalekitClient } from '@scalekit-sdk/node';
import 'dotenv/config';
const connectionName = 'pipedrive'; // connection name from Scalekit dashboard
const identifier = 'user_123'; // your unique user identifier
// Get credentials from app.scalekit.com → Developers → API Credentials
const scalekit = new ScalekitClient(
process.env.SCALEKIT_ENV_URL,
process.env.SCALEKIT_CLIENT_ID,
process.env.SCALEKIT_CLIENT_SECRET
);
const actions = scalekit.actions;
// Authenticate the user — send this link to your user
const { link } = await actions.getAuthorizationLink({ connectionName, identifier });
console.log('đź”— Authorize Pipedrive:', link);
// After the user authorizes, make API calls via Scalekit proxy
const result = await actions.request({
connectionName,
identifier,
path: '/v1/deals',
method: 'GET',
params: { status: 'open', limit: 50 },
});
console.log(result.data.data); // Array of deal objects

Scalekit Connected Accounts tab showing authorized Pipedrive users with status, token expiry, and date added columns

Use actions.execute_tool() to call any Pipedrive tool by name. Scalekit resolves credentials, calls the Pipedrive API, and returns a structured response. All tool names map directly to the Tool list below.

Create a deal and schedule a follow-up call:

// Create a new deal linked to a person and organization
const deal = await actions.executeTool({
connectionName: 'pipedrive',
identifier: 'user_123',
toolName: 'pipedrive_deal_create',
toolInput: {
title: 'Acme Corp — Enterprise Plan',
value: 48000,
currency: 'USD',
person_id: 1042,
org_id: 305,
stage_id: 2,
expected_close_date: '2026-06-30',
},
});
const dealId = deal.data.id;
console.log(`Created deal ${dealId}`);
// Schedule a discovery call for the new deal
const activity = await actions.executeTool({
connectionName: 'pipedrive',
identifier: 'user_123',
toolName: 'pipedrive_activity_create',
toolInput: {
subject: 'Discovery call — Acme Corp',
type: 'call',
deal_id: dealId,
due_date: '2026-04-01',
due_time: '10:00',
duration: '00:30',
note: 'Confirm decision-makers and budget approval process',
},
});
console.log(`Scheduled activity ${activity.data.id}`);

Search for a person and attach a note:

// Find an existing contact by name
const results = await actions.executeTool({
connectionName: 'pipedrive',
identifier: 'user_123',
toolName: 'pipedrive_persons_search',
toolInput: { term: 'Jane Smith', exact_match: false, limit: 5 },
});
const persons = results.data.items;
if (persons.length > 0) {
const personId = persons[0].item.id;
// Attach a contextual note
await actions.executeTool({
connectionName: 'pipedrive',
identifier: 'user_123',
toolName: 'pipedrive_note_create',
toolInput: {
content: 'Spoke with Jane re: renewal. She confirmed budget approval in Q2.',
person_id: personId,
pinned_to_person_flag: true,
},
});
console.log(`Note added to person ${personId}`);
}

Move a deal to the next stage:

// Fetch current deal details
const deal = await actions.executeTool({
connectionName: 'pipedrive',
identifier: 'user_123',
toolName: 'pipedrive_deal_get',
toolInput: { deal_id: 9871 },
});
const currentStage: number = deal.data.stage_id;
// Fetch all stages in the pipeline to find the next one
const stages = await actions.executeTool({
connectionName: 'pipedrive',
identifier: 'user_123',
toolName: 'pipedrive_stages_list',
toolInput: { pipeline_id: deal.data.pipeline_id },
});
const stageIds: number[] = stages.data.map((s: { id: number }) => s.id).sort((a: number, b: number) => a - b);
const currentIdx = stageIds.indexOf(currentStage);
if (currentIdx >= stageIds.length - 1) {
throw new Error('Deal is already in the last stage');
}
const nextStage = stageIds[currentIdx + 1];
// Advance the deal
await actions.executeTool({
connectionName: 'pipedrive',
identifier: 'user_123',
toolName: 'pipedrive_deal_update',
toolInput: { deal_id: 9871, stage_id: nextStage },
});
console.log(`Deal moved from stage ${currentStage} to ${nextStage}`);

List all activities due today:

const today = new Date().toISOString().split('T')[0];
const activities = await actions.executeTool({
connectionName: 'pipedrive',
identifier: 'user_123',
toolName: 'pipedrive_activities_list',
toolInput: { start_date: today, end_date: today, done: 0, limit: 100 },
});
for (const act of activities.data.data ?? []) {
console.log(`[${act.type}] ${act.subject} — due ${act.due_time}`);
}

Bulk-update stalled deals:

// Find all open deals that have not moved in 30+ days
const stalled = await actions.executeTool({
connectionName: 'pipedrive',
identifier: 'user_123',
toolName: 'pipedrive_deals_list',
toolInput: { status: 'open', limit: 200 },
});
const cutoff = new Date(Date.now() - 30 * 24 * 60 * 60 * 1000);
for (const deal of stalled.data.data ?? []) {
if (deal.last_activity_date && new Date(deal.last_activity_date) < cutoff) {
await actions.executeTool({
connectionName: 'pipedrive',
identifier: 'user_123',
toolName: 'pipedrive_deal_update',
toolInput: { deal_id: deal.id, status: 'lost' },
});
console.log(`Marked deal ${deal.id} (${deal.title}) as lost`);
}
}

Load all 68 Pipedrive tools as LangChain-compatible tools and let an LLM drive the CRM automatically.

import logging
import os
import time
from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_tool_calling_agent
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from scalekit import ScalekitClient
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
scalekit_client = ScalekitClient(
client_id=os.environ["SCALEKIT_CLIENT_ID"],
client_secret=os.environ["SCALEKIT_CLIENT_SECRET"],
environment_url=os.environ["SCALEKIT_ENV_URL"],
)
# Load Pipedrive tools for the user — retry on transient failures
MAX_RETRIES = 3
tools = None
for attempt in range(1, MAX_RETRIES + 1):
try:
tools = scalekit_client.actions.langchain.get_tools(
connection_name="pipedrive",
identifier="user_123",
)
logger.info("Loaded %d Pipedrive tools", len(tools))
break
except Exception as exc:
logger.warning("get_tools attempt %d/%d failed: %s", attempt, MAX_RETRIES, exc)
if attempt == MAX_RETRIES:
raise RuntimeError("Failed to load Pipedrive tools after retries") from exc
time.sleep(2 ** attempt)
llm = ChatOpenAI(model="gpt-4o", temperature=0)
prompt = ChatPromptTemplate.from_messages([
("system", "You are a sales operations assistant with full access to Pipedrive CRM. "
"Help the user manage their pipeline, contacts, and activities accurately."),
MessagesPlaceholder("chat_history", optional=True),
("human", "{input}"),
MessagesPlaceholder("agent_scratchpad"),
])
agent = create_tool_calling_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
try:
result = agent_executor.invoke({
"input": "Find all open deals worth more than $10,000 and schedule a follow-up call for each one due this Friday."
})
print(result["output"])
except Exception as exc:
logger.error("Agent invocation failed: %s", exc)
raise

Create a new deal in Pipedrive CRM. Requires a deal title. Link the deal to a person and organization to give it full contact context.

NameTypeRequiredDescription
titlestringYesName of the deal
valuenumberNoMonetary value of the deal
currencystringNoISO 4217 currency code (e.g., USD, EUR). Defaults to the company currency
person_idnumberNoID of the person linked to this deal
org_idnumberNoID of the organization linked to this deal
pipeline_idnumberNoID of the pipeline. Defaults to the first pipeline
stage_idnumberNoID of the stage within the pipeline
statusstringNoDeal status: open, won, lost. Defaults to open
expected_close_datestringNoExpected close date in YYYY-MM-DD format
probabilitynumberNoWin probability as a percentage (0–100)
owner_idnumberNoUser ID of the deal owner. Defaults to the authenticated user
visible_tonumberNoVisibility: 1 = owner only, 3 = all users
labelstringNoDeal label

Retrieve full details of a deal by ID, including linked person, organization, stage, and custom fields.

NameTypeRequiredDescription
deal_idnumberYesID of the deal to retrieve

Update properties of an existing deal. Only the fields you provide are changed — other fields remain unchanged.

NameTypeRequiredDescription
deal_idnumberYesID of the deal to update
titlestringNoNew deal title
valuenumberNoNew deal value
currencystringNoNew currency code
person_idnumberNoNew linked person ID
org_idnumberNoNew linked organization ID
pipeline_idnumberNoNew pipeline ID
stage_idnumberNoNew stage ID
statusstringNoNew status: open, won, lost
expected_close_datestringNoNew expected close date (YYYY-MM-DD)
probabilitynumberNoNew win probability (0–100)
owner_idnumberNoNew owner user ID
visible_tonumberNoNew visibility setting

Permanently delete a deal by ID. This action cannot be undone.

NameTypeRequiredDescription
deal_idnumberYesID of the deal to delete

List deals with optional filtering by status, stage, pipeline, or owner. Supports pagination.

NameTypeRequiredDescription
filter_idnumberNoID of a saved filter to apply
statusstringNoFilter by status: open, won, lost, deleted, all_not_deleted
stage_idnumberNoFilter by stage ID
pipeline_idnumberNoFilter by pipeline ID
user_idnumberNoFilter by owner user ID
startnumberNoPagination offset. Defaults to 0
limitnumberNoNumber of results per page. Max 500, defaults to 100
sortstringNoSort field and direction (e.g., update_time DESC)

Search deals by keyword across title, notes, and custom fields. Supports filtering by person, organization, or status.

NameTypeRequiredDescription
termstringYesSearch keyword (minimum 2 characters)
fieldsstringNoComma-separated fields to search: custom_fields, notes, name, label, status
exact_matchbooleanNoWhen true, only exact phrase matches are returned
person_idnumberNoFilter results to deals linked to this person
org_idnumberNoFilter results to deals linked to this organization
statusstringNoFilter by deal status
startnumberNoPagination offset
limitnumberNoNumber of results per page. Max 500

List all activities associated with a deal, optionally filtered by completion status.

NameTypeRequiredDescription
deal_idnumberYesID of the deal
startnumberNoPagination offset
limitnumberNoNumber of results per page
donenumberNoFilter by completion: 0 = incomplete, 1 = done
excludestringNoComma-separated activity IDs to exclude

List all products attached to a deal, including unit price, quantity, and discount per product.

NameTypeRequiredDescription
deal_idnumberYesID of the deal
startnumberNoPagination offset
limitnumberNoNumber of results per page

List all person participants linked to a deal. Participants are contacts associated with a deal beyond the primary contact.

NameTypeRequiredDescription
deal_idnumberYesID of the deal
startnumberNoPagination offset
limitnumberNoNumber of results per page

Create a new person (contact) in Pipedrive. A person can have multiple email addresses and phone numbers.

NameTypeRequiredDescription
namestringYesFull name of the person
owner_idnumberNoUser ID of the owner. Defaults to authenticated user
org_idnumberNoID of the organization this person belongs to
emailstringNoPrimary email address
phonestringNoPrimary phone number
visible_tonumberNoVisibility: 1 = owner only, 3 = all users
marketing_statusstringNoMarketing consent: subscribed, unsubscribed, no_consent, never_contacted

Retrieve full details of a person by ID, including linked organization, deals, and custom fields.

NameTypeRequiredDescription
person_idnumberYesID of the person to retrieve

Update properties of an existing person. Only the fields you provide are changed.

NameTypeRequiredDescription
person_idnumberYesID of the person to update
namestringNoNew full name
owner_idnumberNoNew owner user ID
org_idnumberNoNew organization ID
emailstringNoNew primary email address
phonestringNoNew primary phone number
visible_tonumberNoNew visibility setting
marketing_statusstringNoNew marketing consent status

Permanently delete a person by ID.

NameTypeRequiredDescription
person_idnumberYesID of the person to delete

List persons with optional filtering by first character or saved filter. Supports pagination.

NameTypeRequiredDescription
filter_idnumberNoID of a saved filter to apply
first_charstringNoFilter by first character of the person’s name
startnumberNoPagination offset
limitnumberNoNumber of results per page. Max 500, defaults to 100
sortstringNoSort field and direction

Search persons by keyword across name, email, phone, and custom fields.

NameTypeRequiredDescription
termstringYesSearch keyword (minimum 2 characters)
fieldsstringNoComma-separated fields to search: custom_fields, notes, name, email, phone
exact_matchbooleanNoWhen true, only exact phrase matches are returned
org_idnumberNoFilter to persons belonging to this organization
startnumberNoPagination offset
limitnumberNoNumber of results per page. Max 500

Create a new organization (company account) in Pipedrive.

NameTypeRequiredDescription
namestringYesOrganization name
owner_idnumberNoUser ID of the owner
addressstringNoOrganization address
visible_tonumberNoVisibility: 1 = owner only, 3 = all users
labelstringNoOrganization label

Retrieve full details of an organization by ID, including linked persons and deals.

NameTypeRequiredDescription
org_idnumberYesID of the organization to retrieve

Update properties of an existing organization.

NameTypeRequiredDescription
org_idnumberYesID of the organization to update
namestringNoNew organization name
owner_idnumberNoNew owner user ID
addressstringNoNew address
visible_tonumberNoNew visibility setting

Permanently delete an organization by ID.

NameTypeRequiredDescription
org_idnumberYesID of the organization to delete

List organizations with optional filtering. Supports pagination and sorting.

NameTypeRequiredDescription
filter_idnumberNoID of a saved filter to apply
first_charstringNoFilter by first character of the organization name
startnumberNoPagination offset
limitnumberNoNumber of results per page. Max 500, defaults to 100
sortstringNoSort field and direction

Search organizations by keyword across name, address, and notes.

NameTypeRequiredDescription
termstringYesSearch keyword (minimum 2 characters)
fieldsstringNoComma-separated fields to search: custom_fields, notes, name, address
exact_matchbooleanNoWhen true, only exact phrase matches are returned
startnumberNoPagination offset
limitnumberNoNumber of results per page

List all deals linked to a specific organization. Useful for account-level pipeline views and competitive mapping.

NameTypeRequiredDescription
org_idnumberYesID of the organization
statusstringNoFilter by deal status: open, won, lost, deleted, all_not_deleted
startnumberNoPagination offset
limitnumberNoNumber of results per page. Max 500, defaults to 100
sortstringNoSort field and direction (e.g., update_time DESC)

List all deals linked to a specific person. Use this to see all opportunities associated with a contact.

NameTypeRequiredDescription
person_idnumberYesID of the person
statusstringNoFilter by deal status: open, won, lost, deleted, all_not_deleted
startnumberNoPagination offset
limitnumberNoNumber of results per page. Max 500, defaults to 100
sortstringNoSort field and direction

Create a new lead in Pipedrive. Leads are unqualified opportunities not yet placed in a pipeline. Convert to a deal with pipedrive_deal_create once qualified.

NameTypeRequiredDescription
titlestringYesTitle of the lead
owner_idnumberNoUser ID of the lead owner
label_idsarrayNoArray of label UUIDs to apply
person_idnumberNoID of the person linked to this lead
org_idnumberNoID of the organization linked to this lead
valueobjectNoLead value: { "amount": 5000, "currency": "USD" }
expected_close_datestringNoExpected close date in YYYY-MM-DD format
visible_tonumberNoVisibility: 1 = owner only, 3 = all users
was_seenbooleanNoWhether the lead has been seen by the owner

Retrieve full details of a lead by ID (UUID format).

NameTypeRequiredDescription
lead_idstringYesUUID of the lead to retrieve

Update properties of an existing lead.

NameTypeRequiredDescription
lead_idstringYesUUID of the lead to update
titlestringNoNew lead title
owner_idnumberNoNew owner user ID
label_idsarrayNoNew array of label UUIDs
person_idnumberNoNew linked person ID
org_idnumberNoNew linked organization ID
valueobjectNoNew lead value object
expected_close_datestringNoNew expected close date
is_archivedbooleanNoArchive or unarchive the lead
was_seenbooleanNoMark as seen or unseen

Permanently delete a lead by ID.

NameTypeRequiredDescription
lead_idstringYesUUID of the lead to delete

List leads with optional filtering by archived status or saved filter.

NameTypeRequiredDescription
filter_idnumberNoID of a saved filter to apply
archived_statusstringNoFilter by archived state: archived, not_archived, all
startnumberNoPagination offset
limitnumberNoNumber of results per page. Max 500, defaults to 100
sortstringNoSort field and direction

Search leads by keyword across title, notes, person name, and organization name.

NameTypeRequiredDescription
termstringYesSearch keyword (minimum 2 characters)
fieldsstringNoComma-separated fields to search: custom_fields, notes, title
exact_matchbooleanNoWhen true, only exact phrase matches are returned
person_idnumberNoFilter to leads linked to this person
org_idnumberNoFilter to leads linked to this organization
startnumberNoPagination offset
limitnumberNoNumber of results per page

Create a new activity (call, meeting, email, task, etc.) and optionally link it to a deal, person, or lead.

NameTypeRequiredDescription
subjectstringYesActivity subject or title
typestringYesActivity type: call, meeting, email, lunch, deadline, task, other
due_datestringNoDue date in YYYY-MM-DD format
due_timestringNoDue time in HH:MM (24-hour) format
durationstringNoDuration in HH:MM format
deal_idnumberNoID of the deal to link
lead_idstringNoUUID of the lead to link
person_idnumberNoID of the person to link
org_idnumberNoID of the organization to link
notestringNoActivity note or description (HTML allowed)
locationstringNoActivity location
busy_flagbooleanNoWhether the time slot should show as busy
donebooleanNoMark the activity as done on creation
user_idnumberNoUser ID of the activity owner

Retrieve full details of an activity by ID.

NameTypeRequiredDescription
activity_idnumberYesID of the activity to retrieve

Update properties of an existing activity.

NameTypeRequiredDescription
activity_idnumberYesID of the activity to update
subjectstringNoNew subject
typestringNoNew activity type
due_datestringNoNew due date (YYYY-MM-DD)
due_timestringNoNew due time (HH:MM)
durationstringNoNew duration (HH:MM)
deal_idnumberNoNew linked deal ID
person_idnumberNoNew linked person ID
org_idnumberNoNew linked organization ID
notestringNoNew note content
donebooleanNoMark as done (true) or incomplete (false)
busy_flagbooleanNoNew busy flag

Permanently delete an activity by ID.

NameTypeRequiredDescription
activity_idnumberYesID of the activity to delete

List activities with optional filtering by type, user, date range, or completion status.

NameTypeRequiredDescription
typestringNoFilter by activity type (e.g., call, meeting)
user_idnumberNoFilter by owner user ID
filter_idnumberNoID of a saved filter to apply
start_datestringNoInclusive start date filter (YYYY-MM-DD)
end_datestringNoInclusive end date filter (YYYY-MM-DD)
donenumberNoFilter by completion: 0 = incomplete, 1 = done
startnumberNoPagination offset
limitnumberNoNumber of results per page. Max 500, defaults to 100

List all available activity types configured in the Pipedrive account (e.g., call, meeting, email, custom types).

This tool takes no parameters.

Create a note and attach it to a deal, person, organization, or lead.

NameTypeRequiredDescription
contentstringYesNote content (HTML allowed)
deal_idnumberNoID of the deal to link
person_idnumberNoID of the person to link
org_idnumberNoID of the organization to link
lead_idstringNoUUID of the lead to link
user_idnumberNoUser ID of the note author
pinned_to_deal_flagbooleanNoPin the note to the linked deal
pinned_to_person_flagbooleanNoPin the note to the linked person
pinned_to_org_flagbooleanNoPin the note to the linked organization

Retrieve the content and metadata of a note by ID.

NameTypeRequiredDescription
note_idnumberYesID of the note to retrieve

Update the content or pin status of an existing note.

NameTypeRequiredDescription
note_idnumberYesID of the note to update
contentstringNoNew note content
deal_idnumberNoNew linked deal ID
person_idnumberNoNew linked person ID
org_idnumberNoNew linked organization ID
pinned_to_deal_flagbooleanNoUpdate pin status for the linked deal
pinned_to_person_flagbooleanNoUpdate pin status for the linked person
pinned_to_org_flagbooleanNoUpdate pin status for the linked organization

Permanently delete a note by ID.

NameTypeRequiredDescription
note_idnumberYesID of the note to delete

List notes with optional filtering by linked object (deal, person, organization, or lead).

NameTypeRequiredDescription
user_idnumberNoFilter by note author
deal_idnumberNoFilter by linked deal
person_idnumberNoFilter by linked person
org_idnumberNoFilter by linked organization
lead_idstringNoFilter by linked lead UUID
start_datestringNoFilter notes created after this date (YYYY-MM-DD)
end_datestringNoFilter notes created before this date (YYYY-MM-DD)
pinned_to_deal_flagbooleanNoFilter to notes pinned to deals
pinned_to_person_flagbooleanNoFilter to notes pinned to persons
pinned_to_org_flagbooleanNoFilter to notes pinned to organizations
startnumberNoPagination offset
limitnumberNoNumber of results per page

Upload a file and optionally attach it to a deal, person, organization, activity, note, lead, or product.

NameTypeRequiredDescription
filestringYesBase64-encoded file content or a public file URL
file_namestringNoFile name including extension
deal_idnumberNoID of the deal to attach the file to
person_idnumberNoID of the person to attach the file to
org_idnumberNoID of the organization to attach the file to
activity_idnumberNoID of the activity to attach the file to
note_idnumberNoID of the note to attach the file to
lead_idstringNoUUID of the lead to attach the file to
product_idnumberNoID of the product to attach the file to

Retrieve metadata and download URL for a file by ID.

NameTypeRequiredDescription
file_idnumberYesID of the file to retrieve

Permanently delete a file by ID.

NameTypeRequiredDescription
file_idnumberYesID of the file to delete

List all files uploaded to the Pipedrive account, with optional sorting and pagination.

NameTypeRequiredDescription
startnumberNoPagination offset
limitnumberNoNumber of results per page
sortstringNoSort field and direction (e.g., update_time DESC)
include_deleted_filesbooleanNoInclude soft-deleted files in the response

Create a new sales pipeline.

NameTypeRequiredDescription
namestringYesPipeline name
deal_probabilitybooleanNoWhether deal probability tracking is enabled
order_nrnumberNoDisplay order of the pipeline

Retrieve full details of a pipeline by ID, including its stages.

NameTypeRequiredDescription
pipeline_idnumberYesID of the pipeline to retrieve

Update properties of an existing pipeline.

NameTypeRequiredDescription
pipeline_idnumberYesID of the pipeline to update
namestringNoNew pipeline name
deal_probabilitybooleanNoEnable or disable probability tracking
order_nrnumberNoNew display order
activebooleanNoArchive (false) or reactivate (true) the pipeline

Permanently delete a pipeline and all its stages. Deals in the pipeline are not deleted but lose their pipeline association.

NameTypeRequiredDescription
pipeline_idnumberYesID of the pipeline to delete

List all pipelines in the account.

This tool takes no required parameters.

Create a new stage in a pipeline.

NameTypeRequiredDescription
namestringYesStage name
pipeline_idnumberYesID of the pipeline this stage belongs to
deal_probabilitynumberNoDefault win probability for deals entering this stage (0–100)
rotten_flagbooleanNoEnable rotting for deals that stay in this stage too long
rotten_daysnumberNoNumber of days before a deal is marked as rotten
order_nrnumberNoDisplay order within the pipeline

Retrieve details of a stage by ID.

NameTypeRequiredDescription
stage_idnumberYesID of the stage to retrieve

Update properties of an existing stage.

NameTypeRequiredDescription
stage_idnumberYesID of the stage to update
namestringNoNew stage name
pipeline_idnumberNoMove the stage to a different pipeline
deal_probabilitynumberNoNew default win probability
rotten_flagbooleanNoEnable or disable rotting
rotten_daysnumberNoNew rotten days threshold
order_nrnumberNoNew display order
active_flagbooleanNoArchive (false) or reactivate (true) the stage

List all stages, optionally filtered by pipeline.

NameTypeRequiredDescription
pipeline_idnumberNoFilter stages to this pipeline ID

Create a new product in the Pipedrive product catalog.

NameTypeRequiredDescription
namestringYesProduct name
codestringNoProduct SKU or code
unitstringNoUnit of measurement (e.g., license, seat, hour)
pricenumberNoDefault unit price
taxnumberNoTax percentage
categorystringNoProduct category
owner_idnumberNoUser ID of the product owner
visible_tonumberNoVisibility: 1 = owner only, 3 = all users
descriptionstringNoProduct description

Retrieve full details of a product by ID.

NameTypeRequiredDescription
product_idnumberYesID of the product to retrieve

Update properties of an existing product.

NameTypeRequiredDescription
product_idnumberYesID of the product to update
namestringNoNew product name
codestringNoNew product code
unitstringNoNew unit of measurement
pricenumberNoNew unit price
taxnumberNoNew tax percentage
categorystringNoNew product category
descriptionstringNoNew product description
visible_tonumberNoNew visibility setting

Permanently delete a product by ID.

NameTypeRequiredDescription
product_idnumberYesID of the product to delete

List all products in the catalog with optional filtering and pagination.

NameTypeRequiredDescription
filter_idnumberNoID of a saved filter to apply
startnumberNoPagination offset
limitnumberNoNumber of results per page. Max 500, defaults to 100
sortstringNoSort field and direction

Create a new sales goal for a user or team.

NameTypeRequiredDescription
titlestringYesGoal title
assigneeobjectYesGoal assignee: { "id": 1, "type": "person" } or { "id": 2, "type": "company" }
typeobjectYesGoal type: { "name": "deals_won", "params": { "pipeline_id": [1] } }
expected_outcomeobjectNo{ "target": 50000, "tracking_metric": "sum", "currency_id": 1 }
durationobjectNo{ "start": "2026-01-01", "end": "2026-12-31" }
intervalstringYesReporting interval: weekly, monthly, quarterly, yearly

Retrieve full details and current progress of a goal by ID.

NameTypeRequiredDescription
goal_idstringYesUUID of the goal to retrieve

Update an existing goal.

NameTypeRequiredDescription
goal_idstringYesUUID of the goal to update
titlestringNoNew goal title
assigneeobjectNoNew assignee object
typeobjectNoNew goal type object
expected_outcomeobjectNoNew expected outcome object
durationobjectNoNew duration object
intervalstringNoNew reporting interval

List all goals with optional filtering by type, assignee, or active status.

NameTypeRequiredDescription
type_namestringNoFilter by goal type name (e.g., deals_won, revenue)
assignee_idnumberNoFilter by assignee user ID
assignee_typestringNoFilter by assignee type: person or company
is_activebooleanNoFilter by active status
startnumberNoPagination offset
limitnumberNoNumber of results per page

Retrieve details of a Pipedrive user by ID, including their role, email, and active status.

NameTypeRequiredDescription
user_idnumberYesID of the user to retrieve

List all users in the Pipedrive account.

This tool takes no required parameters.

Register a webhook to receive real-time HTTP notifications when Pipedrive objects are created, updated, or deleted.

NameTypeRequiredDescription
subscription_urlstringYesHTTPS endpoint that will receive webhook payloads
event_actionstringYesAction to subscribe to: * (all), added, updated, deleted, merged
event_objectstringYesObject type to subscribe to: * (all), deal, person, organization, lead, activity, note, pipeline, stage, product

Delete a webhook subscription by ID. The endpoint will stop receiving notifications immediately.

NameTypeRequiredDescription
webhook_idnumberYesID of the webhook to delete

List all active webhook subscriptions for the account.

This tool takes no required parameters.

Create a reusable saved filter that can be passed as filter_id to any list endpoint.

NameTypeRequiredDescription
namestringYesFilter name
conditionsobjectYesFilter conditions — see structure below
typestringYesObject type this filter applies to: deals, leads, org, people, products, activity

conditions structure:

The conditions object uses a nested glue/conditions format. glue is either "and" or "or" and controls how conditions in the group are combined.

{
"glue": "and",
"conditions": [
{
"glue": "and",
"conditions": [
{
"object": "deal",
"field_id": "value",
"operator": ">",
"value": "10000",
"extra_value": null
},
{
"object": "deal",
"field_id": "status",
"operator": "=",
"value": "open",
"extra_value": null
}
]
}
]
}

Each condition has:

  • object — the entity type (deal, person, org, lead, activity, product)
  • field_id — the field name (e.g., value, status, stage_id, owner_id)
  • operator — comparison operator: =, !=, <, >, <=, >=, CONTAINS, NOT CONTAINS, IS NULL, IS NOT NULL
  • value — the comparison value (always a string, even for numbers)
  • extra_value — used for range operators; null otherwise

Retrieve a saved filter and its conditions by ID.

NameTypeRequiredDescription
filter_idnumberYesID of the filter to retrieve

List all saved filters, optionally scoped to a specific object type.

NameTypeRequiredDescription
typestringNoFilter by object type: deals, leads, org, people, products, activity