Get a weekly Pipedrive pipeline report with deals added, won and lost

Every Monday: open Pipedrive deal value by stage, and the deals added, won and lost last week, with the reasons for the losses.

Runs
Mondays at 8:00
Posts
Report card

From your apps to your board

How the skill works: your agent reads stages from Pipedrive; pipeline from What you tell it, mondays at 8:00, and gives you report card and the report in the chat.

Reads

  • PipedriveStages
  • What you tell itPipeline
reads
Your agentClaude Code, Codex, Cursor or GeminiMondays at 8:00
posts

You get

  • Report cardOn your board, updated in place every run
  • The report in the chatEvery run, with or without Briefkin

What you get

  • Open pipeline by stage: deal count and value.
  • Added last week: count and value.
  • Won: deals and value.
  • Lost: deals, value and the reasons, grouped.
  • One line on where the pipeline is thin.

The card on the right is a sample. Yours shows your own numbers and updates in place every run.

What lands on your board

AcmePipedrive weekly pipeline report · Claude Code

$412,600 open pipeline, 3 deals won for $46,800

11 deals added ($58,900), 3 won ($46,800) and 2 lost ($21,000), both on price. Negotiation holds only 4 deals.

StageDealsValue
Qualified18$96,400
Contact made14$88,200
Demo scheduled9$71,500
Proposal sent7$94,300
Negotiation4$62,200
Total open52$412,600
Added$58,900
Won$46,800
Lost$21,000
Done
An example with made-up numbers. Your agent posts your real ones.

What it does

Pipedrive's pipeline view shows where deals sit today, not what happened last week. To answer "how many did we add, how many did we win, and why did we lose the others", someone builds an Insights report or exports to a sheet, and the Monday meeting starts five minutes late.

The agent reads the pipeline through the Pipedrive API before the meeting: open value by stage, deals added, won deals with their value, and lost deals with the reason someone typed in. One line at the end says where the pipeline is thin.

How it works

  1. 1Read the stages

    GET /api/v2/stages?pipeline_id=<id> for each stage's id, name and order_nr, so the report follows the board from left to right.

  2. 2Sum open deals by stage

    GET /api/v2/deals?status=open&pipeline_id=<id>&limit=500, following additional_data.next_cursor. Sum value per stage_id, converting other currencies to your default one.

  3. 3Find deals added last week

    GET /api/v2/deals?pipeline_id=<id>&sort_by=add_time&sort_direction=desc and read until add_time is before last Monday. Count them and sum their value.

  4. 4Find wins and losses

    GET /api/v2/deals?status=won,lost&pipeline_id=<id>&updated_since=<last Monday> and keep deals whose won_time or lost_time falls in last week. Read lost_reason for each loss.

  5. 5

    5Write the report

    Open value and deal count by stage, then added, won and lost with values, the loss reasons grouped, and one line on the thinnest stage.

  6. Post it to the board

    With BRIEFKIN_TOKEN set, the agent sends the result as one card that updates in place every run. Without it, you get the report in the chat.

Install and run it

Pick your agent, where the data comes from and how to schedule it; the commands below follow.

Agent
Data
Schedule
  1. Install the skill

    One command. It puts the SKILL.md in ~/.claude/skills and in ~/.agents/skills, which Codex, Cursor, Gemini CLI, Copilot CLI and OpenCode read too.

    shellcurl -fsSL https://briefkin.dev/skills/pipedrive-weekly-pipeline-report/install | sh
  2. Run it

    Ask Claude Code:

    promptRun the pipedrive-weekly-pipeline-report skill

    Or paste the prompt instead of installing:

    promptUsing the Pipedrive API v2, report on my pipeline for last week (Monday to Sunday). List the pipeline's stages in order, then sum open deals (status=open) by stage with count and value. Find deals added last week (sort by add_time), and deals won or lost last week (status won,lost with updated_since, then check won_time and lost_time), with the lost_reason for each loss. Show open value by stage, added, won and lost with counts and values, group the loss reasons, and end with one line on the thinnest stage.
  3. Put it on a schedule

    Mondays at 8:00, from cron on any machine where Claude Code is signed in:

    crontab0 8 * * 1 claude -p "Run the pipedrive-weekly-pipeline-report skill"

    Add it with crontab -e. A laptop asleep at that time runs it when it wakes if you use launchd or Task Scheduler instead; GitHub Actions works for the API route.

  4. Send it to your board

    Connect Briefkin once with curl -fsSL https://briefkin.dev/install | sh and every run lands on your board as a report card. How setup works

View the SKILL.mdRaw file
SKILL.md---
name: pipedrive-weekly-pipeline-report
description: "Every Monday: open Pipedrive deal value by stage, and the deals added, won and lost last week, with the reasons for the losses. Use when the user asks for this, or when it runs on a schedule."
---

# Pipedrive weekly pipeline report

Every Monday: open Pipedrive deal value by stage, and the deals added, won and lost last week, with the reasons for the losses.

