Pipedrive CRM v2
Provides integration with Pipedrive CRM, the sales CRM where teams keep persons, organizations and leads, add notes to them and follow up on their sales opportunities.
Use the Node to query and manage persons, organizations, leads, notes, and related records in your Workflows, for example to keep Pipedrive in step with another CRM or to create leads from enquiries captured elsewhere. The Node uses OAuth authentication and is available on Cloud Runtime Clusters.
Revision History
0.0.0.9 - Initial release.
0.0.0.10 - Each Create, Update and Delete item can now name the record it targets, so one step can change many records without a For Each.
Connection
Use this Connection to store your Pipedrive OAuth app credentials and the tokens generated when you authorize your account.
| Property | Type | Description |
|---|---|---|
Client ID |
String | Client identifier issued for your Pipedrive OAuth app. Required. |
Client Secret |
Masked | Client secret issued for your Pipedrive OAuth app. Required. |
Scopes |
String | Space-separated OAuth scopes requested during authorization. Defaults to base. Include the scopes needed by your selected operations. |
Access Token |
Masked | Access token generated when you connect your Pipedrive account. Flowgear renews rejected or missing access tokens using the refresh token. |
Refresh Token |
Masked | Token used to renew access. Reconnect your account if this token expires or is revoked. |
API Domain |
String | Account API origin returned by OAuth. Defaults to https://api.pipedrive.com. Must be an HTTPS host ending in .pipedrive.com, optionally followed by /api. Do not append /v1 or /v2; the Node selects the API version. |
Timeout (seconds) |
Integer | Timeout for individual API and OAuth requests. Defaults to 30 and must be greater than zero. |
Setup Notes
- Create a Pipedrive OAuth app and obtain its
Client IDandClient Secret. See Pipedrive's app credential guide. - Set the app's OAuth callback URL to your Console's origin followed by
/r/auth. For example, usehttps://appnew.flowgear.net/r/authwhen connecting fromhttps://appnew.flowgear.net. Pipedrive allows one callback URL per app. - Configure the app's access scopes for the operations you intend to use. Person and Organization queries require
contacts:readorcontacts:full; their create, update, and delete operations requirecontacts:full. Lead queries requireleads:readorleads:full, and Lead mutations requireleads:full. Refer to Pipedrive's scope and endpoint mapping for other operations. - Create a
Pipedrive CRMConnectionin Flowgear and enter the app credentials and the required space-separatedScopes, includingbase. - Authorize the
Connectionwith your target Pipedrive account. Flowgear stores the returned access token, refresh token, API domain, and granted scopes. - Test the
Connection. The test reads the current user throughusers/mewithout changing any records.
The default base scope supports the Connection test but does not grant access to all CRM operations. A successful test does not confirm permissions for every template. If you need additional scopes, update the app permissions and authorize the Connection again; refreshing a token does not grant new permissions.
Methods
Select a template for the Method you want to use. The template supplies OperationId and describes the available Options, request fields, and response fields. OperationId is the template's GUID, rather than a Pipedrive endpoint name or URL.
The supported operations are:
| Records | Methods |
|---|---|
| Persons and organizations | Query for lists and single records; Create, Update, and Delete. |
| Leads | Query for active lists, archived lists, and single records; Create, Update, and Delete. |
| Lead labels | Query, Create, Update, and Delete. |
| Lead sources | Query. |
| Notes and note comments | Query, Create, Update, and Delete. |
| Organization relationships | Query, Create, Update, and Delete. |
| Users | Query for lists, single users, the current user, and lookup by name. |
| Currencies and activity types | Query. |
| Deal, Person, and Organization changelogs | Query. |
Person and Organization operations use the Pipedrive API v2. The other supported operations use the Pipedrive API v1. These API versions are independent of the Flowgear Runtime version.
Query
Reads records using the selected operation and automatically follows pagination for supported list queries.
| Parameter | Type | Description |
|---|---|---|
Connection |
Connection | Pipedrive CRM Connection used to authenticate the request. |
OperationId |
String | GUID supplied by the selected query template. |
Options |
Object | Route and query values declared by the selected template, such as a record ID or supported filter. Required route values must be supplied. |
| Return | Type | Description |
|---|---|---|
Response |
Array | One row per returned record, using the selected template's fields. Query rows do not contain Flowgear mutation metadata. A successful empty collection returns zero rows; failed reads raise a Node error. |
Create
Creates one record for each JSON object supplied through Items.
| Parameter | Type | Description |
|---|---|---|
Connection |
Connection | Pipedrive CRM Connection used to authenticate the request. |
OperationId |
String | GUID supplied by the selected create template. |
Options |
Object | Declared route and query values. Route values, such as the note id for a note comment, are used for items that do not supply their own. |
Items |
Array | Required stream of single-record request objects. Map the selected template's body fields directly onto each item. Each item can also supply the template's route values. An empty stream creates no records. |
| Return | Type | Description |
|---|---|---|
Response |
Array | One result per processed item, containing returned record fields and Flowgear.IsSuccess, Flowgear.Message, and Flowgear.Request. Handled record failures return a failed row. |
Creating a Person or Organization requires name. Creating a Lead requires title and either person_id or organization_id. Creating a Note requires content and a linked entity ID exposed by its template.
Update
Updates the record identified by the selected operation's route values using one request per input item. Person and Organization updates use PATCH requests.
| Parameter | Type | Description |
|---|---|---|
Connection |
Connection | Pipedrive CRM Connection used to authenticate the request. |
OperationId |
String | GUID supplied by the selected update template. |
Options |
Object | Declared route and query values. The record ID is used for items that do not supply their own and can be left empty when every item has one. |
Items |
Array | Required stream of single-record update objects. Map body fields directly onto each item, and supply the record's id (and commentId for a note comment) to update a different record per item. An empty stream updates no records. |
| Return | Type | Description |
|---|---|---|
Response |
Array | One result per processed item, containing returned record fields and Flowgear.IsSuccess, Flowgear.Message, and Flowgear.Request. Handled record failures return a failed row. |
Delete
Deletes the record identified by Options, or one record per item named by the item's route values. The Node sends no request body.
| Parameter | Type | Description |
|---|---|---|
Connection |
Connection | Pipedrive CRM Connection used to authenticate the request. |
OperationId |
String | GUID supplied by the selected delete template. |
Options |
Object | Route values identifying the record to delete. Required when Items is not connected; otherwise used for items that do not supply their own. |
Items |
Array | Optional records naming the record to delete in id (and commentId for a note comment). Other fields are ignored and nothing is sent as a body. The whole item is copied into Flowgear.Request. Without Items, the operation runs once. An empty connected stream performs no deletion. |
| Return | Type | Description |
|---|---|---|
Response |
Array | Delete results with Flowgear.IsSuccess, Flowgear.Message, and Flowgear.Request, plus the selected operation's returned data. Without Items, Flowgear.Request contains the supplied Options. |
To update or delete different records in one step, supply each record's route values on its item, as described in Record Values on Items.
Record Values on Items
Create, Update and Delete let each item name the record it targets. This lets one step update, delete or comment on many different records without a For Each.
- The route values are the selected template's path values:
id, pluscommentIdfor note comments. - An item's value applies to that item's request only. Items that leave it out, or set it to
null, use the value inOptions, so you can leave theOptionsrecord empty when every item has its own. WithoutItems,Optionsmust still hold every required route value. - These values select the record only and are sent in the URL, never in the body.
Flowgear.Requeststill shows the whole item. - A route value must be text or a number that matches the template's type. For example, a Lead
idmust be a UUID and a Noteidmust be a number. If it is missing from both the item andOptions, is empty, is an object or a list, or has the wrong type, that item returnsFlowgear.IsSuccessset tofalse. Pipedrive is not called for that item, and the remaining items still run. This applies to the first item too. - Templates list these values under
Itemswith a sample but no value. Refresh the template in existingCreate,UpdateandDeletesteps to see them. - If the items in an existing step already contain
idorcommentId, those values now select the record. Before this change,CreateandUpdatesent them in the body as extra fields, andDeleteitems were only copied intoFlowgear.Request, so every item used the record inOptions. Remove the field from the mapping to keep using the record inOptions.
Usage Notes
- Use only the route and query fields exposed by the selected template. Unknown options and operations from a different Method are rejected. The Node manages
start,limit, andcursor. Do not add these pagination controls toOptions. - Templates describe the supported operations without reading your account's records. Template availability does not prove that your account has permission to execute an operation.
- Map arrays of strings or integers as CSV strings. For example, Lead
label_idscontains comma-separated UUIDs, while Person and Organizationlabel_idscontains comma-separated integer IDs. Contact query options such asidsandinclude_fieldsalso use CSV. The Node converts these values to the provider's required format and rejects invalid UUIDs or integers. - Keep object arrays structured, including Person emails and phone numbers. Organization addresses also retain their structured form.
- Account-specific
custom_fieldsobjects are preserved in requests and responses, but their child fields are absent from fixed templates. Define the child metadata in your Workflow when mapping these fields. The Node does not discover your account's custom field definitions. - Lead query, create, and update responses include nullable
archive_timeandarchive_reasonfields.archive_timeis a date-time string. Regenerate existing templates when you need these response fields. - The first query page or mutation request executes when the Node starts. Later pages and input items are processed as the response stream is consumed.
- Check
Flowgear.IsSuccessfor each mutation result. Handled provider record errors and body-validation errors on later items produce failed rows and allow subsequent items to continue. Invalid first-item input, authentication or permission failures, transport failures, and server errors stop the Node. A missing or invalid route value is the exception: it returns a failed row, even on the first item. - The Node makes bounded retries for token renewal and rate limiting. It does not automatically replay writes after an ambiguous timeout or server failure. Check Pipedrive before retrying a write that may already have succeeded.
- Deal, product, activity, pipeline, and stage CRUD operations are outside this Node's supported surface. Generic search, files, mail, projects, tasks, administration, webhooks, and API-key authentication are also unsupported.
Examples
Create a Person, then create a linked Lead
- Select the
Createtemplate for adding a Person and supply the following object throughItems:
{
"name": "Example Contact"
}
- Check the Person result's
Flowgear.IsSuccessand retain its returnedid. - Select the
Createtemplate for adding a Lead and map the returned Person ID intoperson_id. For example, if the Person ID is123, supply:
{
"title": "Example integration enquiry",
"person_id": 123
}
- You can check the Lead result's
Flowgear.IsSuccessbefore using its returned ID in later steps.
You can use the same pattern with an Organization and the Lead's organization_id. To associate a new Person with an existing Organization, map the Organization ID into the Person's org_id field.