Events
Triggering Webhook Types
The following event types are associated with the Appointment event payload from Boulevard.Boulevard Appointment ActiveBoulevard Appointment ArrivedBoulevard Appointment CancelledBoulevard Appointment CompletedBoulevard Appointment ConfirmedBoulevard Appointment CreatedBoulevard Appointment RescheduledBoulevard Appointment Updated
{
"appointment_datetime": "2024-03-15T10:00:00Z",
"appointment_ends_at_datetime": "2024-03-15T11:00:00Z",
"appointment_id": "urn:blvd:Appointment:12345",
"appointment_location": {
"address": {
"city": "San Francisco",
"country": "US",
"line1": "1 Acacia Ave.",
"line2": "Apt 3a.",
"province": "Alberta",
"state": "CA",
"zip_code": "94117"
},
"external_id": "LOC001",
"id": "urn:blvd:Location:loc123",
"is_remote": false,
"name": "Downtown Spa",
"timezone": "America/New_York"
},
"appointment_notes": "Client requested quiet room",
"appointment_services": [
{
"duration_minutes": 60,
"end_at": "2024-03-15T11:00:00Z",
"id": "urn:blvd:AppointmentService:abc123",
"price_cents": 15000,
"service": {
"category_name": "Massage Therapy",
"name": "Deep Tissue Massage"
},
"staff": {
"email_address": "sarah.johnson@spa.com",
"first_name": "Sarah",
"id": "urn:blvd:Staff:staff123",
"last_name": "Johnson",
"phone_number": "+15551234567",
"role_name": "Massage Therapist"
},
"staff_requested": true,
"start_at": "2024-03-15T10:00:00Z"
}
],
"appointment_status": "APPOINTMENT_STATE_BOOKED",
"calendar_links": {
"google_calendar": "https://calendar.google.com/calendar/event?action=TEMPLATE&tmeid=abc123",
"ics_download": "https://boulevard.com/calendar/appointment.ics",
"microsoft_office": "https://outlook.live.com/calendar/0/deeplink/compose?subject=Appointment",
"microsoft_outlook": "https://outlook.office.com/calendar/0/deeplink/compose?subject=Appointment",
"yahoo_calendar": "https://calendar.yahoo.com/?v=60&view=d&type=20&title=Appointment"
},
"client": {
"email_address": "jane.smith@email.com",
"first_name": "Jane",
"id": "urn:blvd:Client:client123",
"last_name": "Smith",
"phone_number": "+15551234567"
},
"client_message": "Looking forward to my appointment!",
"created_at": "2024-03-01T09:00:00Z",
"duration_minutes": 60,
"is_grouped_appointment": false,
"is_recurring": false,
"is_remote": false,
"manage_url": "https://book.boulevard.com/manage/abc123",
"order_id": "urn:blvd:Order:67890"
}
{
"appointment_datetime": "Start time for the appointment.",
"appointment_ends_at_datetime": "End time for the appointment.",
"appointment_id": "Unique identifier for the appointment in the Boulevard system.",
"appointment_location": {
"address": {
"city": "City of the Address",
"country": "Country for the Address.",
"line1": "Line 1 of the Address",
"line2": "Line 2 of the Address",
"province": "Province of the Address.",
"state": "State of the Address.",
"zip_code": "Zip (postal) code for the Address."
},
"external_id": "External identifier for the location.",
"id": "Unique identifier for the location.",
"is_remote": "Indicates that the location is a remote location, and that appointments for this location are carried out remotely.",
"name": "Name of the location.",
"timezone": "Timezone associated with the location."
},
"appointment_notes": "Internal notes on the appointment.",
"appointment_services": {
"duration_minutes": "Duration for the service in minutes (including options).",
"end_at": "The ISO time at which the appointment service is completely finished.",
"id": "Unique identifier for the appointment service.",
"price_cents": "Price of the service in cents, before any discounts or taxes are applied (including options).",
"service": {
"category_name": "Name of the Service Category",
"name": "Name of the service."
},
"staff": {
"email_address": "Email address of the staff member.",
"first_name": "First name of the staff member.",
"id": "Unique identifier for the staff member.",
"last_name": "Last name of the staff member.",
"phone_number": "Mobile phone number of the staff member.",
"role_name": "Name of the staff member's role."
},
"staff_requested": "A boolean indicating whether the staff was specifically requested by the client.",
"start_at": "The ISO time at which the appointment service begins."
},
"appointment_status": "The state of the appointment.",
"calendar_links": {
"google_calendar": "A deep link to add the appointment directly to Google Calendar.",
"ics_download": "A downloadable ICS file to use for native calendar applications.",
"microsoft_office": "A deep link to add the appointment directly to Microsoft Office 365.",
"microsoft_outlook": "A deep link to add the appointment directly to Microsoft Outlook Online.",
"yahoo_calendar": "A deep link to add the appointment directly to Yahoo Calendar."
},
"client": {
"email_address": "Client's email address.",
"first_name": "Client's first name.",
"id": "Unique identifier for the client in the Boulevard system.",
"last_name": "Client's last name.",
"phone_number": "Client's mobile phone number."
},
"client_message": "Message provided by the client.",
"created_at": "When the appointment was created (in Etc/UTC).",
"duration_minutes": "The duration of the appointment in minutes.",
"is_grouped_appointment": "Indicates whether the appointment is part of a group appointment.",
"is_recurring": "Indicates if the appointment belongs to a recurring series.",
"is_remote": "Indicates that the appointment is due to be carried out remotely.",
"manage_url": "The URL at which a client can manage their own booking.",
"order_id": "The id of the order that the appointment was checked out with."
}
Payload Field Details
Event Payload
Hide fields
Hide fields
string
required
ID Unique identifier for the appointment in the Boulevard system.CEL
appointment_id
Example
"urn:blvd:Appointment:12345"
string
HI Internal notes on the appointment.CEL
appointment_notes
Example
"Client requested quiet room"
timing.v1.Timestamp
required
Start time for the appointment.
CEL
appointment_datetime
Example
"2024-03-15T10:00:00Z"
timing.v1.Timestamp
required
End time for the appointment.
CEL
appointment_ends_at_datetime
Example
"2024-03-15T11:00:00Z"
uint64
required
The duration of the appointment in minutes.
CEL
duration_minutes
Example
60
boulevard.v1.AppointmentState
required
The state of the appointment.
CEL
appointment_status
Example
boulevard.v1.AppointmentState.APPOINTMENT_STATE_ACTIVE
boulevard.v1.AppointmentState.APPOINTMENT_STATE_ARRIVED
boulevard.v1.AppointmentState.APPOINTMENT_STATE_BOOKED
boulevard.v1.AppointmentState.APPOINTMENT_STATE_CANCELLED
boulevard.v1.AppointmentState.APPOINTMENT_STATE_CONFIRMED
boulevard.v1.AppointmentState.APPOINTMENT_STATE_FINAL
string
PII Message provided by the client.CEL
client_message
Example
"Looking forward to my appointment!"
object
The client of the appointment.
CEL
client
Example
{
"email_address": "jane.smith@email.com",
"first_name": "Jane",
"id": "urn:blvd:Client:client123",
"last_name": "Smith",
"phone_number": "+15551234567"
}
string
ID Unique identifier for the client in the Boulevard system.CEL
client.id
Example
"urn:blvd:Client:client123"
string
PII Client’s first name.CEL
client.first_name
Example
"Jane"
string
PII Client’s last name.CEL
client.last_name
Example
"Smith"
string
PII Client’s email address.CEL
client.email_address
Example
"jane.smith@email.com"
string
PII Client’s mobile phone number.CEL
client.phone_number
Example
"+15551234567"
[]object
required
A collection of appointment services.
CEL
appointment_services
Example
[
{
"duration_minutes": 60,
"end_at": "2024-03-15T11:00:00Z",
"id": "urn:blvd:AppointmentService:abc123",
"price_cents": 15000,
"service": {
"category_name": "Massage Therapy",
"name": "Deep Tissue Massage"
},
"staff": {
"email_address": "sarah.johnson@spa.com",
"first_name": "Sarah",
"id": "urn:blvd:Staff:staff123",
"last_name": "Johnson",
"phone_number": "+15551234567",
"role_name": "Massage Therapist"
},
"staff_requested": true,
"start_at": "2024-03-15T10:00:00Z"
}
]
[]string
required
ID Mapped array of: Unique identifier for the appointment service.CEL
appointment_services.map(x, x.id)
Example
[
"urn:blvd:AppointmentService:abc123"
]
[]timing.v1.Timestamp
required
Mapped array of: The ISO time at which the appointment service begins.
CEL
appointment_services.map(x, x.start_at)
Example
[
"2024-03-15T10:00:00Z"
]
[]timing.v1.Timestamp
required
Mapped array of: The ISO time at which the appointment service is completely finished.
CEL
appointment_services.map(x, x.end_at)
Example
[
"2024-03-15T11:00:00Z"
]
[]int64
required
Mapped array of: Price of the service in cents, before any discounts or taxes are applied (including options).
CEL
appointment_services.map(x, x.price_cents)
Example
[
15000
]
[]uint64
required
Mapped array of: Duration for the service in minutes (including options).
CEL
appointment_services.map(x, x.duration_minutes)
Example
[
60
]
[]bool
required
Mapped array of: The service.
CEL
appointment_services.map(x, x.service)
Example
[
{
"category_name": "Massage Therapy",
"name": "Deep Tissue Massage"
}
]
[]bool
required
Mapped array of: A boolean indicating whether the staff was specifically requested by the client.
CEL
appointment_services.map(x, x.staff_requested)
Example
[
true
]
[]bool
required
Mapped array of: The staff performing this service.
CEL
appointment_services.map(x, x.staff)
Example
[
{
"email_address": "sarah.johnson@spa.com",
"first_name": "Sarah",
"id": "urn:blvd:Staff:staff123",
"last_name": "Johnson",
"phone_number": "+15551234567",
"role_name": "Massage Therapist"
}
]
bool
required
Indicates whether the appointment is part of a group appointment.
CEL
is_grouped_appointment
Example
false
bool
required
Indicates if the appointment belongs to a recurring series.
CEL
is_recurring
Example
false
bool
required
Indicates that the appointment is due to be carried out remotely.
CEL
is_remote
Example
false
object
The Location where this appointment was booked.
CEL
appointment_location
Example
{
"address": {
"city": "San Francisco",
"country": "US",
"line1": "1 Acacia Ave.",
"line2": "Apt 3a.",
"province": "Alberta",
"state": "CA",
"zip_code": "94117"
},
"external_id": "LOC001",
"id": "urn:blvd:Location:loc123",
"is_remote": false,
"name": "Downtown Spa",
"timezone": "America/New_York"
}
string
ID Unique identifier for the location.CEL
appointment_location.id
Example
"urn:blvd:Location:loc123"
string
Name of the location.
CEL
appointment_location.name
Example
"Downtown Spa"
string
ID External identifier for the location.CEL
appointment_location.external_id
Example
"LOC001"
string
Timezone associated with the location.
CEL
appointment_location.timezone
Example
"America/New_York"
object
PII Address of the location.CEL
appointment_location.address
Example
{
"city": "San Francisco",
"country": "US",
"line1": "1 Acacia Ave.",
"line2": "Apt 3a.",
"province": "Alberta",
"state": "CA",
"zip_code": "94117"
}
string
PII Line 1 of the AddressCEL
appointment_location.address.line1
Example
"1 Acacia Ave."
string
PII Line 2 of the AddressCEL
appointment_location.address.line2
Example
"Apt 3a."
string
City of the Address
CEL
appointment_location.address.city
Example
"San Francisco"
string
Province of the Address.
CEL
appointment_location.address.province
Example
"Alberta"
string
State of the Address.
CEL
appointment_location.address.state
Example
"CA"
string
Zip (postal) code for the Address.
CEL
appointment_location.address.zip_code
Example
"94117"
string
Country for the Address.
CEL
appointment_location.address.country
Example
"US"
bool
Indicates that the location is a remote location, and that appointments for this location are carried out remotely.
CEL
appointment_location.is_remote
Example
false
string
required
The URL at which a client can manage their own booking.
CEL
manage_url
Example
"https://book.boulevard.com/manage/abc123"
object
Links to allow direct addition of the appointment to different calendar platforms.
CEL
calendar_links
Example
{
"google_calendar": "https://calendar.google.com/calendar/event?action=TEMPLATE&tmeid=abc123",
"ics_download": "https://boulevard.com/calendar/appointment.ics",
"microsoft_office": "https://outlook.live.com/calendar/0/deeplink/compose?subject=Appointment",
"microsoft_outlook": "https://outlook.office.com/calendar/0/deeplink/compose?subject=Appointment",
"yahoo_calendar": "https://calendar.yahoo.com/?v=60&view=d&type=20&title=Appointment"
}
string
A deep link to add the appointment directly to Google Calendar.
CEL
calendar_links.google_calendar
Example
"https://calendar.google.com/calendar/event?action=TEMPLATE&tmeid=abc123"
string
A downloadable ICS file to use for native calendar applications.
CEL
calendar_links.ics_download
Example
"https://boulevard.com/calendar/appointment.ics"
string
A deep link to add the appointment directly to Microsoft Office 365.
CEL
calendar_links.microsoft_office
Example
"https://outlook.live.com/calendar/0/deeplink/compose?subject=Appointment"
string
A deep link to add the appointment directly to Microsoft Outlook Online.
CEL
calendar_links.microsoft_outlook
Example
"https://outlook.office.com/calendar/0/deeplink/compose?subject=Appointment"
string
A deep link to add the appointment directly to Yahoo Calendar.
CEL
calendar_links.yahoo_calendar
Example
"https://calendar.yahoo.com/?v=60&view=d&type=20&title=Appointment"
string
ID The id of the order that the appointment was checked out with.CEL
order_id
Example
"urn:blvd:Order:67890"
timing.v1.Timestamp
required
When the appointment was created (in Etc/UTC).
CEL
created_at
Example
"2024-03-01T09:00:00Z"
