Using Fohlio Webhooks
Webhooks allow Fohlio to automatically notify another system when something happens in your account.
For example, you can use webhooks to detect when a project is created, a purchase order is updated, a supplier invoice changes, or a shipment is deleted.
Instead of repeatedly checking Fohlio for updates, your system can receive those changes automatically as they happen.
🔴 For the most accurate and up-to-date information, please refer to the official Fohlio API documentation, as the details on this page may change over time.
How webhooks work
A webhook follows a simple flow:
Something happens in Fohlio → Fohlio sends an event → your system receives it → your integration decides what to do
For example, when a new project is created in Fohlio, your system can receive a project.created.v1 event and use that information to create the same project in another platform.
Available webhook events
Fohlio supports webhook events across several areas of the platform.
| Object | Created | Updated | Deleted |
|---|---|---|---|
| Project | project.created.v1 |
project.updated.v1 |
project.deleted.v1 |
| Client Proposal | client_proposal.created.v1 |
client_proposal.updated.v1 |
client_proposal.deleted.v1 |
| Client Invoice | client_invoice.created.v1 |
client_invoice.updated.v1 |
client_invoice.deleted.v1 |
| Purchase Order | purchase_order.created.v1 |
purchase_order.updated.v1 |
purchase_order.deleted.v1 |
| Supplier Invoice | supplier_invoice.created.v1 |
supplier_invoice.updated.v1 |
supplier_invoice.deleted.v1 |
| Shipment | shipment.created.v1 |
shipment.updated.v1 |
shipment.deleted.v1 |
| Contact | contact.created.v1 |
contact.updated.v1 |
contact.deleted.v1 |
| Project Item | project_item.created.v1 |
project_item.updated.v1 |
project_item.deleted.v1 |
Each event follows the same general structure, while the information inside event_data changes depending on the event type.
Webhook payload structure
When Fohlio sends a webhook, the request contains four main fields.
event_id
A unique identifier for the webhook event.
Example:
"event_id": "evt_01ABC123"
Your system should store this value after processing the event.
If the same event_id is received again, you can use it to identify the request as a duplicate and avoid processing the same event more than once.
timestamp
The time when the event occurred.
The timestamp is provided in ISO 8601 format.
Example:
"timestamp": "2026-08-27T14:32:10Z"
event_type
Identifies what happened in Fohlio.
Example:
"event_type": "project.created.v1"
Webhook event names follow this structure:
resource.action.version
For example:
project.created.v1
means:
project— the resource affectedcreated— the action that occurredv1— the event version
event_data
Contains the information associated with the event.
Example:
"event_data": { ... }
The contents of this object depend on the webhook type.
For example, a project-created event contains information about the project, while a purchase-order event contains data related to the purchase order.
Refer to the individual webhook endpoint in the API Reference for the complete event_data schema.
How to receive a webhook
Step 1: Create a webhook endpoint
Your application needs a publicly accessible endpoint that can receive incoming HTTP requests from Fohlio.
For example:
https://yourcompany.com/webhooks/fohlio
Your endpoint should be able to receive JSON payloads and return an HTTP response.
HTTPS is recommended for production integrations.
Step 2: Configure the webhook
Configure your integration to send the webhook events you want to receive to your endpoint.
You may choose to listen to a single event, such as:
project.created.v1
or multiple events, depending on your integration.
For example, an integration that synchronizes purchase orders may listen to:
purchase_order.created.v1 purchase_order.updated.v1 purchase_order.deleted.v1
Step 3: Receive the event
When an event occurs, Fohlio sends a JSON payload to your webhook endpoint.
A typical payload looks like this:
{ "event_id": "evt_01ABC123", "timestamp": "2026-08-27T14:32:10Z", "event_type": "project.created.v1", "event_data": { ... } }
Step 4: Check the event type
Your integration should inspect the event_type field to determine what happened.
For example:
project.created.v1
could trigger your application to create a corresponding project in another system.
Meanwhile:
purchase_order.updated.v1
could trigger your application to update an existing purchase order.
Step 5: Process the event data
Use the information inside event_data to perform the appropriate action in your system.
The exact data available depends on the event being received.
For the full schema of each event, refer to its corresponding page in the Fohlio API Reference.
Step 6: Prevent duplicate processing
Before processing an event, check whether its event_id has already been handled.
A typical workflow looks like this:
Receive event ↓ Check event_id ↓ Is it new? ↙ ↘ Yes No ↓ ↓ Process Ignore ↓ Store event_id
This helps ensure that the same event does not accidentally trigger an action more than once.
Step 7: Return a successful response
Once your system has successfully received the webhook, return an HTTP 200 response.
Example:
HTTP/1.1 200 OK
This indicates that the event was received successfully.
Example: Project created
Imagine you want a project created in Fohlio to automatically create a corresponding project in another system.
When the project is created, Fohlio sends an event such as:
{ "event_id": "evt_01ABC123", "timestamp": "2026-08-27T14:32:10Z", "event_type": "project.created.v1", "event_data": { ... } }
Your integration would then:
- Receive the webhook.
- Check whether
evt_01ABC123has already been processed. - Confirm that the event type is
project.created.v1. - Read the project information from
event_data. - Create or update the corresponding record in your connected system.
- Store the
event_id. - Return
200 OK.
The same process can be used for the other webhook events available in Fohlio.
Common ways to use Fohlio webhooks
Keep projects synchronized
Use project webhooks to create or update corresponding records in project management, ERP, CRM, or internal systems.
Connect procurement workflows
Purchase order events can be used to synchronize procurement data with finance, purchasing, or reporting systems.
Track supplier invoices
Supplier invoice webhooks can trigger accounting workflows, reporting updates, or other internal processes when invoices are created or changed.
Monitor shipments
Shipment events can be used to update logistics or delivery systems when shipment information changes.
Synchronize contacts
Contact webhooks can help keep customer, supplier, or stakeholder records synchronized across multiple systems.
Track project items
Project item events can be used to synchronize specifications, product information, and other project-level data with external databases or applications.
Webhook event reference
Projects
project.created.v1project.updated.v1project.deleted.v1
Client proposals
client_proposal.created.v1client_proposal.updated.v1client_proposal.deleted.v1
Client invoices
client_invoice.created.v1client_invoice.updated.v1client_invoice.deleted.v1
Purchase orders
purchase_order.created.v1purchase_order.updated.v1purchase_order.deleted.v1
Supplier invoices
supplier_invoice.created.v1supplier_invoice.updated.v1supplier_invoice.deleted.v1
Shipments
shipment.created.v1shipment.updated.v1shipment.deleted.v1
Contacts
contact.created.v1contact.updated.v1contact.deleted.v1
Project items
project_item.created.v1project_item.updated.v1project_item.deleted.v1
Next steps
Once your endpoint is ready, choose the webhook events relevant to your integration and use the individual webhook pages in the Fohlio API Reference to view the complete payload structure for each event.
For example, if you want to respond whenever a new project is created, refer to the Project Created webhook reference for the full event_data schema.