Prospero provides webhooks which allow you to receive HTTP push notifications whenever entities are created, updated, or deleted.
You can use webhooks to build integrations that respond to changes in real time, such as updating external systems, sending messages based on activity, or triggering automated workflows.
How does a Webhook work?
A webhook is an event-driven push integration pattern. The push is simply an HTTP POST request sent to the URL of your choosing. The request is automatically triggered by Prospero when data changes. See Webhook Payloads for an example of what data is sent in the request.
Your webhook client is a simple HTTP endpoint. It must satisfy the following conditions:
- It's available in a publicly accessible HTTPS, non-
localhostURL - It will respond to the Prospero webhook push with an HTTP
200("OK") response
If delivery fails (i.e., server unavailable, takes longer than 5 seconds to respond, or responds with a non-200 HTTP status code), Prospero will retry the delivery up to three times, with a backoff delay according to the following chart:
| Retry Attempt | Delay |
|---|---|
| 1 | 1 minute |
| 2 | 1 hour |
| 3 | 6 hours |
If a webhook client continues to be unresponsive over many push attempts, Prospero might disable the webhook, and it must be manually re-enabled.
For additional information on Webhooks, we recommend checking out Webhooks - The Definitive Guide from RequestBin.
Webhook Events
Webhook Events are not to be confused with Events, which represent events on the Prospero calendar.
When the state of an entity changes, Prospero creates a webhook event that contains all the relevant information associated with that action, including the affected entity. Prospero currently supports the following webhook events:
| Webhook Event Name | Trigger |
|---|---|
event.created | Occurs whenever a new Event is created |
event.deleted | Occurs whenever an Event is deleted |
event.updated | Occurs whenever an Event is updated, including status changes |
invoice.created | Occurs whenever a new Invoice is created |
invoice.deleted | Occurs whenever a draft Invoice is deleted |
invoice.updated | Occurs whenever an Invoice is updated, including status changes |
offer.created | Occurs whenever a new Offer is created |
offer.deleted | Occurs whenever an Offer is deleted |
offer.updated | Occurs whenever an Offer is updated, including status changes |
If your application requires a webhook event we don't yet support, please reach out to us at [email protected] and let us know what you're looking for. We are actively expanding webhook support and will do our best to accommodate your use-case.
Getting Started
You will first need to create a webhook endpoint (or "consumer") to be called by Prospero. This can be a simple HTTP server you deploy yourself, or a URL endpoint configured by a service such as Zapier.
Creating a Webhook consumer
You might consider using something like Cloudflare Workers (the platform Prospero is built on!), Netlify Functions, or Vercel Functions, which provide a straightforward way of deploying simple HTTPS endpoints.
Deploying a simple webhook consumer on Cloudflare Workers might look something like this:
Code
Creating a Webhook
Webhooks are owned by an Organization, meaning they will trigger for all webhook events the webhook is listening for that occur within an Organization.
To create a webhook, email [email protected] with:
- The URL of your webhook endpoint
- The webhook events you want to listen for
The Prospero team will set up your webhook and notify you when it's live.
Self-Serve Coming Soon
We are actively working on self-serve webhook management. Stay tuned!
Deleting a Webhook
To delete a webhook, email [email protected] with:
- The URL of the webhook you want to delete
The Prospero team will delete your webhook and notify you when it's deleted.
Self-Serve Coming Soon
We are actively working on self-serve webhook management. Stay tuned!
Webhook Payloads
Webhook event payloads have the following generic signature:
Code
For example:
Code
For full schema definitions of the data object, refer to the API Reference for each entity type.