Webhook Events
Events are named with the format RESOURCE_TYPE.EVENT. The RESOURCE_TYPE corresponds to the shape of the payload.
For example, FOLLOWED_OPP.MODIFIED will have a payload that mimics the /v3/opportunities/{{id}} endpoint.
Available Events
The following webhook events are available to subscribe to:
Workspace Events
OPP_WORKSPACE.FOLLOWED - Sent when a user follows a workspace
OPP_WORKSPACE.STATUS_CHANGED - Sent when a workspace’s status changes
OPP_WORKSPACE.STATUS_CHANGED
All organizations have default statuses (Qualifying, Intend to Bid, Quoted, Submitted, Awarded, Not Awarded, No Bid) and can define custom statuses. STATUS_CHANGED fires for all status transitions.
The payload includes the current and previous status, so consumers know exactly what changed. displayStatus is the status name (e.g., “Qualifying” or a custom name like “Proposal Drafting”). Each status belongs to a stable statusCategory (triage, planned, in_progress, completed, canceled).
Example payload:
{
"event": "OPP_WORKSPACE.STATUS_CHANGED",
"payload": {
"id": "workspace-uuid",
"createdAt": "2026-02-10T10:30:00Z",
"updatedAt": "2026-02-18T14:22:00Z",
"displayName": "Workspace Name",
"archivedAt": null,
"commentsCount": 3,
"private": false,
"createdByOrganization": "Acme Corp",
"url": "https://app.govly.com/opportunities/{opp_id}/workspaces/{workspace_id}",
"statusCategory": "in_progress",
"displayStatus": "Proposal Drafting",
"statusId": "status-uuid",
"previousStatusCategory": "triage",
"previousDisplayStatus": "Qualifying",
"previousStatusId": "status-uuid",
"comments": [],
"follows": [],
"opportunity": { "..." : "full opportunity object" },
"activities": []
}
}
Status fields:
| Field | Type | Description |
|---|
statusCategory | string | The stable category the status belongs to. One of: triage, planned, in_progress, completed, canceled |
displayStatus | string | The status name (e.g., a default like “Qualifying” or a custom name like “Proposal Drafting”) |
statusId | string or null | ID of the status |
previousStatusCategory | string | The status category before this change |
previousDisplayStatus | string | The display status before this change |
previousStatusId | string or null | ID of the previous status |
Deprecated Workspace Events
The following events are deprecated. Use OPP_WORKSPACE.STATUS_CHANGED instead and check the displayStatus field to determine the workspace’s new state.
OPP_WORKSPACE.NO_BID
OPP_WORKSPACE.INTEND_TO_BID
OPP_WORKSPACE.QUOTED
OPP_WORKSPACE.SUBMITTED
OPP_WORKSPACE.AWARDED
OPP_WORKSPACE.NOT_AWARDED
Opportunity Events
Events handled by Govly’s opportunity processing pipeline in real time:
FOLLOWED_OPP.MODIFIED - Sent when modifications hit Govly
FOLLOWED_OPP.ENRICHED - Sent when Govly finishes LLM summarization