Skip to content
Docs menu

Pipelines

Stage definitions for deals and tickets. One workspace can have many.

Pipelines are scoped per object type. isDefaultpicks which one new records land on when the API caller doesn't specify a pipelineId.

POST/api/pipelines/v2Bearer token

Create a pipeline

Define a new pipeline. Stages are managed through follow-up calls.

Required scopes:deals.write

Request body

NameTypeDescription
namerequiredstringPipeline display name.
objectTyperequiredstringDEAL | TICKET.
isDefaultbooleanMake this the default for its object type.
displayOrderintegerSort order among pipelines.

Request body

JSON
{ "name": "Sales — primary", "objectType": "DEAL", "isDefault": true }

Responses

  • 201 CreatedCreated.
    example
    {
      "id": "pl_2k9d4f…",
      "name": "Sales — primary",
      "objectType": "DEAL",
      "isDefault": true,
      "displayOrder": 0,
      "stages": [
        { "id": "ps_n", "name": "New", "displayOrder": 0 },
        { "id": "ps_c", "name": "Contacted", "displayOrder": 1 }
      ]
    }

Code samples

Shell
curl -X POST https://app.contactfollowup.com/api/pipelines/v2 \
  -H "Authorization: Bearer $HEARTHNOTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Sales — primary", "objectType": "DEAL", "isDefault": true }'
GET/api/pipelines/v2Bearer token

List pipelines

List pipelines, optionally filtered by object type.

Required scopes:deals.read

Query parameters

NameTypeDescription
objectTypestringDEAL | TICKET.

Responses

  • 200 OKPipelines.
    example
    { "pipelines": [{
      "id": "pl_2k9d4f…",
      "name": "Sales — primary",
      "objectType": "DEAL",
      "isDefault": true,
      "displayOrder": 0,
      "stages": [
        { "id": "ps_n", "name": "New", "displayOrder": 0 },
        { "id": "ps_c", "name": "Contacted", "displayOrder": 1 }
      ]
    }] }

Code samples

Shell
curl -X GET https://app.contactfollowup.com/api/pipelines/v2 \
  -H "Authorization: Bearer $HEARTHNOTE_TOKEN" \
  -H "Content-Type: application/json"