Skip to main content
ANT
Step-by-Step Setup 5-10 minutes

Appointment Notes Setup

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

Appointment Notes Setup

Add, read, update, and delete notes on GoHighLevel appointments. Notes help your team track context, prep details, and follow-up actions for every scheduled meeting.

Prerequisites

Before you begin, confirm the following:

  • A GoHighLevel sub-account with at least one booked appointment
  • A Private Integration Token (PIT) with the calendars scope enabled
  • Your locationId from Settings > Business Info
  • A valid appointmentId (create one using the Appointment CRUD endpoint if needed)
  • A REST client like Postman, Insomnia, or curl installed

Set Up Authentication

Appointment note 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 all notes on an appointment:

curl -X GET "https://services.leadconnectorhq.com/calendars/events/appointments/{appointmentId}/notes" \
  -H "Authorization: Bearer $GHL_TOKEN" \
  -H "Version: 2021-07-28"

Add a note to an appointment:

curl -X POST "https://services.leadconnectorhq.com/calendars/events/appointments/{appointmentId}/notes" \
  -H "Authorization: Bearer $GHL_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Version: 2021-07-28" \
  -d '{
    "body": "Client wants to discuss Q2 marketing budget. They mentioned a $50K range on the discovery call."
  }'

The body field accepts plain text. Keep notes concise and actionable so team members can quickly scan before meetings.

Update a note:

curl -X PUT "https://services.leadconnectorhq.com/calendars/events/appointments/{appointmentId}/notes/{noteId}" \
  -H "Authorization: Bearer $GHL_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Version: 2021-07-28" \
  -d '{
    "body": "Client wants to discuss Q2 marketing budget. Budget range is $50K-$75K. Bring case study deck."
  }'

Delete a note:

curl -X DELETE "https://services.leadconnectorhq.com/calendars/events/appointments/{appointmentId}/notes/{noteId}" \
  -H "Authorization: Bearer $GHL_TOKEN" \
  -H "Version: 2021-07-28"

Handle the Response

A successful GET returns a notes array. Each note object includes:

  • id — The note ID used for update and delete operations
  • body — The note text content
  • userId — The user who created the note
  • createdAt — Timestamp of when the note was added
  • updatedAt — Timestamp of the last edit

A POST returns the newly created note with its generated id. A PUT returns the updated note. A DELETE returns a success confirmation.

Notes are visible to all team members who can access the appointment. There is no per-note permission system, so any user with calendar access can read, edit, or delete notes.

Common errors:

  • 401 — Token invalid or expired.
  • 404 — Appointment ID or note ID not found. Verify IDs with a GET call first.
  • 422 — Missing body field on create or update. The note text is required.

Test Your Setup

Run through these steps to validate notes work correctly:

  1. List notes on an existing appointment. The array may be empty initially.
  2. Create a test note with a descriptive body like “API test note, safe to delete”
  3. List notes again and confirm your new note appears with a valid id
  4. Update the note body and verify the change in a follow-up GET
  5. Open the appointment in the GHL Calendars dashboard and confirm the note is visible
  6. Delete the test note and verify it no longer appears in the list

If notes do not appear in the dashboard, refresh the appointment detail page. Notes update in real time via the API but the dashboard may require a page reload.

Next Steps

Read the full Appointment Notes guide for automation patterns like auto-adding CRM context to new bookings. Pair this with Appointment CRUD for full booking management, or use Calendar CRUD to configure the calendars where appointments live.

Stay sharp. New guides and playbooks as they drop.