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 Event | Type | Description |
---|---|---|
Position Created | workforcePlanning.position.created | Triggered when a new position is created in the system |
Position Updated | workforcePlanning.position.updated | Triggered when any position fields are modified |
Position Opening Created | workforcePlanning.positionOpening.created | Triggered when a new position opening is created |
Position Opening Updated | workforcePlanning.positionOpening.updated | Triggered when position opening fields are modified |
Position Opening Deleted | workforcePlanning.positionOpening.deleted | Triggered when a position opening is removed |
Position Budget Created | workforcePlanning.positionBudget.created | Triggered when a new position budget is created |
Position Budget Updated | workforcePlanning.positionBudget.updated | Triggered 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
- 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
, orpositionBudgetId
),companyId
, and the eventtype
. - 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.
- 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.