Skip to main content
NTF
Step-by-Step Setup 10-15 minutes

Calendar Notifications Setup

Calendars & Scheduling Intermediate
Need more detail? Read the full guide for config deep-dives and best practices.

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 locationId from Settings > Business Info
  • A valid calendarId to 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.

  1. Go to Settings > Integrations > Private Integrations
  2. Select or create a PIT with calendars scope (read and write)
  3. 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, and timingUnit.
  • 400 — Invalid type value. Must be sms, email, or inApp.

Test Your Setup

Validate that notifications configure correctly:

  1. List notifications on a calendar. Note any existing configurations.
  2. Create a test SMS notification with timing: 5 and timingUnit: "minutes"
  3. List again and confirm the new notification appears
  4. Update the timing to 15 minutes and verify the change
  5. 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).
  6. 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.

Stay sharp. New guides and playbooks as they drop.