Workforce planning events

The following events can be used to create Workforce Planning webhooks.

New to webhooks? Before you dive into the various event types, make sure to follow these key steps in Getting started with Bob webhooks.

The Workforce Planning module in Bob allows you to plan your staffing needs and provides visibility into your current and future workforce. The workforce planning webhooks enable you to receive notifications whenever positions or data related to positions are updated. To learn more about workforce planning in Bob, see Explore Workforce planning.

📘

Note:

If you have not purchased Workforce planning, you will not have access to this feature. To learn more, see Workforce planning ↗.

Workforce planning events

Workforce Planning EventTypeDescription
Position CreatedworkforcePlanning.position.createdTriggered when a new position is created in the system
Position UpdatedworkforcePlanning.position.updatedTriggered when any position fields are modified
Position Opening CreatedworkforcePlanning.positionOpening.createdTriggered when a new position opening is created
Position Opening UpdatedworkforcePlanning.positionOpening.updatedTriggered when position opening fields are modified
Position Opening DeletedworkforcePlanning.positionOpening.deletedTriggered when a position opening is removed
Position Budget CreatedworkforcePlanning.positionBudget.createdTriggered when a new position budget is created
Position Budget UpdatedworkforcePlanning.positionBudget.updatedTriggered when position budget fields are modified

Notes:

  • Budgets and position openings are always linked to a position.
  • Use thepublic API to get full details for each object.
  • Position opening events don’t include the position ID, but you can get it by retrieving the opening details.
  • Budget events do include the position ID, because budget details don’t return it.

How to handle Workforce Planning Events

  1. Receive the event notification: Bob sends a webhook event to your endpoint whenever a workforce planning event is triggered. The payload includes the relevant entity ID (such as positionId, positionOpeningId, or positionBudgetId), companyId, and the event type.
  2. Retrieve the data: Use the entity ID from the payload to call the appropriate API and retrieve the complete data for the relevant position, position opening, or position budget.
  3. How to process update events: For update events, the payload includes a fieldUpdatesIds array to indicate which fields were changed. Use the API to retrieve the updated fields values.

Events payload

Position Created

{
  "companyId": 637323,
  "type": "workforcePlanning.position.created",
  "triggeredBy": "3418533772247696340",
  "triggeredAt": "2024-10-03T09:29:00.831502",
  "version": "v2",
  "data": {
    "positionId": 123
  }
}

Position Updated

{  
  "companyId": 637323,
  "type": "workforcePlanning.position.updated",
  "triggeredBy": "3418533772247696340",
  "triggeredAt": "2024-10-03T09:29:00.831502",
  "version": "v2",
  "data": {
    "positionId": 123,
    "fieldUpdatesIds": [ // varies depending on the updated fields
      {
        "id": "/position/status"
      }
    ]
  }
}

Position Opening Created

{
  "companyId": 637323,
  "type": "workforcePlanning.positionOpening.created",
  "triggeredBy": "3418533772247696340",
  "triggeredAt": "2024-10-03T09:29:00.831502",
  "version": "v2",
  "data": {
    "positionOpeningId": 123
  }
}

Note: Use the Public API to retrieve the position opening details, including the linked position ID.

Position Opening Updated

{  
  "companyId": 637323,
  "type": "workforcePlanning.positionOpening.updated",
  "triggeredBy": "3418533772247696340",
  "triggeredAt": "2024-10-03T09:29:00.831502",
  "version": "v2",
  "data": {
    "positionOpeningId": 123,
    "fieldUpdatesIds": [ // varies depending on the updated fields
      {
        "id": "/positionOpening/status"
      }
    ]
  }
}

Position Opening Deleted

{  
  "companyId": 637323,
  "type": "workforcePlanning.positionOpening.deleted",
  "triggeredBy": "3418533772247696340",
  "triggeredAt": "2024-10-03T09:29:00.831502",
  "version": "v2",
  "data": {
    "positionOpeningId": 123
  }
}

Position Budget Created

{
  "companyId": 636192,
  "type": "workforcePlanning.positionBudget.created",
  "triggeredBy": "3332883804594373380",
  "triggeredAt": "2025-07-07T14:30:47.831523",
  "version": "v2",
  "data": {
    "positionBudgetId": 16649969,
    "positionId": 16649970
  }
}

Note: The event payload includes the position ID that this budget is linked to.

Position Budget Updated

{  
  "companyId": 637323,
  "type": "workforcePlanning.positionBudget.updated",
  "triggeredBy": "3418533772247696340",
  "triggeredAt": "2024-10-03T09:29:00.831502",
  "version": "v2",
  "data": {
    "positionBudgetId": 123,
    "positionId": 124,
    "entityType": "positionBudget",
    "fieldUpdatesIds": [
      {
        "id": "/positionBudget/baseSalary"
      }
    ]
  }
}

Note: The event payload includes the position ID that this budget is linked to.