---
name: pp-pipedrive
description: "Printing Press CLI for Pipedrive."
author: "Deb Mukherjee"
license: "Apache-2.0"
argument-hint: "<command> [args] | install cli|mcp"
allowed-tools: "Read Bash"
metadata:
  openclaw:
    requires:
      bins:
        - pipedrive-pp-cli
    install:
      - kind: go
        bins: [pipedrive-pp-cli]
        module: github.com/mvanhorn/printing-press-library/library/sales-and-crm/pipedrive/cmd/pipedrive-pp-cli
---
<!-- GENERATED FILE — DO NOT EDIT.
     This file is a verbatim mirror of library/sales-and-crm/pipedrive/SKILL.md,
     regenerated post-merge by tools/generate-skills/. Hand-edits here are
     silently overwritten on the next regen. Edit the library/ source instead.
     See the repository agent guide, section "Generated artifacts: registry.json, cli-skills/". -->

# Pipedrive — Printing Press CLI

## Prerequisites: Install the CLI

This skill drives the `pipedrive-pp-cli` binary. **You must verify the CLI is installed before invoking any command from this skill.** If it is missing, install it first:

1. Install via the Printing Press installer. It defaults binaries to `$HOME/.local/bin` on macOS/Linux and `%LOCALAPPDATA%\Programs\PrintingPress\bin` on Windows:
   ```bash
   npx -y @mvanhorn/printing-press-library install pipedrive --cli-only
   ```
2. Verify: `pipedrive-pp-cli --version`
3. Ensure the reported install directory is on `$PATH` for the agent/runtime that will invoke this skill.

If the `npx` install fails (no Node, offline, etc.), fall back to a direct Go install (requires Go 1.26.6 or newer). This installs into `$GOPATH/bin` (default `$HOME/go/bin`), so add that directory to `$PATH` instead:

```bash
go install github.com/mvanhorn/printing-press-library/library/sales-and-crm/pipedrive/cmd/pipedrive-pp-cli@latest
```

If `--version` reports "command not found" after install, the runtime cannot see the binary directory on `$PATH`. Do not proceed with skill commands until verification succeeds.



## Command Reference

**activity-fields** — Activity fields represent different fields that an activity has.

- `pipedrive-pp-cli activity-fields` — Returns all activity fields.

**activity-types** — Activity types represent different kinds of activities that can be stored. Each activity type is presented to the user with an icon and a name. Additionally, a color can be defined (not implemented in the Pipedrive app as of today). Activity types are linked to activities via `ActivityType.key_string = Activity.type`. The `key_string` will be generated by the API based on the given name of the activity type upon creation, and cannot be changed. Activity types should be presented to the user in an ordered manner, using the `ActivityType.order_nr` value.

- `pipedrive-pp-cli activity-types add` — Adds a new activity type.
- `pipedrive-pp-cli activity-types delete` — Marks an activity type as deleted.
- `pipedrive-pp-cli activity-types get` — Returns all activity types.
- `pipedrive-pp-cli activity-types update` — Updates an activity type.

**billing** — Billing is responsible for handling your subscriptions, payments, plans and add-ons.

- `pipedrive-pp-cli billing` — Returns the add-ons for a single company.

**call-logs** — Call logs describe the outcome of a phone call managed by an integrated provider. Since these logs are also considered activities, they can be associated with a deal or a lead, a person and/or an organization. Call logs do differ from other activities, as they only receive the information needed to describe the phone call.

- `pipedrive-pp-cli call-logs add` — Adds a new call log.
- `pipedrive-pp-cli call-logs delete` — Deletes a call log. If there is an audio recording attached to it, it will also be deleted.
- `pipedrive-pp-cli call-logs get` — Returns details of a specific call log.
- `pipedrive-pp-cli call-logs get-user` — Returns all call logs assigned to a particular user.

