Pipedrive CRM v2
Provides integration with Pipedrive CRM to query and manage persons, organizations, leads, notes, and related records in your Workflows. The Node uses OAuth authentication and is available on Cloud Runtime Clusters.
Revision History
0.0.0.9 - Initial release.
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. The same values apply to every input item. |
Items |
Array | Required stream of single-record request objects. Map the selected template's body fields directly onto each item. 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, including the required record ID. The same route applies to every input item. |
Items |
Array | Required stream of single-record update objects. Map body fields directly onto each 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. 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 | Required route values identifying the record to delete. The same route applies to every input item. |
Items |
Array | Optional correlation records copied into Flowgear.Request. These records do not override route IDs and are never sent as a body. 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, invoke the Node separately with each record's route ID in Options. Supplying different IDs in Items does not change the route.
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. - 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.