---
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
