Share via


Sync Pipeline Stages

Pipeline Stages should be sent via the Middleware Platform whenever a new stage is created or an existing stage is updated in your CRM. When a customer activates CRM Connect for the first time, you must sync all of their historical data to LinkedIn to power the integration.

Throttle Limits

Throttle Limits Requests Per Day (UTC) Records Per Minute
Pipeline stages maximum 100,000 10,000

Note

Please submit batch calls grouped with no more than 100 records in sequential order.

Sync Pipeline Stages API Endpoint

https://api.linkedin.com/v2/tcrmPipelineStages

Sync Pipeline Stages API Query String Parameters

Parameter Description Type Required
tcrmPipelineId Pipeline identifier within external Talent CRM String Required
tcrmStageId Stage identifier within external Talent CRM String Required
integrationContext LinkedIn company URN provided during customer onboarding, e.g. urn:li:organization:1 String Required
dataProvider Hardcoded, this value is always PARTNER String Required

Sync Pipeline Stages via Batch Update

Perform HTTP PUT on the /tcrmPipelineStages endpoint to send talent CRM pipeline stages to LinkedIn. Batch requests require the x-restli-method: batch_update header. Multiple records can be sent in a single API request as indicated in the example below.

Sync Pipeline Stages API Request Body Fields

Fields Description Format Required
stageCategory Category of the pipeline stage. Possible stage categories:
  • NURTURE
  • LEAD
  • CONTACTED
  • REPLIED
  • APPLIED
  • SCREEN
  • INTERVIEW
  • OFFER
  • HIRED
  • REJECTED
  • DECLINED
  • ARCHIVED
  • OTHER
ENUM Required
stageDetails Details of the pipeline stage String Required
tcrmCreatedAt Time when this pipeline stage was created within external CRM. UTC Epoch Milliseconds Required

Sample Sync Pipeline Stages API Request

curl -i -X PUT 'https://api.linkedin.com/v2/tcrmPipelineStages?ids%5B0%5D.tcrmPipelineId=tcrmPipelineid1000&ids%5B0%5D.integrationContext=urn:li:organization:1234567890&ids%5B0%5D.dataProvider=PARTNER&ids%5B0%5D.tcrmStageId=tcrmStageId1001&ids%5B1%5D.tcrmPipelineId=tcrmPipelineid2000&ids%5B1%5D.integrationContext=urn:li:organization:1234567890&ids%5B1%5D.dataProvider=PARTNER&ids%5B1%5D.tcrmStageId=tcrmStageId2002' \
--header 'x-restli-method: batch_update' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {access_token}' \
--data-raw '{
    "entities": {
        "tcrmPipelineId=tcrmPipelineid1000&dataProvider=PARTNER&integrationContext=urn:li:organization:1234567890&tcrmStageId=tcrmStageId1001": {
        "stageCategory":"HIRED",
        "stageDetails":"Candidate was hired",
        "tcrmCreatedAt":1640995200000,
        "tcrmLastModifiedAt":1640995200001
        },
        "tcrmPipelineId=tcrmPipelineid2000&dataProvider=PARTNER&integrationContext=urn:li:organization:1234567890&tcrmStageId=tcrmStageId2002": {
        "stageCategory":"HIRED",
        "stageDetails":"Candidate was hired",
        "tcrmCreatedAt":1640995200000,
        "tcrmLastModifiedAt":1640995200001
        }
    }
}

Sample Sync Pipeline Stages API Response

 {
    "results": {
        "dataProvider=PARTNER&integrationContext=urn%3Ali%3Aorganization%3A1000&tcrmPipelineId=tcrmPipelineid1000&tcrmStageId=tcrmStageId1001": {
            "status": 204
        },
        "dataProvider=PARTNER&integrationContext=urn%3Ali%3Aorganization%3A1000&tcrmPipelineId=tcrmPipelineid2000&tcrmStageId=tcrmStageId2002": {
            "status": 204
        }
    },
    "errors": {}
}

Delete Pipeline Stages

Perform HTTP DELETE on the /tcrmPipelineStages endpoint when a customer deletes pipeline stage records.

Sample Delete Pipeline Stages Request

curl -i -X DELETE "https://api.linkedin.com/v2/tcrmPipelineStages?ids%5B0%5D.tcrmPipelineId=tcrmPipelineid1000&ids%5B0%5D.integrationContext=urn:li:organization:1234567890&ids%5B0%5D.dataProvider=PARTNER&ids%5B0%5D.tcrmStageId=tcrmStageId1001&ids%5B1%5D.tcrmPipelineId=tcrmPipelineid2000&ids%5B1%5D.integrationContext=urn:li:organization:1234567890&ids%5B1%5D.dataProvider=PARTNER&ids%5B1%5D.tcrmStageId=tcrmStageId2002" \
-H 'Accept:application/json' \
-H 'X-RestLi-Protocol-Version:1.0.0' \
--header 'Authorization: Bearer {access_token}' \

Sample DELETE Pipeline Stages Response Body

A successful request will return a 200 OK response code, and you will find the status of each entity in the response body.

  {
    "results": {
        "dataProvider=PARTNER&integrationContext=urn%3Ali%3Aorganization%3A1000&tcrmPipelineId=tcrmPipelineid1000&tcrmStageId=tcrmStageId1001": {
            "status": 204
        },
        "dataProvider=PARTNER&integrationContext=urn%3Ali%3Aorganization%3A1000&tcrmPipelineId=tcrmPipelineid2000&tcrmStageId=tcrmStageId2002": {
            "status": 204
        }
    },
    "errors": {}
}