**channels** — Channels API allows you to integrate your existing messaging channels into Pipedrive through [Messaging app extension](https://pipedrive.readme.io/docs/messaging-app-extension). It enables you to manage and interact with the channel’s conversations, participants and messages inside Pipedrive Messaging inbox: get the historical conversation, receive and send new messages. These endpoints are accessible only through **Messengers integration** OAuth scope together with Messaging manifest in building the [Messaging app extension](https://pipedrive.readme.io/docs/messaging-app-extension).

- `pipedrive-pp-cli channels add` — Adds a new messaging channel, only admins are able to register new channels.
- `pipedrive-pp-cli channels delete` — Deletes an existing messenger’s channel and all related entities (conversations and messages).
- `pipedrive-pp-cli channels receive-message` — Adds a message to a conversation.

**currencies** — Supported currencies which can be used to represent the monetary value of a deal, or a value of any monetary type custom field. The `Currency.code` field must be used to point to a currency. `Currency.code` is the ISO-4217 format currency code for non-custom currencies. You can differentiate custom and non-custom currencies using the `is_custom_flag` property. For custom currencies, it is intended that the formatted sums are displayed in the UI using the following format: [sum][non-breaking space character][currency.symbol], for example: 500 users. Custom currencies cannot be added or removed via the API yet — rather the admin users of the account must configure them from the Pipedrive app.

- `pipedrive-pp-cli currencies` — Returns all supported currencies in given account which should be used when saving monetary values with other objects.

**deal-fields** — Deal fields represent the near-complete schema for a deal in the context of the company of the authorized user. Each company can have a different schema for their deals, with various custom fields. In the context of using deal fields as a schema for defining the data fields of a deal, it must be kept in mind that some types of custom fields can have additional data fields which are not separate deal fields per se. Such is the case with monetary, daterange and timerange fields – each of these fields will have one additional data field in addition to the one presented in the context of deal fields. For example, if there is a monetary field with the key `ffk9s9` stored on the account, `ffk9s9` would hold the numeric value of the field, and `ffk9s9_currency` would hold the ISO currency code that goes along with the numeric value. To find out which data fields are available, fetch one deal and list its keys.

- `pipedrive-pp-cli deal-fields add` — Adds a new deal field. For more information, see the tutorial for adding a new custom field .
- `pipedrive-pp-cli deal-fields delete` — Marks multiple deal fields as deleted.
- `pipedrive-pp-cli deal-fields delete-dealfields` — Marks a field as deleted. For more information, see the tutorial for deleting a custom field .
- `pipedrive-pp-cli deal-fields get` — Returns data about all deal fields.
- `pipedrive-pp-cli deal-fields get-dealfields` — Returns data about a specific deal field.
- `pipedrive-pp-cli deal-fields update` — Updates a deal field. For more information, see the tutorial for updating custom fields' values .

**deals** — Deals represent ongoing, lost or won sales to an organization or to a person. Each deal has a monetary value and must be placed in a stage. Deals can be owned by a user, and followed by one or many users. Each deal consists of standard data fields but can also contain a number of custom fields. The custom fields can be recognized by long hashes as keys. These hashes can be mapped against `DealField.key`. The corresponding label for each such custom field can be obtained from `DealField.name`.

- `pipedrive-pp-cli deals get-archived` — Returns all archived deals.
- `pipedrive-pp-cli deals get-archived-summary` — Returns a summary of all archived deals.
- `pipedrive-pp-cli deals get-archived-timeline` — Returns archived open and won deals, grouped by a defined interval of time set in a date-type dealField (`field_key`)
- `pipedrive-pp-cli deals get-summary` — Returns a summary of all not archived deals.
- `pipedrive-pp-cli deals get-timeline` — Returns not archived open and won deals

**files** — Files are documents of any kind (images, spreadsheets, text files, etc.) that are uploaded to Pipedrive, and usually associated with a particular deal, person, organization, product, note or activity. Remote files can only be associated with a particular deal, person or organization. Note that the API currently does not support downloading files although it lets you retrieve a file’s meta-info along with a URL which can be used to download the file by using a standard HTTP GET request.

- `pipedrive-pp-cli files add` — Lets you upload a file and associate it with a deal, person, organization, activity, product or lead.
- `pipedrive-pp-cli files add-and-link-it` — Creates a new empty file in the remote location (`googledrive`) that will be linked to the item you supply.
- `pipedrive-pp-cli files delete` — Marks a file as deleted. After 30 days, the file will be permanently deleted.
- `pipedrive-pp-cli files get` — Returns data about all files.
- `pipedrive-pp-cli files get-id` — Returns data about a specific file.
- `pipedrive-pp-cli files link-to-item` — Links an existing remote file (`googledrive`) to the item you supply.
- `pipedrive-pp-cli files update` — Updates the properties of a file.

**filters** — Each filter is essentially a set of data validation conditions. A filter of the same kind can be applied when fetching a list of deals, leads, persons, organizations or products in the context of a pipeline. Filters are limited to a maximum of 16 conditions. When applied, only items matching the conditions of the filter are returned. Detailed definitions of filter conditions and additional functionality is not yet available.

- `pipedrive-pp-cli filters add` — Adds a new filter, returns the ID upon success.
- `pipedrive-pp-cli filters delete` — Marks multiple filters as deleted.
- `pipedrive-pp-cli filters delete-id` — Marks a filter as deleted.
- `pipedrive-pp-cli filters get` — Returns data about all filters.
- `pipedrive-pp-cli filters get-helpers` — Returns all supported filter helpers.
- `pipedrive-pp-cli filters get-id` — Returns data about a specific filter. Note that this also returns the condition lines of the filter.
- `pipedrive-pp-cli filters update` — Updates an existing filter.

**goals** — Goals help your team meet your sales targets. There are three types of goals - company, team and user.

- `pipedrive-pp-cli goals add` — Adds a new goal. Along with adding a new goal, a report is created to track the progress of your goal.
- `pipedrive-pp-cli goals delete` — Marks a goal as deleted.
- `pipedrive-pp-cli goals get` — Returns data about goals based on criteria.
- `pipedrive-pp-cli goals update` — Updates an existing goal.

**lead-fields** — Lead fields represent the near-complete schema for a lead in the context of the company of the authorized user. Each company can have a different schema for their leads, with various custom fields. In the context of using lead fields as a schema for defining the data fields of a lead, it must be kept in mind that some types of custom fields can have additional data fields which are not separate lead fields per se. Such is the case with monetary, daterange and timerange fields – each of these fields will have one additional data field in addition to the one presented in the context of lead fields. For example, if there is a monetary field with the key `ffk9s9` stored on the account, `ffk9s9` would hold the numeric value of the field, and `ffk9s9_currency` would hold the ISO currency code that goes along with the numeric value. To find out which data fields are available, fetch one lead and list its keys.

- `pipedrive-pp-cli lead-fields` — Returns data about all lead fields.

**lead-labels** — Lead labels allow you to visually categorize your leads. There are three default lead labels: hot, cold, and warm, but you can add as many new custom labels as you want.

- `pipedrive-pp-cli lead-labels add` — Creates a lead label.
- `pipedrive-pp-cli lead-labels delete` — Deletes a specific lead label.
- `pipedrive-pp-cli lead-labels get` — Returns details of all lead labels. This endpoint does not support pagination and all labels are always returned.
- `pipedrive-pp-cli lead-labels update` — Updates one or more properties of a lead label. Only properties included in the request will be updated.

**lead-sources** — A lead source indicates where your lead came from. Currently, these are the possible lead sources: `Manually created`, `Deal`, `Web forms`, `Prospector`, `Leadbooster`, `Live chat`, `Import`, `Website visitors`, `Workflow automation`, and `API`. Lead sources are pre-defined and cannot be edited. Please note that leads sourced from the Chatbot feature are assigned the value `Leadbooster`. Please also note that this list is not final and new sources may be added as needed.

- `pipedrive-pp-cli lead-sources` — Returns all lead sources. Please note that the list of lead sources is fixed, it cannot be modified.

**leads** — Leads are potential deals stored in Leads Inbox before they are archived or converted to a deal. Each lead needs to be named (using the `title` field) and be linked to a person or an organization. In addition to that, a lead can contain most of the fields a deal can (such as `value` or `expected_close_date`).

- `pipedrive-pp-cli leads add` — Creates a lead. A lead always has to be linked to a person or an organization or both.
- `pipedrive-pp-cli leads delete` — Deletes a specific lead.
- `pipedrive-pp-cli leads get` — Returns multiple not archived leads. Leads are sorted by the time they were created, from oldest to newest.
- `pipedrive-pp-cli leads get-archived` — Returns multiple archived leads. Leads are sorted by the time they were created, from oldest to newest.
- `pipedrive-pp-cli leads get-id` — Returns details of a specific lead.
- `pipedrive-pp-cli leads search` — Searches all leads by title, notes and/or custom fields.
- `pipedrive-pp-cli leads update` — Updates one or more properties of a lead. Only properties included in the request will be updated.

**legacy-teams** — Legacy teams allow you to form groups of users withing the organization for more efficient management. Previously Legacy Teams were called Teams and occupied the `v1/teams*` path. They're being deprecated because we are preparing for an upgraded version of the Teams API, which requires migrating the current functionality to a new path URL `v1/legacyTeams*`. The functionality and [OAuth scopes](https://pipedrive.readme.io/docs/marketplace-scopes-and-permissions-explanations) of all the Teams API endpoints will remain the same.

- `pipedrive-pp-cli legacy-teams add-team` — Adds a new team to the company and returns the created object.
- `pipedrive-pp-cli legacy-teams get-team` — Returns data about a specific team.
- `pipedrive-pp-cli legacy-teams get-teams` — Returns data about teams within the company.
- `pipedrive-pp-cli legacy-teams get-user-teams` — Returns data about all teams which have the specified user as a member.
- `pipedrive-pp-cli legacy-teams update-team` — Updates an existing team and returns the updated object.

**mailbox** — Mailbox was designed to be the email control hub inside Pipedrive. Pipedrive supports all major providers (including Gmail, Outlook and also custom IMAP/SMTP). There are 2 options for syncing user emails: 2-way sync: Mail Connection is established with the mail provider (example Gmail). There can be only 1 active Mail Connection per user in company. 1-way sync: SmartBCC feature which stores the copies of email messages to Pipedrive by adding the SmartBCC specific address to mail recipients.

- `pipedrive-pp-cli mailbox delete-mail-thread` — Marks a mail thread as deleted.
- `pipedrive-pp-cli mailbox get-mail-message` — Returns data about a specific mail message.
- `pipedrive-pp-cli mailbox get-mail-thread` — Returns a specific mail thread.
- `pipedrive-pp-cli mailbox get-mail-thread-messages` — Returns all the mail messages inside a specified mail thread.
- `pipedrive-pp-cli mailbox get-mail-threads` — Returns mail threads in a specified folder ordered by the most recent message within.
- `pipedrive-pp-cli mailbox update-mail-thread-details` — Updates the properties of a mail thread.

**meetings** — Meetings API allows integrating video calling apps into Pipedrive through [Video Calling App extension](https://pipedrive.readme.io/docs/video-calling-app-extension). It enables you to manage and interact with your video calls and meetings inside Pipedrive. These endpoints are accessible only through apps with video calls integration [OAuth scope](https://pipedrive.readme.io/docs/marketplace-scopes-and-permissions-explanations).

- `pipedrive-pp-cli meetings delete-user-provider-link` — A video calling provider must call this endpoint to remove the link between a user and the installed video calling app.
- `pipedrive-pp-cli meetings save-user-provider-link` — A video calling provider must call this endpoint after a user has installed the video calling app so that the new

**note-fields** — Note fields represent different fields that a note has.

- `pipedrive-pp-cli note-fields` — Returns data about all note fields.

**notes** — Notes are pieces of textual (HTML-formatted) information that can be attached to deals, persons and organizations. Notes are usually displayed in the UI in chronological order – newest first – and in context with other updates regarding the item they are attached to. The maximum note size is approximately 100,000 characters (or 100KB per note).

- `pipedrive-pp-cli notes add` — Adds a new note.
- `pipedrive-pp-cli notes delete` — Deletes a specific note.
- `pipedrive-pp-cli notes get` — Returns all notes.
- `pipedrive-pp-cli notes get-id` — Returns details about a specific note.
- `pipedrive-pp-cli notes update` — Updates a note.

**oauth** — Using OAuth 2.0 is necessary for developing apps that are available in the Pipedrive Marketplace. Authorization via OAuth 2.0 is a well-known and stable way to get fine-grained access to an API. To retrieve OAuth2 tokens you should send requests to the `https://oauth.pipedrive.com` domain. After registering the app, you must add the necessary server-side logic to your app to establish the OAuth flow. Please read more about authorization step on the [Pipedrive Developers page](https://pipedrive.readme.io/docs/marketplace-oauth-authorization).

- `pipedrive-pp-cli oauth authorize` — Authorize a user by redirecting them to the Pipedrive OAuth authorization page and request their permissions to act on
- `pipedrive-pp-cli oauth get-tokens` — After the customer has confirmed the app installation
- `pipedrive-pp-cli oauth refresh-tokens` — The `access_token` has a lifetime.

**organization-fields** — Organization fields represent the near-complete schema for an organization in the context of the company of the authorized user. Each company can have a different schema for their organizations, with various custom fields. In the context of using organization fields as a schema for defining the data fields of an organization, it must be kept in mind that some types of custom fields can have additional data fields which are not separate organization fields per se. Such is the case with monetary, daterange and timerange fields – each of these fields will have one additional data field in addition to the one presented in the context of organization fields. For example, if there is a monetary field with the key `ffk9s9` stored on the account, `ffk9s9` would hold the numeric value of the field, and `ffk9s9_currency` would hold the ISO currency code that goes along with the numeric value. To find ou