Webhooks
Overview
Feed Item objects are created when significant events occur in your account, such as class registrations, customer signups, and payments. These Feed Items can be delivered to your integration through Webhooks.
Webhooks notify integrations about new Feed Item objects by sending an HTTP POST request to a Webhook Destination (a configured URL). The request payload includes one or more Feed Item objects.
This document outlines the general concepts of Feed Items and Webhooks.
Webhook Delivery
Webhooks are delivered as HTTP POST requests to the URL defined in the Webhook Destination.
Your server must respond with a 2xx status code (e.g., 200 OK or 204 No Content) within 10 seconds.
You may also respond with a 410 Gone status to indicate that no further Webhooks should be sent to this destination.
We attempt delivery up to 5 times at increasing intervals (see Webhook Retries).
Key Notes
- Webhooks may be delivered out of order.
- Deliveries will not follow redirects. Responses such as
301or302will be treated as failed delivery attempts.
Headers
Each webhook POST request includes a TEAMUP-WEBHOOK-ID header containing a unique identifier for that webhook.
This ID remains the same across delivery attempts, making it useful for deduplication.
Webhook Retries
If your server does not respond with a 2xx or 410 status within 10 seconds, we retry delivery four more times at the following intervals:
- 1 minute
- 3 minutes
- 10 minutes
- 30 minutes
After the fifth attempt, no further delivery attempts are made.
Disabling a Webhook Destination
Responding with 410 Gone disables the Webhook Destination permanently. Once received, no further webhooks will be delivered to that destination.
Payload
The payload of a Webhook is a JSON object containing a list of Feed Item objects.
Currently, webhooks contain a single feed item, but in the future, multiple items may be included.
Sample payload:
{
"feed_items": [
{
"object": "feed_item",
"id": 13553027,
"timestamp": "2019-04-27T21:52.45",
"type": "event_registration.created",
"source": "standalone",
"resources": {
"customer": 818974,
"event": 14947247,
"business": 285151
}
}
]
}
Webhook Destinations
Webhook Destinations define where webhooks are sent.
Destinations can be configured to receive all or only specific Feed Item types that occur within a provider's account.
The Webhook Destination Object
| Attribute | Description |
|---|---|
object | Always "webhook_destination". |
id | Unique identifier for the object. |
url | The URL to which webhooks are delivered. |
feed_item_types | A list of Feed Item types to be notified about. The value * represents all types. |
application | The Application that the destination is associated with. |
Example:
{
"object": "webhook_destination",
"id": 53583,
"url": "https://example.com/receiver",
"feed_item_types": ["*"],
"application": 533
}
Feed Items
The Feed Item Object
| Attribute | Description |
|---|---|
object | Always "feed_item". |
id | Unique identifier for the object. |
timestamp | ISO 8601 timestamp when the activity occurred. |
type | The type of Feed Item (see Feed Item Types). |
source | Identifies a more specific trigger for event registration changes, such as enrolling from a waitlist or being removed due to a class cancellation. |
resources | Object containing references to related resources. |
Example:
{
"object": "feed_item",
"id": 13553027,
"timestamp": "2019-04-27T21:52.45",
"type": "event_registration.created",
"source": "standalone",
"resources": {
"customer": 818974,
"event": 14947247,
"business": 285151
}
}
Feed Item Types
This section lists all Feed Item types.
course_session.ended
Created when a course session ends.
Resources:
- course_session
- business
customer.created
Created when a new customer is created.
Resources:
- customer
- business
customer.invited
Created when a customer is invited to join a business (in addition to customer.created).
Resources:
- customer
- business
customer.signed_up
Created when a customer completes the signup process.
Resources:
- customer
- business
customer.updated
Created when a customer’s details (name, email, field values, etc.) are updated.
Resources:
- customer
- business
customer.deleted
Created when a customer is deleted.
Resources:
- customer
- business
customer_membership.created
Created when a customer membership is added (via purchase or manually from the business dashboard).
Resources:
- customer
- business
- customer_membership
customer_membership.started
Created when a membership becomes valid (for future start dates, this occurs on the start date).
Resources
- customer
- business
- customer_membership
customer_membership.ended
Created when a customer membership ends. Applies only to recurring and prepaid plans.
Resources:
- customer
- business
- customer_membership
customer_membership.cancelled
Created when a customer cancels a membership. Applies only to recurring plans.. This occurs when a user clicks Cancel in TeamUp.
Cancellation sets an expiration date, which will later trigger a customer_membership.ended Feed Item.
Resources:
- customer
- business
- customer_membership
customer_membership.completed
Created when a pack membership has reached its usage limit.
Resources:
- customer
- customer_membership
- business
customer_referral.created
Created when a customer signs up using a referral.
Resources:
- customer
- business
- referrer
customer_referral.confirmed
Created when a referred customer completes the necessary steps to confirm the referral.
Resources:
- customer
- business
- referrer
event.ended
Created when a class/appointment/rental ends.
Resources:
- event
- business
event_registration.created
Created when a customer registers for an event. Includes various sources indicating how the registration occurred.
Sources:
standalone: Not associated with any of the below.- Resources: event, customer, business
waitlist: Automatically from the waitlist.- Resources: event, customer, business
reservation: As part of a recurring reservation.- Resources: event, customer, reservation, business
block_booking: As part of a block booking.- Resources: event, customer, business
event_registration.removed
Created when a customer is removed from an event.
Sources:
standalone: Not associated with any of the below.- Resources: event, customer, business
event_cancelled: Automatically from the waitlist.- Resources: event, customer, business
event_registration.late_cancelled
Created when a customer late cancels from an event. The customer’s membership usage is not refunded.
Resources:
- event
- customer
- business
event_registration.attended
Created when a customer is marked as attended.
Resources:
- event
- customer
- business
event_registration.noshowed
Created when a customer is marked as a no-show.
Resources
- event
- customer
- business
event_registration.waitlist.added
Created when a customer is added to the waitlist.
Resources:
- event
- customer
- business
event_registration.waitlist.removed
Created when a customer is removed from the waitlist.
Resources:
- event
- customer
- business
event_registration.waitlist.spot_reserved
Created when a customer’s waitlist spot is reserved.
Resources:
- event
- customer
- business
event_registration.waitlist.spot_expired
Created when a customer’s waitlist spot expires.
Resources:
- event
- customer
- business
event_registration.waitlist.spot_declined
Created when a customer declines a waitlist spot.
Source not used. Resources: event, customer, business.
lead_form.submitted
Created when a lead form is submitted.
Resources:
- customer
- business
- lead_form