Pipelines

A pipeline tracks deals from first contact to closed. Each stage of a pipeline is a contact list: the stage takes its name from the list, and the contacts in the list are the deals in that stage. To move a deal to another stage, move the contact to that stage's list.

In routes and fields, a pipeline is a board and a stage is a list. Pipeline webhooks, such as contact.pipeline.stage.entered, are listed in Webhooks.

Routes

Method Route Scope What it does
GET /boards/public/boards contacts:read List your pipelines
POST /boards/public/boards contacts:write Create a pipeline
PUT /boards/public/boards/{board_id} contacts:write Rename a pipeline or replace its stages
DELETE /boards/public/boards/{board_id} contacts:write Delete a pipeline
POST /boards/public/boards/{board_id}/lists contacts:write Add a stage
DELETE /boards/public/boards/{board_id}/lists/{list_id} contacts:write Remove a stage

Stage fields

Each entry in a pipeline's lists array is a stage.

Field Type Required Description
list_id string Yes The contact list behind the stage. Create it first with Contact lists.
order integer No The stage's position, from 0.
win_probability number No 0 to 100: the chance a deal in this stage closes. Used for the weighted forecast in the dashboard.
stage_type string No open, won or lost. Empty means open.
stale_after_days integer No 1 to 365. A deal in the stage longer than this is flagged as stale.

A value out of range is clamped: win_probability: 120 is stored as 100 and stale_after_days: 500 as 365. Any other invalid value is stored as null.

List your pipelines

Returns your pipelines newest first, in one response. A pipeline limited to certain teammates in the dashboard is listed only if the user the API key belongs to can see it.

Field Type Required Description
search_term string No Only pipelines whose name contains this text, ignoring case.
limit integer No Maximum pipelines to return. Default: all.
curl https://api-v2.dropcowboy.com/boards/public/boards \
  -H "x-key: $DC_KEY" -H "x-secret: $DC_SECRET"
{
  "data": [
    {
      "_id": "66f2b1c4e8a9d3f1a2b4c6df",
      "board_id": "3028a01c-9f13-4158-a864-2daa70189301",
      "team_id": "cd5cd773-4617-4b28-854d-d3adc74c96d5",
      "name": "Sales pipeline",
      "brand_id": null,
      "shared_across_brands": false,
      "lists": [
        { "list_id": "50bb4bbb-3f86-459a-9761-f8bd7ff12f1b", "order": 0, "sort": "newestFirst", "win_probability": 10, "stage_type": "open", "stale_after_days": 7 },
        { "list_id": "764ff1bd-86e1-49af-8703-2ad22b53f04a", "order": 1, "sort": "newestFirst", "win_probability": 60, "stage_type": "open", "stale_after_days": 14 },
        { "list_id": "e2db9755-0c26-4aae-823a-dfb1b7c05acf", "order": 2, "sort": "newestFirst", "win_probability": 100, "stage_type": "won", "stale_after_days": null }
      ],
      "visible_for_user_id": null,
      "visible_for_user_group_id": null,
      "created_at": 1757491200000,
      "created_by": "fa933d82-485f-43b0-80ab-860121f06980",
      "updated_at": 1759312800000,
      "updated_by": "fa933d82-485f-43b0-80ab-860121f06980",
      "deleted_at": null
    }
  ],
  "meta": { "request_id": "bcce25c4-6b8e-43d8-a1cb-689ddc6bb984" }
}

sort is how the dashboard orders the deals inside a stage. Timestamps are epoch milliseconds.

Create a pipeline

The response is 201 with the new pipeline.

Field Type Required Description
name string No Pipeline name. Default New Bucket Board.
lists array No The stages, using the stage fields.
brand_id string No The brand whose contacts this pipeline holds. Default: your default brand. See List brands.
shared_across_brands boolean No true to accept contacts from every brand. Default false.
curl -X POST https://api-v2.dropcowboy.com/boards/public/boards \
  -H "x-key: $DC_KEY" -H "x-secret: $DC_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Renewals",
    "lists": [
      { "list_id": "c6e0e173-ab7e-45d6-b470-72d593b15f56", "order": 0, "win_probability": 40 },
      { "list_id": "964c9795-8bdd-475a-917a-2ec2727c2cfb", "order": 1, "win_probability": 100, "stage_type": "won" }
    ]
  }'

Rename a pipeline or replace its stages

Send only what you want to change.

