Calendar Notifications Setup
Configure appointment reminders and notifications per calendar through the GHL API. Set up SMS, email, and in-app notifications at custom intervals to reduce no-shows and keep your team prepared.
Prerequisites
Before you begin, confirm the following:
- A GoHighLevel sub-account with at least one calendar configured
- A Private Integration Token (PIT) with the calendars scope enabled
- Your
locationIdfrom Settings > Business Info - A valid
calendarIdto configure notifications on - SMS and email sending configured in your sub-account (for those notification types)
Set Up Authentication
Notification endpoints use the calendars scope.
- Go to Settings > Integrations > Private Integrations
- Select or create a PIT with calendars scope (read and write)
- Copy the token:
export GHL_TOKEN="your-private-integration-token"
export LOCATION_ID="your-location-id"
Required headers:
Authorization: Bearer $GHL_TOKEN
Content-Type: application/json
Version: 2021-07-28
Make Your First Call
List existing notifications on a calendar:
curl -X GET "https://services.leadconnectorhq.com/calendars/{calendarId}/notifications" \
-H "Authorization: Bearer $GHL_TOKEN" \
-H "Version: 2021-07-28"
Create a notification (e.g., SMS reminder 30 minutes before):
curl -X POST "https://services.leadconnectorhq.com/calendars/{calendarId}/notifications" \
-H "Authorization: Bearer $GHL_TOKEN" \
-H "Content-Type: application/json" \
-H "Version: 2021-07-28" \
-d '{
"type": "sms",
"timing": 30,
"timingUnit": "minutes",
"templateId": "your-sms-template-id",
"isActive": true
}'
Create an email reminder 24 hours before:
curl -X POST "https://services.leadconnectorhq.com/calendars/{calendarId}/notifications" \
-H "Authorization: Bearer $GHL_TOKEN" \
-H "Content-Type: application/json" \
-H "Version: 2021-07-28" \
-d '{
"type": "email",
"timing": 24,
"timingUnit": "hours",
"templateId": "your-email-template-id",
"isActive": true
}'
Key fields: type accepts sms, email, or inApp. timing is the numeric value and timingUnit is minutes or hours. The templateId references a pre-built notification template. Set isActive to false to pause a notification without deleting it.
Update a notification:
curl -X PUT "https://services.leadconnectorhq.com/calendars/{calendarId}/notifications/{notificationId}" \
-H "Authorization: Bearer $GHL_TOKEN" \
-H "Content-Type: application/json" \
-H "Version: 2021-07-28" \
-d '{
"timing": 60,
"timingUnit": "minutes",
"isActive": true
}'
Delete a notification:
curl -X DELETE "https://services.leadconnectorhq.com/calendars/{calendarId}/notifications/{notificationId}" \
-H "Authorization: Bearer $GHL_TOKEN" \
-H "Version: 2021-07-28"
Handle the Response
A successful POST returns 200 with the notification object including id, type, timing, timingUnit, templateId, and isActive.
The GET (list) endpoint returns a notifications array with all configured reminders for the calendar. Each calendar can have multiple notifications of different types and intervals.
A common setup includes three notifications per calendar:
- Email 24 hours before (confirmation with meeting details)
- SMS 30 minutes before (short reminder with location or link)
- In-app 15 minutes before (team member notification to prepare)
Notifications fire based on the appointment’s startTime. If an appointment is cancelled before the notification fires, the reminder is suppressed automatically.
Common errors:
- 401 — Token invalid or expired.
- 404 — Calendar ID or notification ID not found.
- 422 — Missing required fields. The create call needs
type,timing, andtimingUnit. - 400 — Invalid
typevalue. Must besms,email, orinApp.
Test Your Setup
Validate that notifications configure correctly:
- List notifications on a calendar. Note any existing configurations.
- Create a test SMS notification with
timing: 5andtimingUnit: "minutes" - List again and confirm the new notification appears
- Update the timing to 15 minutes and verify the change
- Book a test appointment 20 minutes from now on the same calendar. Wait to confirm the notification fires at the 5-minute mark (if testing with real timing).
- Delete the test notification when finished
If notifications do not send, verify that SMS or email sending is configured in your sub-account settings. The API creates the notification configuration, but delivery depends on your account’s messaging setup.
Next Steps
Read the full Calendar Notifications guide for multi-channel notification strategies and no-show reduction patterns. Use Calendar CRUD to manage the calendars these notifications attach to, or set up Appointment CRUD to test notification delivery with real bookings.