Overview
WaitlistPlus has a webhook API available if you would like to integrate our data in your own software. A webhook is the act of WaitlistPlus making an HTTP POST request to your application’s API when an event occurs. This way we are able to immediately notify you when an event occurs.
Setup
While in beta mode, you must contact support to enable this feature. You will need to provide your web service url that you would like the webhook POST requests sent to. To ensure your data is encrypted, we require using HTTPS (ssl) for your webhook url.
Data
Data about the event will be formatted using JSON. An example of the full JSON document that would be POSTed to your webhook URL is below followed by a brief description of some of the more interesting fields.
Example Json
{
"type": "AddPerson",
"data": {
"PersonId": 590879,
"PersonGUID": "61aa3829-90f4-ec11-b47a-2818783e44b5",
"FamilyPersonId": 590879,
"Fields": {
"First Name": "Jack",
"Last Name": "Sparrow",
"Birthdate": "8/9/2021",
"Priority": "P2-Family of Staff",
"Phone #": "",
"Phone # Alternate": "",
"Email": "",
"Days Available": "Tuesday,Wednesday",
"Location": "Springfiled"
},
"Notes": [
{
"LastEditDate": null,
"LastEditBy": "online",
"Text": "Needs to be seen soon"
}
],
"Waitlists": [
{
"Name": "Infants",
"Position": 4,
"AddedDate": "2022-06-25T14:07:35.4539461",
"RequestedDate": "2022-06-30T05:00:00"
}
]
}
}
Field Details
- type – (AddPerson, UpdatePerson, DeletePerson) this describes the event that occurred. See Events below for more details.
- PersonId – a unique identifier for this person
- PersonGUID – an alternate unique identifier for this person, we use it in email notifications and links to portal pages
- FamilyPersonId – the PersonId of the first person created in a family. You can use it to link all members of a family together.
- Fields – a list of all custom fields you have created for your site. Since this list will change for each customer, the json above is only an example. Your list will likely differ.
- Notes – a list of notes for this person. Each note will contain the following:
- LastEditDate – when the note was created, or last changed if it’s been updated
- LastEditBy – full name of the person who created the note, or most recently updated it
- Text – the actual content of the note
- Waitlists – the details of the list this person is on, if any
- Name – name of the list
- Position – the position that they appear in on the list. This is one of the few fields we do not track updates to. See Events below for more information.
- Added Date – the date the person was added to the list (this may have a different name in your account)
- Requested Date – their requested start date (this may have a different name in your account)
Events
Below is a list of events that will trigger a webhook notification to be sent to the web service url you have specified.
Person Updates
The following events within WaitlistPlus will trigger a webhook to be sent. This will be represented in the type field in the json response.
- AddPerson – person created by admin or through customer signup page
- UpdatePerson – any change to an existing person including:
- Any of the person fields
- All Note changes (Add/edit/delete)
- Waitlist change or removal. This could be caused by a change manual change from the admin, a change to list settings like age range, or changed by our nightly process if they have aged out of an age based list
- Customer portal confirmation
- DeletePerson – when a person is deleted from your site. This is not the same as removal from a list, which is included in “UpdatePerson”
Events that will not trigger a webhook
- List position update – for example, if you removed one person from a list, you’ll get a webhook for that person, but not all of the people behind them in the waitlist, that now have a position one higher than they did before.
Example of Integration
The below video provides a step by step example of using make.com and Google Sheets to integrate with the WaitlistPlus API . There are many other ways to integrate with the WaitlistPlus API, we are just providing a single example here for reference.