Pipedrive's pipeline view shows where deals sit today, not what happened last week. To answer "how many did we add, how many did we win, and why did we lose the others", someone builds an Insights report or exports to a sheet, and the Monday meeting starts five minutes late.

The agent reads the pipeline through the Pipedrive API before the meeting: open value by stage, deals added, won deals with their value, and lost deals with the reason someone typed in. One line at the end says where the pipeline is thin.

## Two ways to get the data

Use the API or MCP route when you have an MCP server, a CLI or an API token for the app. Otherwise, if you can drive a browser the user is signed in to (Claude in Chrome, a Playwright or Chrome DevTools MCP server), use the browser route. Say which one you used.

## Route A: API or MCP server

### What you need

- A Pipedrive user who can see the pipeline's deals (visibility settings apply to the API too).
- Pipedrive's official MCP server (`https://mcp.pipedrive.ai/mcp`, OAuth), which can also edit records, so the skill only reads; or your API token from Personal preferences > API in `PIPEDRIVE_API_TOKEN`, sent in the `x-api-token` header.

If something is missing, say what and stop; do not invent numbers.

### Steps

1. **Read the stages** (Pipedrive): `GET /api/v2/stages?pipeline_id=<id>` for each stage's `id`, `name` and `order_nr`, so the report follows the board from left to right.
2. **Sum open deals by stage** (Pipedrive): `GET /api/v2/deals?status=open&pipeline_id=<id>&limit=500`, following `additional_data.next_cursor`. Sum `value` per `stage_id`, converting other currencies to your default one.
3. **Find deals added last week** (Pipedrive): `GET /api/v2/deals?pipeline_id=<id>&sort_by=add_time&sort_direction=desc` and read until `add_time` is before last Monday. Count them and sum their value.
4. **Find wins and losses** (Pipedrive): `GET /api/v2/deals?status=won,lost&pipeline_id=<id>&updated_since=<last Monday>` and keep deals whose `won_time` or `lost_time` falls in last week. Read `lost_reason` for each loss.
5. **Write the report**: Open value and deal count by stage, then added, won and lost with values, the loss reasons grouped, and one line on the thinnest stage.

## Route B: the browser

### What you need

- Signed in to Pipedrive with a user who can see the pipeline's deals; visibility groups limit what the list shows.

If something is missing, say what and stop; do not invent numbers.

### Steps

Start at https://app.pipedrive.com/pipeline. The user is signed in already; never type passwords or codes, and ask if a sign-in page appears.

1. **Read the board**: The URL opens the pipeline view; pick the pipeline from the dropdown at the top left and set the filter to **Everyone** so all open deals show. Each column header carries the stage name, deal count and total value; read them left to right.
2. **Count what was added**: Open **Deals** list view, filter **Add time** to last week (Monday to Sunday) in this pipeline, and read the count and the Value total at the bottom of the list.
3. **Count wins and losses**: Change the filter to **Status is won** with **Won time** last week, then **Status is lost** with **Lost time** last week. Add the **Lost reason** column and read it for each loss. Or build the same in **Insights** as a Deal performance report by won time and lost time.
4. **Write the report**: Open value and deal count by stage, then added, won and lost with values, the loss reasons grouped, and one line on the thinnest stage. Values shown are in the company's default currency.

Note: The pipeline view already totals each stage, so this route is quick. The list view caps a page at 500 deals; a pipeline with thousands of deals is easier through the API or an Insights report. Filters on won time and lost time match the API fields, so both routes agree.

## The report

- **Open pipeline** by stage: deal count and value.
- **Added** last week: count and value.
- **Won**: deals and value.
- **Lost**: deals, value and the reasons, grouped.
- One line on where the pipeline is thin.

## Post it to Briefkin

