Calendars are the one part of a GoHighLevel sub-account where the damage is immediately visible to the client. Lose contacts and the marketing goes quiet. Lose appointments and somebody shows up at an office at 2pm for a meeting nobody in the building knows about, or worse, nobody shows up at all and the client spends the afternoon staring at an empty waiting room.

The direct answer, for anyone reading this because a calendar just vanished: HighLevel does have a restore path, it runs through Audit Logs, and it is narrower than it looks. Deleting a calendar deletes every appointment on it. You can restore that calendar within 60 days and get back the appointments that died with it, but only the ones deleted within roughly half an hour of the calendar itself. Anything deleted before that, including appointments someone removed individually last week, does not come back. And unlike contacts and opportunities, there is no export button sitting in the appointments list to give you a copy in the first place.

That combination, no export and a conditional restore, makes calendars one of the thinner spots in HighLevel’s native protection.

Can you export HighLevel appointments?

Not in the way you can export contacts or opportunities. Appointment List View gives you Smart Lists, advanced filters, custom columns, and row actions for editing, rescheduling, and deleting. What it does not give you is an export. Agencies have asked for one, and the request is still sitting on HighLevel’s ideas board, which tells you both that the gap is real and that it has been real for a while.

The closest native option lives under Reporting, in the Appointment Report. Filter by calendar, by appointment status, by booked-for or created-on date, apply the range you want, and you can export what the report is showing. That is genuinely useful for analysis. It is not a backup. The report is built to answer questions like which calendar books the most and which one gets cancelled on, so what you get out is counts, statuses, channels, and sources. It is not a faithful record of every appointment with its contact, notes, assigned user, and timing that you could reconstruct a schedule from.

So the practical position is that most agencies have no copy of their appointment data at all. With contacts you at least have a CSV export that goes stale. With appointments there is nothing to go stale.

What happens when you delete a HighLevel appointment?

It is gone. HighLevel’s own documentation for the row actions in Appointment List View describes Delete as permanently removing the appointment from the calendar and from the list. No trash, no recently deleted view, no 60-day window.

This is worth sitting with, because HighLevel has spent the last couple of years adding restore paths to almost everything else. Contacts got a 60-day restore. Opportunities got one. Deleted pipelines can be revived from Audit Logs. Workflows have a restore. Bulk deletes of custom objects, companies, and tasks can be undone from the Bulk Actions page. Appointments were left out of that pattern, and the one restore feature that touches them, which we will get to next, is explicitly designed not to bring back individually deleted appointments.

What happens when a whole calendar is deleted?

Every appointment on it is deleted at the same time. That is not an edge case or a bug report, it is how HighLevel documents the behavior. There is no archive option on a calendar, so an agency retiring an old booking flow has exactly one button, and that button takes the booking history with it.

Recovery exists and it is better than nothing. In the sub-account, go to Settings, then Audit Logs, find the log entry for the deleted calendar, click the three dots next to it and select Restore. The calendar comes back and so do its appointments.

Here is the catch that decides whether that actually saves you. Only appointments deleted within 30 minutes either side of the calendar deletion are restored. HighLevel’s example is clear about the intent: delete a calendar at 10:00 AM and every appointment that died with it comes back, but an appointment you deleted at 9:00 AM that same morning does not. The rule exists so that a calendar restore does not quietly resurrect appointments somebody removed on purpose, which is reasonable design and also means the restore is not a general undo for your schedule. On top of that, audit logs are retained for a maximum of 60 days, so the whole recovery path expires two months after the mistake.

How the native options actually line up:

Native optionProtects againstWindowWhat it misses
Appointment Report exportNothing, reallyPoint in time, goes staleFull appointment records, it is report data
Appointment List View deleteNothing, it is the riskNoneDeletion is permanent, no restore path
Calendar restore from Audit LogsDeleting a whole calendar60 daysAppointments deleted more than 30 minutes from the calendar deletion
SnapshotRebuilding calendar setupPoint in time, goes staleEvery appointment

Read down the last column and the shape of the problem is obvious. Every native protection covers the calendar as a configuration object. None of them covers the bookings.

Do HighLevel snapshots back up calendars?

They back up the shell. Snapshots carry a full set of calendar configuration assets: calendars themselves, calendar groups, calendar services, service categories, service add-ons, and service resources such as rooms and equipment. Loading a snapshot into a fresh sub-account rebuilds that whole scheduling structure, which is exactly what you want when onboarding a new client on a proven setup.