Field Type Required Description
name string No New name.
lists array No The full set of stages. This replaces every existing stage.
brand_id string No New brand. Send null for your default brand.
shared_across_brands boolean No true to accept contacts from every brand.

To change one stage's settings, read the pipeline, edit that entry and send the whole lists array back, including each stage's sort.

curl -X PUT https://api-v2.dropcowboy.com/boards/public/boards/3028a01c-9f13-4158-a864-2daa70189301 \
  -H "x-key: $DC_KEY" -H "x-secret: $DC_SECRET" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Customer renewals" }'
{
  "data": {
    "acknowledged": true,
    "modifiedCount": 1,
    "upsertedId": null,
    "upsertedCount": 0,
    "matchedCount": 1
  },
  "meta": { "request_id": "be51cd74-12cd-4cc0-bc58-701d3292564d" }
}

Every change route on this page returns this result.

Delete a pipeline

Removes the pipeline. The contact lists behind its stages, and the contacts in them, are kept.

curl -X DELETE https://api-v2.dropcowboy.com/boards/public/boards/3028a01c-9f13-4158-a864-2daa70189301 \
  -H "x-key: $DC_KEY" -H "x-secret: $DC_SECRET"

The response is the same change result as above.

Add a stage

Adds one stage to the end of the pipeline's lists. Set its order to place it.

Field Type Required Description
list object Yes One stage, using the stage fields.
curl -X POST https://api-v2.dropcowboy.com/boards/public/boards/3028a01c-9f13-4158-a864-2daa70189301/lists \
  -H "x-key: $DC_KEY" -H "x-secret: $DC_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
    "list": {
      "list_id": "1e979536-0ee5-4b32-ae35-80826b24079e",
      "order": 3,
      "stage_type": "lost"
    }
  }'

The response is 201 with the same change result as above.

Remove a stage

Takes the stage off the pipeline. The contact list and its contacts are kept.

curl -X DELETE https://api-v2.dropcowboy.com/boards/public/boards/3028a01c-9f13-4158-a864-2daa70189301/lists/1e979536-0ee5-4b32-ae35-80826b24079e \
  -H "x-key: $DC_KEY" -H "x-secret: $DC_SECRET"

The response is the same change result as above.

Errors

Status When What to do
400 missing parameters: list wasn't sent when adding a stage. Send the stage as a list object.
404 Board not found: the board_id isn't one of your pipelines. Check the id with List your pipelines.

For every other error, see Responses, errors and limits.

Code samples

The requests from this page, ready to copy. Set DC_KEY and DC_SECRET to your API key pair first.

List your pipelines
curl https://api-v2.dropcowboy.com/boards/public/boards \
  -H "x-key: $DC_KEY" -H "x-secret: $DC_SECRET"
Create a pipeline
curl -X POST https://api-v2.dropcowboy.com/boards/public/boards \
  -H "x-key: $DC_KEY" -H "x-secret: $DC_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Renewals",
    "lists": [
      { "list_id": "c6e0e173-ab7e-45d6-b470-72d593b15f56", "order": 0, "win_probability": 40 },
      { "list_id": "964c9795-8bdd-475a-917a-2ec2727c2cfb", "order": 1, "win_probability": 100, "stage_type": "won" }
    ]
  }'
Rename a pipeline or replace its stages
curl -X PUT https://api-v2.dropcowboy.com/boards/public/boards/3028a01c-9f13-4158-a864-2daa70189301 \
  -H "x-key: $DC_KEY" -H "x-secret: $DC_SECRET" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Customer renewals" }'
Delete a pipeline
curl -X DELETE https://api-v2.dropcowboy.com/boards/public/boards/3028a01c-9f13-4158-a864-2daa70189301 \
  -H "x-key: $DC_KEY" -H "x-secret: $DC_SECRET"
Add a stage
curl -X POST https://api-v2.dropcowboy.com/boards/public/boards/3028a01c-9f13-4158-a864-2daa70189301/lists \
  -H "x-key: $DC_KEY" -H "x-secret: $DC_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
    "list": {
      "list_id": "1e979536-0ee5-4b32-ae35-80826b24079e",
      "order": 3,
      "stage_type": "lost"
    }
  }'
Remove a stage
curl -X DELETE https://api-v2.dropcowboy.com/boards/public/boards/3028a01c-9f13-4158-a864-2daa70189301/lists/1e979536-0ee5-4b32-ae35-80826b24079e \
  -H "x-key: $DC_KEY" -H "x-secret: $DC_SECRET"