Setu Recipes: reusable workflows across every app.Browse templates

Integrations / Pipedrive

Pipedrive

Sales CRM: deals, people, notes and activities. Works against the connected company's own Pipedrive host (API v2).

10 actions OAuth 2 5 read5 write Calls api.pipedrive.com

Connect

TypeScript
const conn = await setu.connections.initiate({ userId: "user_1", toolkit: "pipedrive" });
console.log(conn.connectUrl); // show this to your user
await conn.waitUntilActive();

Permissions requested

ScopeWhy it is requested
baseIdentify the connected Pipedrive user and company
deals:readRead deals
deals:fullCreate and update deals and attach notes to them
contacts:readRead people and organizations
contacts:fullCreate and update people and organizations
activities:fullCreate activities such as calls and tasks
search:readSearch across deals, people and organizations

Actions

Add notewritepipedrive.add_noteAdd a note (HTML allowed) to a deal, person, organization or lead. At least one of deal_id, person_id, org_id or lead_id is required.

Needs scope: deals:full

InputTypeDescription
contentstringRequiredNote text, HTML allowed
deal_idintegerOptionalDeal id
person_idintegerOptionalPerson id
org_idintegerOptionalOrganization id
lead_idstringOptionalLead id (UUID)
TypeScript
await setu.execute({
  userId: "user_1",
  action: "pipedrive.add_note",
  input: {
    "content": "<content>"
  },
});
Create activitywritepipedrive.create_activitySchedule an activity (call, meeting, task, email) with a subject, type, due date and optional linked deal, person or organization.

Needs scope: activities:full

InputTypeDescription
subjectstringRequiredActivity title
typestringOptionalActivity type key, e.g. call, meeting, task, deadline, email, lunch
due_datestringOptionalYYYY-MM-DD
due_timestringOptionalHH:MM:SS (UTC)
deal_idintegerOptionalLinked deal id
org_idintegerOptionalLinked organization id
notestringOptionalFree-text note
donebooleanOptionalMark as already done
TypeScript
await setu.execute({
  userId: "user_1",
  action: "pipedrive.create_activity",
  input: {
    "subject": "<subject>"
  },
});
Create dealwritepipedrive.create_dealCreate a deal. Only the title is required; link a person or organization by id and pick a pipeline and stage if needed.

Needs scope: deals:full

InputTypeDescription
titlestringRequiredDeal title
valuenumberOptionalDeal value
currencystringOptionalThree-letter currency code
person_idintegerOptionalLinked person id
org_idintegerOptionalLinked organization id
pipeline_idintegerOptionalPipeline id
stage_idintegerOptionalStage id
statusstringOptional
expected_close_datestringOptionalYYYY-MM-DD
TypeScript
await setu.execute({
  userId: "user_1",
  action: "pipedrive.create_deal",
  input: {
    "title": "<title>"
  },
});
Create personwritepipedrive.create_personCreate a person (contact) with a name and optional emails, phone numbers and organization.

Needs scope: contacts:full

InputTypeDescription
namestringRequiredFull name
emailsarray of objectOptionalEmail objects, e.g. [{value, primary, label}]
phonesarray of objectOptionalPhone objects, e.g. [{value, primary, label}]
org_idintegerOptionalOrganization id
TypeScript
await setu.execute({
  userId: "user_1",
  action: "pipedrive.create_person",
  input: {
    "name": "<name>"
  },
});
Get dealreadpipedrive.get_dealGet one deal by id with its title, value, status, stage and linked person and organization.

Needs scope: deals:read

InputTypeDescription
idintegerRequiredDeal id
TypeScript
await setu.execute({
  userId: "user_1",
  action: "pipedrive.get_deal",
  input: {
    "id": 1
  },
});
Get personreadpipedrive.get_personGet one person by id with their name, emails, phone numbers and organization.

Needs scope: contacts:read

InputTypeDescription
idintegerRequiredPerson id
TypeScript
await setu.execute({
  userId: "user_1",
  action: "pipedrive.get_person",
  input: {
    "id": 1
  },
});
List dealsreadpipedrive.list_dealsList deals, optionally filtered by status (open, won, lost, deleted), person, organization, pipeline or stage.

Needs scope: deals:read

InputTypeDescription
statusstringOptional
person_idintegerOptionalOnly deals of this person
org_idintegerOptionalOnly deals of this organization
pipeline_idintegerOptionalOnly deals in this pipeline
stage_idintegerOptionalOnly deals in this stage
limitintegerOptionalMax results, up to 500
cursorstringOptionalCursor from additional_data.next_cursor
TypeScript
await setu.execute({
  userId: "user_1",
  action: "pipedrive.list_deals",
  input: {},
});
List peoplereadpipedrive.list_personsList people (contacts), optionally for one organization. Use search_items to find a person by name or email.

Needs scope: contacts:read

InputTypeDescription
org_idintegerOptionalOnly people of this organization
limitintegerOptionalMax results, up to 500
cursorstringOptionalCursor from additional_data.next_cursor
TypeScript
await setu.execute({
  userId: "user_1",
  action: "pipedrive.list_persons",
  input: {},
});
Search deals, people and organizationsreadpipedrive.search_itemsSearch Pipedrive by text across deals, people, organizations and more. Returns matching items with type, id and name.

Needs scope: search:read

InputTypeDescription
termstringRequiredSearch text, at least 2 characters
item_typesstringOptionalComma-separated: deal, person, organization, product, lead, project (default all)
limitintegerOptionalMax results, up to 100
TypeScript
await setu.execute({
  userId: "user_1",
  action: "pipedrive.search_items",
  input: {
    "term": "<term>"
  },
});
Update dealwritepipedrive.update_dealUpdate fields of a deal by id, for example to move it to another stage or mark it won or lost. Only the fields you pass change.

Needs scope: deals:full

InputTypeDescription
idintegerRequiredDeal id
titlestringOptionalDeal title
valuenumberOptionalDeal value
currencystringOptionalThree-letter currency code
person_idintegerOptionalLinked person id
org_idintegerOptionalLinked organization id
pipeline_idintegerOptionalPipeline id
stage_idintegerOptionalStage id
statusstringOptional
expected_close_datestringOptionalYYYY-MM-DD
TypeScript
await setu.execute({
  userId: "user_1",
  action: "pipedrive.update_deal",
  input: {
    "id": 1
  },
});