What they do not carry is a single appointment. HighLevel’s snapshot documentation lists appointments right next to contacts, conversations, and live account activity in the items that do not transfer, and the FAQ on that page answers the question directly. This is the same boundary we covered in snapshots versus backup and the same one that leaves opportunities behind when you move pipeline structure. Snapshots are a templating tool. Treating one as your calendar backup means you would recover your booking forms and lose every booking.

Can you back up appointments through the API?

Partly, and it takes more work than most objects. API v2 exposes calendars and calendar events, so you can list the calendars in a location, then pull events with GET /calendars/events. The endpoint requires a locationId, a start time, an end time, and one of calendarId, userId, or groupId, which means there is no single call that says “give me everything.” You have to enumerate calendars first, then walk a time window per calendar, and decide how far back and forward you care to go. There are also endpoints for reading individual appointments and appointment notes, so the data is reachable.

All of this sits inside the usual limits of 100 requests per 10 seconds and 200,000 per day per app per location, which is plenty for appointments unless you are sweeping years of history across dozens of sub-accounts on a tight schedule.

A DIY backup job can therefore cover appointments, and if you are already running one for contacts it is not a huge addition. The honest warning is the same one that applies to every DIY route. Pulling data out is the easy half. Restoring means recreating appointments through the API onto calendars that may themselves have been deleted, in the right order, against contacts that still need to exist, without double-booking the ones that survived. That is a project with edge cases, and you will be debugging it on the day you least want to.

How do you actually back up HighLevel calendars?

The manual version is thinner here than for other objects, because there is no export to schedule. What you can do is document the configuration, calendar names, types, durations, buffers, availability, assigned users, and service setup, and keep that record somewhere outside HighLevel so a rebuild is possible. Then run the Appointment Report export on a cadence and keep the files, accepting that they are a partial record. And treat calendar deletion the way you would treat dropping a production table: nobody deletes a calendar without checking what is booked on it first, because the restore window is generous right up until the 30-minute rule bites.

The automated version is why we built GHLArmor, and since it is our product you should weigh the recommendation accordingly. GHLArmor is the first backup approved by the HighLevel Marketplace, and it captures appointments and calendar configuration continuously alongside contacts, conversations, opportunities, and custom fields, stored outside HighLevel entirely. The design target is the gap this post keeps landing on: a restore that still works past 60 days, still works for an appointment somebody deleted on its own last month, and does not depend on an audit log entry existing.

Use the native features regardless. The calendar restore is a real safety net, it costs nothing, and it will save you on the common version of this mistake. Just be clear about where it stops, and make sure the thing standing past that line is not a snapshot.

Frequently asked questions

Can I export HighLevel appointments to a CSV file? Not from the Appointments tab. There is no export button in Appointment List View, and agencies have an open feature request asking for one. The closest thing is the Appointment Report under Reporting, where you can filter by calendar, status, and date range and export what the report shows. That gives you counts, statuses, channels, and sources rather than a complete record of every appointment, so it is reporting data, not a backup file.

What happens when you delete a HighLevel calendar? Every appointment on that calendar is deleted with it. HighLevel states this plainly in its own documentation: delete a calendar and all of its appointments go at the same moment. There is no archive option, only delete, which is why an agency tidying up unused calendars can wipe out months of booking history without realizing it.

Can you restore a deleted HighLevel calendar and its appointments? Yes, within limits. Go to Settings, then Audit Logs, find the entry for the deleted calendar, click the three dots and select Restore. The calendar comes back along with appointments that were deleted within 30 minutes either side of the calendar deletion. Appointments deleted outside that window are not recovered, and audit logs are only retained for 60 days.

Can I restore a single deleted appointment in HighLevel? No documented path exists. Deleting an appointment from Appointment List View permanently removes it, and the calendar restore feature deliberately excludes appointments deleted outside the 30-minute window around a calendar deletion. Contacts and opportunities both get a 60-day restore. An individual appointment does not.

Do HighLevel snapshots back up calendars and appointments? Snapshots copy calendar configuration, including calendars, calendar groups, services, service categories, service add-ons, and service resources. They do not copy appointments. HighLevel lists appointments alongside contacts and conversations as items that do not transfer, because snapshots are a templating tool for configuration rather than a backup of live account activity.