Webhooks: Folio Events
The Folio Event webhook fires whenever a folio's lifecycle changes — when the client opens the portal, submits it for review, or when the manager marks it accepted, closed, or it expires. Use it to drive notifications, CRM updates, and downstream workflows around folio status.
Every payload is { event, client, folio }.
folio.open
When fired: When the client first opens their portal link in a browser.
{
"event": "folio.open",
"client": {
"id": 412,
"guid": "f4a13d0c-2e5e-4a7d-9b1f-2e5a8f8d24c1",
"user_guid": "1c3a9e8f-72b5-4d11-89aa-66ec0f3a4b22",
"email": "client@example.com",
"first_name": "Pat",
"last_name": "Morgan",
"phone": "+1-555-0142",
"subscribed": "yes",
"inserted_at": 1746825600,
"updated_at": 1746825600
},
"folio": {
"guid": "8b9d7c12-aa7e-4a2c-b91d-3ad7c2f81f54",
"client_guid": "f4a13d0c-2e5e-4a7d-9b1f-2e5a8f8d24c1",
"type": "inbound",
"name": "Onboarding",
"status": "open",
"template_guid": "a72b1c4a-19fc-4d68-8ac6-b6ccf1f3e000",
"folio_sections": [],
"inserted_at": 1746825000,
"updated_at": 1746825600
}
}
folio.review
When fired: When the client submits the folio for review. Also fires when an email-ingest folio is processed (the system-side equivalent of a client submitting it).
{
"event": "folio.review",
"client": { "...": "see folio.open above" },
"folio": {
"guid": "8b9d7c12-aa7e-4a2c-b91d-3ad7c2f81f54",
"client_guid": "f4a13d0c-2e5e-4a7d-9b1f-2e5a8f8d24c1",
"type": "inbound",
"name": "Onboarding",
"status": "review",
"template_guid": "a72b1c4a-19fc-4d68-8ac6-b6ccf1f3e000",
"folio_sections": [],
"inserted_at": 1746825000,
"updated_at": 1746829200
}
}
folio.update
When fired: When you mark the folio as needing more from the client.
{
"event": "folio.update",
"client": { "...": "see folio.open above" },
"folio": {
"guid": "8b9d7c12-aa7e-4a2c-b91d-3ad7c2f81f54",
"status": "update",
"...": "..."
}
}
folio.accepted
When fired: When you mark the folio as accepted.
{
"event": "folio.accepted",
"client": { "...": "see folio.open above" },
"folio": {
"guid": "8b9d7c12-aa7e-4a2c-b91d-3ad7c2f81f54",
"status": "accepted",
"...": "..."
}
}
folio.expired
When fired: When the folio's expiry date passes without the folio having been accepted.
{
"event": "folio.expired",
"client": { "...": "see folio.open above" },
"folio": {
"guid": "8b9d7c12-aa7e-4a2c-b91d-3ad7c2f81f54",
"status": "expired",
"...": "..."
}
}
folio.closed
When fired: When you close the folio.
{
"event": "folio.closed",
"client": { "...": "see folio.open above" },
"folio": {
"guid": "8b9d7c12-aa7e-4a2c-b91d-3ad7c2f81f54",
"status": "closed",
"...": "..."
}
}
More information
For headers, signing, retries, and the delivery log, see the Webhooks overview.