When `BRIEFKIN_TOKEN` is set, or `~/.config/briefkin/env` exists (the installer from https://briefkin.dev/docs writes it), also send the result to the user's Briefkin board as one card. Keep the `item_key` the same on every run so the card updates in place, use a new `event_id` per run, and put today's real numbers in place of the example ones. If the request fails, say so once and carry on.

```bash
[ -n "${BRIEFKIN_TOKEN:-}" ] || . ~/.config/briefkin/env
curl -sS -X POST "${BRIEFKIN_URL:-https://briefkin.dev}/v1/events" \
  -H "authorization: Bearer $BRIEFKIN_TOKEN" \
  -H "content-type: application/json" \
  -d @- <<'JSON'
{
  "v": 1,
  "event_id": "pipedrive-weekly-pipeline-report/<date of this run, e.g. 2026-10-16>",
  "item_key": "pipedrive-weekly-pipeline-report",
  "project": "Acme",
  "source": "Pipedrive weekly pipeline report skill",
  "kind": "update",
  "title": "$412,600 open pipeline, 3 deals won for $46,800",
  "summary": "**11 deals added** ($58,900), **3 won** ($46,800) and **2 lost** ($21,000), both on price. Negotiation holds only 4 deals.",
  "widget": [
    {
      "type": "Table",
      "props": {
        "columns": [
          "Stage",
          "Deals",
          "Value"
        ],
        "align": [
          "left",
          "right",
          "right"
        ],
        "rows": [
          [
            "Qualified",
            18,
            "$96,400"
          ],
          [
            "Contact made",
            14,
            "$88,200"
          ],
          [
            "Demo scheduled",
            9,
            "$71,500"
          ],
          [
            "Proposal sent",
            7,
            "$94,300"
          ],
          [
            "Negotiation",
            4,
            "$62,200"
          ],
          [
            "Total open",
            52,
            "$412,600"
          ]
        ]
      }
    },
    {
      "type": "Grid",
      "props": {
        "columns": 3
      },
      "children": [
        {
          "type": "Stat",
          "props": {
            "label": "Added",
            "value": 58900,
            "prefix": "$"
          }
        },
        {
          "type": "Stat",
          "props": {
            "label": "Won",
            "value": 46800,
            "prefix": "$",
            "tone": "ok"
          }
        },
        {
          "type": "Stat",
          "props": {
            "label": "Lost",
            "value": 21000,
            "prefix": "$",
            "tone": "bad"
          }
        }
      ]
    }
  ]
}
JSON
```

Widgets come from the Briefkin catalog (https://briefkin.dev/v1/catalog). Without a token, just give the user the report.

## Run it on a schedule

Suggested: Mondays at 8:00 (`0 8 * * 1`). From cron, with the agent signed in on that machine:

```bash
0 8 * * 1 claude -p "Run the pipedrive-weekly-pipeline-report skill"
# Codex: codex exec, Gemini CLI: gemini -p, Copilot CLI: copilot -p, OpenCode: opencode run
```

Or use the agent's own scheduler (Claude Code routines, Codex automations, Claude or ChatGPT scheduled tasks): https://briefkin.dev/skills/pipedrive-weekly-pipeline-report#schedule

Source: https://briefkin.dev/skills/pipedrive-weekly-pipeline-report

What your agent needs

  • A Pipedrive user who can see the pipeline's deals (visibility settings apply to the API too).

  • Pipedrive's official MCP server (https://mcp.pipedrive.ai/mcp, OAuth), which can also edit records, so the skill only reads; or your API token from Personal preferences > API in PIPEDRIVE_API_TOKEN, sent in the x-api-token header.

Connecting Pipedrive

  1. Pipedrive MCP server, Pipedrive's official remote server at https://mcp.pipedrive.ai/mcp, signed in with OAuth, with usage limits that depend on your plan. It's in Claude's connector directory, and Pipedrive says it works with any assistant that supports custom MCP connections: in Claude Code, claude mcp add --transport http pipedrive https://mcp.pipedrive.ai/mcp, and the same URL in Codex and Cursor (overview). It searches and reads deals, people, organizations, activities and notes, and can also create and update them.
  2. API with your API token. Find it under Personal preferences > API (app.pipedrive.com/settings/api), store it in PIPEDRIVE_API_TOKEN with PIPEDRIVE_COMPANY_DOMAIN, and send it in the x-api-token header.
  3. OAuth app. For a shared or unattended setup, a Pipedrive app can request read-only scopes such as deals:read, activities:read and contacts:read.

The API token and the MCP server act with your full user rights (MCP changes do show up in the change log); read-only OAuth scopes are the way to keep a scheduled report from editing anything.

Questions

Does it cover more than one pipeline?

Yes. Run it once per pipeline_id and post one card each, or leave the pipeline filter off and group by pipeline first. Most teams want one card per sales motion, for example new business and renewals.

Why are some lost reasons empty?

Pipedrive only has a reason when someone picked or typed one when marking the deal lost. The report lists those as "no reason given". If that is most of them, make the lost reason required in your Pipedrive settings.

Do I need Briefkin to use the Pipedrive weekly pipeline report skill?

No. The skill runs with your own agent and gives you the report in the chat. With a Briefkin token set, each run also posts it to your board as a report card, so you can glance at it instead of asking again.

Which agents can run it?

Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot CLI, OpenCode, Windsurf and Amp all read SKILL.md files. The install command puts it in ~/.claude/skills and ~/.agents/skills, where they look. ChatGPT, the Claude app and Grok take the prompt instead. Pick your agent under "Install and run it" and the commands change to match.

Can it work without an API or MCP server, from my browser?

Yes. Switch the data source to "Your browser" and the steps change to the Pipedrive pages themselves: the agent opens app.pipedrive.com/pipeline in a browser you are signed in to and reads the numbers off the page. Claude Code, Codex, Cursor, Claude app and ChatGPT can drive a browser out of the box; Gemini CLI, Copilot CLI and OpenCode need a Playwright or Chrome DevTools MCP server first. It is slower than the API and needs you signed in, so it suits a report you run by hand or from a scheduler on your own computer.

Read this report on your board, not in a chat log

Skills are free to use with any agent. Briefkin is where their results land: one board for every report, number and question your agents send, with a ping when something needs you.

Free during the open beta. No card.