Pipedrive
The Pipedrive integration lets Helios agents read and change your Pipedrive CRM through its REST API, and run agents automatically when records are created, updated, or deleted.
What your agents can do
Agents can call Pipedrive's v1 and v2 REST APIs. Helios authenticates requests with your API token or OAuth connection.
- Look up a deal, person, or organization before a call, with its notes and activities
- Create and update deals, leads, people, and organizations from a request
- Move deals between stages and mark them won or lost
- Add notes and schedule calls, meetings, and other activities
- Report on a pipeline by stage, owner, or value
What an agent can reach depends on how you connect:
- Pipedrive API Token: an agent can do what the token's user can do in Pipedrive.
- Your own Pipedrive OAuth app: an agent can only call the endpoints that the app's scopes allow, within what the connected user can do. Turn on every scope in the list below for the endpoints you need. The endpoints under the
adminscope only work when a Pipedrive admin connects.
Agents can only reach your company domain, such as https://acme.pipedrive.com. Every call uses your company's daily API token budget. See Limits.
Authentication
| Method | Type | Description |
|---|---|---|
| Pipedrive API Token | API Key | A personal API token from a Pipedrive user |
| Your own Pipedrive OAuth app | OAuth 2.0 | A private app you create in Pipedrive's Developer Hub |
See Integration authentication for how credentials are stored and injected.
Pipedrive API Token
You need a Pipedrive user whose permission set has use API turned on. The token has that user's rights, so an admin covers the whole company.
- In Pipedrive, open Settings → Personal preferences → API, and copy your personal API token. If API isn't there, ask an admin to open Manage users → Permission sets, choose your set, and turn on use API.
- In Helios, choose Pipedrive API Token and paste the token into API Token.
- Enter your Company Domain, the subdomain in your Pipedrive URL, such as
acmeinacme.pipedrive.com. The full URL, such ashttps://acme.pipedrive.com, also works. - Save.
Pipedrive records every change made with the token as the user who owns it. A user has a different token for each company they belong to, and only one active token at a time. If you change the token in Pipedrive, the old one stops working. Enter the new one in API Token through Manage and save.
Pipedrive only sends events for the records the token's user can see. Use an admin's token, or a separate admin user for Helios, so triggers cover the whole company.
Your own Pipedrive OAuth app
Pipedrive apps are created in Developer Hub, which is only available on a developer sandbox account.
-
Sign up for a developer sandbox account. In Pipedrive, click your profile name, find the sandbox company, and choose Developer Hub.
-
Click Create an app, then Create private app.
-
On the Basic info tab, enter an app name and this Callback URL, then click Save:
https://api.heliosapp.com/integrations/pipedrive/oauth_callback -
On the OAuth & access scopes tab, turn on every scope below, choosing full access where Pipedrive offers read only or full access, and save:
Scope Label in Developer Hub What it's for baseAccess to basic information The connected user's settings and currencies. Always on deals:fullDeals: Full access Deals, their products, installments, participants, followers, files, notes, and filters activities:fullActivities: Full access Calls, meetings, and other activities contacts:fullContacts: Full access People and organizations leads:fullLeads: Full access Leads and lead labels products:fullProducts: Full access Products projects:fullProjects: Full access Projects, boards, phases, and tasks goals:fullGoals: Full access Goals mail:fullMail: Full access Mail threads and messages deal-fields:fullDeal fields: Full access Custom deal fields contact-fields:fullContact fields: Full access Custom person and organization fields product-fields:fullProduct fields: Full access Custom product fields project-fields:fullProject fields: Full access Custom project fields users:readRead users data Users, their permissions and roles, and the Owner filter recents:readSee recent account activity Recent changes and changelogs search:readSearch for all data Search phone-integrationCall logs Call logs and their recordings video-callsVideo calls integration Registering as a video call provider. Skip it if Developer Hub doesn't list it messengers-integrationMessaging integration Registering as a messaging provider webhooks:fullWebhooks: Full access Registering the webhook for triggers adminAdminister account Pipelines, stages, custom fields, activity types, users, roles, and permission sets -
Copy the Client ID and Client Secret from the same tab.
-
Click Change to live. A draft app can only be installed by users of the sandbox company.
-
In Helios, choose Your own Pipedrive OAuth app and enter Client ID and Client Secret.
-
Save, then click Allow and install in Pipedrive.
Pipedrive sets scopes on the app, not on each request, so Helios asks for no scopes of its own and has no Admin access option for Pipedrive. A user who isn't a Pipedrive admin can still install an app with admin. The endpoints under it then fail for that user. Helios uses the company domain that Pipedrive returns when you connect.
If you add scopes to the app later, connect again so the token gets them. Access tokens last 60 minutes, and Helios renews them with the refresh token. A refresh token expires after 60 days without use, so Helios also renews the token once a week. If you change the client secret, enter the new one in Client Secret through Manage and connect again. If the app is uninstalled, connect again.
Triggers
Pipedrive can start a Workflow when something happens in your company account. Helios registers one webhook named Helios in Pipedrive when you save the connection. It covers every object and action in the table below, so there is nothing to set up in Pipedrive. With an API token, the user registers it under their own permission level. With an OAuth app, the app needs webhooks:full. Deleting the connection removes the webhook.
| Event | Description | Filters |
|---|---|---|
activity.created | An activity was created | owner, activity type |
activity.updated | An activity was updated | owner, activity type, done changed to |
activity.deleted | An activity was deleted | owner, activity type |
board.created | A project board was created | none |
board.updated | A project board was updated | none |
board.deleted | A project board was deleted | none |
deal.created | A deal was created | pipeline, owner |
deal.updated | A deal was updated | pipeline, owner, moved to stage, status changed to |
deal.deleted | A deal was deleted | pipeline, owner |
deal_field.created | A deal field definition was created | none |
deal_field.updated | A deal field definition was updated | none |
deal_field.deleted | A deal field definition was deleted | none |
deal_installment.created | A deal installment was created | none |
deal_installment.updated | A deal installment was updated | none |
deal_installment.deleted | A deal installment was deleted | none |
deal_product.created | A product on a deal was created | none |
deal_product.updated | A product on a deal was updated | none |
deal_product.deleted | A product on a deal was deleted | none |
lead.created | A lead was created | owner |
lead.updated | A lead was updated | owner |
lead.deleted | A lead was deleted | owner |
lead_field.created | A lead field definition was created | none |
lead_field.updated | A lead field definition was updated | none |
lead_field.deleted | A lead field definition was deleted | none |
note.created | A note was created | none |
note.updated | A note was updated | none |
note.deleted | A note was deleted | none |
organization.created | An organization was created | owner |
organization.updated | An organization was updated | owner |
organization.deleted | An organization was deleted | owner |
organization_field.created | An organization field definition was created | none |
organization_field.updated | An organization field definition was updated | none |
organization_field.deleted | An organization field definition was deleted | none |
person.created | A person was created | owner |
person.updated | A person was updated | owner |
person.deleted | A person was deleted | owner |
person_field.created | A person field definition was created | none |
person_field.updated | A person field definition was updated | none |
person_field.deleted | A person field definition was deleted | none |
phase.created | A project phase was created | none |
phase.updated | A project phase was updated | none |
phase.deleted | A project phase was deleted | none |
pipeline.created | A pipeline was created | none |
pipeline.updated | A pipeline was updated | none |
pipeline.deleted | A pipeline was deleted | none |
product.created | A product was created | owner |
product.updated | A product was updated | owner |
product.deleted | A product was deleted | owner |
product_field.created | A product field definition was created | none |
product_field.updated | A product field definition was updated | none |
product_field.deleted | A product field definition was deleted | none |
project.created | A project was created | owner |
project.updated | A project was updated | owner |
project.deleted | A project was deleted | owner |
project_field.created | A project field definition was created | none |
project_field.updated | A project field definition was updated | none |
project_field.deleted | A project field definition was deleted | none |
stage.created | A pipeline stage was created | pipeline |
stage.updated | A pipeline stage was updated | pipeline |
stage.deleted | A pipeline stage was deleted | pipeline |
task.created | A project task was created | none |
task.updated | A project task was updated | done changed to |
task.deleted | A project task was deleted | none |
user.created | A user was created | none |
user.updated | A user was updated | none |
user.deleted | A user was deleted | none |
- Pipeline matches deals and stages in the pipelines you pick from a list.
- Owner matches records owned by the users you pick from a list.
- Activity type matches activities of the types you pick from a list, such as Call or Meeting.
- Moved to stage matches only updates that changed the deal's stage, when the new stage is one you pick from a list.
- Status changed to matches only updates that changed the deal's status to one you pick: Open, Won, or Lost.
- Done changed to matches only updates that marked an activity or task as Done or Not done.
- Every filter is optional. Without filters, every event matches. A deleted event matches Pipeline, Owner, and Activity type against the record as it was before it was deleted.
The field definition events, such as deal_field.updated, report a custom field being added, renamed, or removed, or its options changing. To start a run when a field's value changes on a record, use that record's updated event, such as deal.updated.
Some events need a Pipedrive feature:
- Project events (
board,phase,project,project_field, andtask) need Projects. It's included in Premium and Ultimate, and a paid add-on on Lite and Growth. See Projects: billing and subscription. deal_installmentevents need Growth or a higher plan. See Recurring products and installments.
When you save the connection, Helios checks whether your company has these features. The trigger picker shows the events of a missing feature as unavailable, with the reason. If you change your Pipedrive plan, save the connection again to check again.
Pipedrive only sends an event when the connected user can see the record. When a record is merged into another, Pipedrive sends a deleted event for the merged record and an updated event for the record it was merged into.
Pipedrive doesn't sign webhook deliveries. The webhook carries HTTP Basic credentials that Helios generates, and Helios rejects deliveries without them.
Pipedrive waits 10 seconds for each delivery, and retries a failed one 3 times, after 3, 30, and 150 seconds. After 10 failed first attempts, Pipedrive pauses the webhook for 30 minutes, and events in that time are lost. If the webhook has no successful delivery for 3 days in a row, Pipedrive deletes it. Save the connection again to register it again. See Pipedrive's webhooks guide.
An agent that edits a record can start another .updated run for it. An agent that adds a note or schedules an activity starts note.created or activity.created. An agent that moves a deal or marks it won or lost can also match a stage or status filter. Pick filters that match only the change you care about, and say in the prompt which changes to ignore. Changes made through the API, including the agent's, have meta.change_source set to api in the payload. See Guarding against events you don't want.
Check that it works
- The connection: after you save, the connection's status shows Connected. Error means Pipedrive rejected the token. See Common errors.
- A trigger:
- Add
deal.createdto a workflow with no filters. - Create a test deal in Pipedrive.
- Check that a run starts. Then open the connection in Helios and click Webhook events to see the event.
- Add
- Pipedrive's side: with an API token, open Settings → Tools and apps → Webhooks. The Helios webhook is listed with the status of its last delivery. Webhooks that an OAuth app creates don't show in Pipedrive's web app.
Common errors
| What you see | Cause | Fix |
|---|---|---|
Set the company domain to the subdomain in your Pipedrive URL, such as acme or https://acme.pipedrive.com | Company Domain is empty or isn't a Pipedrive domain | Enter the subdomain from your Pipedrive URL, such as acme |
Set the base URL to your Pipedrive company domain, such as https://your-company.pipedrive.com, or leave it empty | Base URL under Advanced Configuration isn't a Pipedrive company domain | Clear Base URL, or set it to your company domain |
Access token not found. Please complete the OAuth flow first. | The install in Pipedrive wasn't finished | Open the connection and connect again |
| The connection's status shows Error after it worked | The API token was changed, the user lost use API, or the OAuth app was uninstalled or unused for 60 days | Enter the current token through Manage, or connect the OAuth app again |
403 Forbidden in a run with an OAuth app | The app doesn't have the scope for that endpoint, or the user isn't allowed to do it | Turn on the scope in Developer Hub and connect again, or connect as a user with the right permissions |
| No run starts after an event | The webhook wasn't registered, Pipedrive paused or deleted it, the user can't see the record, the plan doesn't include the feature, or the filters don't match | Save the connection again, check the user's visibility and the plan, and remove filters to test |
429 Too Many Requests in a run | The company used up its daily API token budget | Wait for the budget to reset, or raise it in Pipedrive |
Limits
- Daily API token budget: each company gets 30,000 tokens × the plan multiplier × the number of seats, shared by every API token and OAuth app. The multiplier is 1 on Lite, 2 on Growth, 5 on Premium, and 7 on Ultimate. Token costs vary by endpoint and API version. Check the endpoint's Cost in Pipedrive's API reference. Over the budget, Pipedrive answers
429until the next day. See Pipedrive's rate limiting. - Burst limits: an API token can make 20 to 120 requests per 2 seconds, and an OAuth app 80 to 480, depending on the plan. Search is limited to 10 requests per 2 seconds.
- Webhooks: Pipedrive allows 40 webhooks per user, and each Helios connection uses one.
Last updated on
Clay
The Clay integration lets Helios agents search Clay's company and people database, run Clay functions, and query Clay tables through the Clay Public API. It runs agents when an HTTP API column in a Clay table sends a row, or when a Clay function or Workflow run that names your Clay webhook finishes.
Lusha
Enrich contacts and companies through Lusha's API. Start workflows on supported signals for watched contacts and companies, or on contact opt-outs.