
GoHighLevel Sub-Account Backup & Restore (2026)
By Dr Priya Jaganathan, GoHighLevel Certified Admin · HL Growth Partner, Australia · Updated 21 September 2026 · 10 min read
A proper GoHighLevel sub-account backup does not exist as a single button, and every agency that assumes otherwise finds out at the worst possible moment. Snapshots look like backups. They are not. They carry the build, not the business.
This piece sets out exactly what GoHighLevel can and cannot restore, verified against HighLevel's own help documentation, and then gives you a weekly and monthly routine an Australian agency can actually run. The honest framing first: GoHighLevel is a CRM and marketing platform, not a backup product. Recovery is your job.
Quick Facts
| What a snapshot copies | Configuration assets only — Workflows, triggers, funnels, forms, calendars, custom fields, custom objects, pipelines, tags, dashboards (HighLevel help documentation, 2026) |
| What a snapshot never copies | Contacts, conversations, messages, appointments, reputation data, Stripe connections and third-party integrations (HighLevel help documentation, 2026) |
| Sub-account deletion grace period | 24 hours to reverse; after that the deletion is permanent (HighLevel help documentation, 2026) |
| Deleted contact restore window | Up to 60 days from Bulk Actions — but conversations, notes and tasks do not come back with the contact (HighLevel help documentation, 2026) |
| Workflow version history | Last 10 versions or 30 days; restoring creates a new draft rather than changing the live Workflow (HighLevel help documentation, 2026) |
| Contact CSV export availability | Export jobs run server-side and the finished file stays downloadable for 30 days (HighLevel help documentation, 2026) |
| API v2 limits for scheduled exports | 100 requests per 10 seconds burst and 200,000 requests per day, per Marketplace app per resource (HighLevel developer documentation, 2026) |
Why a snapshot is a template, not a HighLevel backup and restore plan
HighLevel's own snapshot overview describes snapshots as reusable templates that capture selected configuration assets. That wording is deliberate: a snapshot clones a system, it does not preserve a client's history.
The copyable asset list is genuinely broad: Workflows and triggers, funnels and websites, forms, surveys, calendars and services, custom fields, custom values, custom objects, pipelines, tags, trigger links, email and text templates, dashboards, custom reports and membership products.
The exclusion list is where agencies get hurt. Contacts, appointments, conversations, conversation history, messages, reputation data, live account activity, Stripe connections, third-party integrations, private dashboards and contact-to-contact associations all stay behind.
What that means in practice
Rebuild a client's sub-account from a snapshot after a disaster and you get a working machine with no memory. Every lead, SMS thread, call recording, booked appointment and form submission is gone. For a lead-gen client running twelve months of Meta traffic, that is the entire asset.
What a snapshot carries versus what you have to back up yourself
| Asset | In a snapshot? | Your backup method |
|---|---|---|
| Workflows, triggers, funnels, forms, calendars | Yes | Snapshot refresh, plus Workflow version history |
| Custom fields, custom values, custom objects, pipelines, tags | Yes | Snapshot refresh |
| Dashboards and custom reports | Yes (private dashboards excluded) | Snapshot refresh; rebuild private dashboards manually |
| Contacts and custom field values | No | Scheduled CSV export or API v2 pull |
| Opportunities and pipeline stage history | No | Opportunity CSV export or API v2 pull |
| Conversations, SMS and email threads | No | API v2 only — no native bulk CSV |
| Call recordings and voicemail | No | Pull recording URLs via API and store them yourself |
| Form and survey submissions | Form definition yes, submissions no | CSV export from the submissions page |
| Appointments and booking history | No | API v2 calendar events pull |
| Media library files | Not listed as a copyable category | Download and mirror in your own storage |
| Stripe, Meta, Google and Twilio connections | No | Documented reconnection runbook |
Read that table as a work list. Every row marked "No" is a job your agency owns, for every client.
The restore windows that actually exist inside GoHighLevel
GoHighLevel does ship some genuine recovery features. They are narrow, and knowing the exact edges is the difference between a shrug and a lost client.
Deleting a sub-account
HighLevel's documentation gives a 24-hour grace period on sub-account deletion. Miss it and the contacts, messages, campaigns and settings are gone.
Pause the sub-account instead of deleting it. There is no upside to deleting a departing client's account on the day they leave. Build the pause-then-export sequence into your GoHighLevel client offboarding and data export process.
Deleted contacts
Deleted contacts can be restored from the Bulk Actions page for up to 60 days, including bulk deletions. That is a real safety net for a mis-filtered smart list.
But the documentation is explicit about the catch: restoring a contact does not restore the associated conversations, notes and tasks. You get the record back, not the relationship history.
Version history on funnels and Workflows
Funnels and websites carry auto-save and version history. Workflows have their own version history with a timeline showing who edited what, when, and whether the version was draft or published.
The limits matter: roughly the last 10 versions or 30 days, restoring produces a new draft rather than changing the live Workflow, and the Workflow must be in draft with no enrolled contacts to restore.
The exports that do the real backup work
Contacts
Contact export now runs as a queued server-side job tracked from the Bulk Actions dashboard, and the finished file stays available for 30 days. You choose which fields to include, so include everything: name, email, phone, tags, source, date created and every custom field.
Export from the full contact list, not a filtered smart list. A filtered export is the single most common way agencies think they have a backup and do not.
Keep field naming stable across sub-accounts, because a restore is just an import in reverse and the same rules apply as in any GoHighLevel contact import and CSV mapping exercise.
Opportunities
Opportunities export separately from contacts. A contacts-only backup loses every deal value, stage and pipeline position, which for most B2B clients is the commercially important half of the CRM.
Form and survey submissions
The submissions page lets you download the current page as CSV or use Export to receive an emailed link for the full set. Snapshots carry the form definition, never the submissions, so this export is not optional.
Custom objects
If you have modelled properties, vehicles, enrolments or jobs as custom objects, the structure travels in a snapshot but the records do not. Agencies that have gone deep on GoHighLevel custom objects for complex data beyond contacts need an API-based export routine from day one.
Using API v2 for scheduled GoHighLevel sub-account backup
Manual exports fail because humans forget. The only routine that survives a busy agency is a scheduled one.
API v2 exposes the endpoints you need: search contacts with advanced filters, search opportunities, search conversations, get messages by conversation ID, and calendar events. Point a scheduled job at those and write the JSON to your own storage.
Respect the published limits. HighLevel's developer documentation sets a burst limit of 100 API requests per 10 seconds and a daily limit of 200,000 requests, per Marketplace app per resource, where a resource is a location or company. Page slowly and stagger sub-accounts across the night.
Practical notes for the build
- Store exports outside GoHighLevel — S3, Google Drive or a local NAS — never in the sub-account's own media library.
- Download the audio behind call recording URLs; a URL in a JSON file is not a backup.
- Name every file
locationid_object_YYYY-MM-DDso a restore is a sort, not an archaeology dig. - Keep one monthly copy of each backup set for twelve months, and log every run.
- Restrict who can trigger exports — an export is a full copy of client PII leaving the platform, which is a GoHighLevel sub-account permissions and user roles question as much as a technical one.
A weekly and monthly routine with an RTO mindset
Start from the only question that matters: if this sub-account vanished this morning, how long can the client be down and how much data can we afford to lose? That recovery time and recovery point objective sets the frequency of everything below.
Weekly
- Automated API pull of contacts, opportunities, conversations and appointments for every active sub-account.
- Export form and survey submissions for any client running live lead forms.
- Check the previous week's job log for silent failures.
Monthly
- Refresh the snapshot for each client build so the configuration backup is not twelve months stale.
- Full contacts and opportunities CSV export as a human-readable fallback.
- Download new media library assets added that month.
- Review the integration reconnection runbook — Stripe, Twilio, Mailgun, Meta, Google — none of those reconnect themselves.
Quarterly
Do a restore drill. Spin up a throwaway sub-account, load the snapshot, import last week's contacts and opportunities CSV, and time it.
A backup you have never restored is a hypothesis, not a backup. The drill also surfaces drift between your snapshot and your live builds, which is the same discipline behind GoHighLevel snapshot updates and pushing changes.
Why this matters more in Australia right now
The OAIC reported 1,205 data breach notifications in the 2025 calendar year, the highest since the Notifiable Data Breaches scheme began in 2018 and an 8% increase on 2024. Agencies holding client CRM data are custodians of that risk, and an uncontrolled pile of CSV exports on a laptop is its own exposure.
Back up deliberately, store it encrypted, and delete old copies on a schedule.
The official references worth bookmarking are HighLevel's Snapshots Overview help article for the authoritative include and exclude lists, and the API v2 rate limits documentation before you build any scheduled export.
Common mistakes to avoid
- Treating a snapshot as a backup. It restores the build and none of the client's data, conversations or history.
- Exporting contacts from a filtered smart list and filing it as a full backup.
- Forgetting opportunities entirely, then discovering the pipeline values were the only numbers the client cared about.
- Leaving exports inside the same sub-account's media library, where they die with the account.
- Deleting a departing client's sub-account on the last day instead of pausing it, with a 24-hour window and no rollback after that.
- Never running a restore drill, so nobody knows whether the archive is complete until the day it must be.
- Storing years of unencrypted client exports with no retention policy.
If you want a documented backup and recovery routine built across your whole GoHighLevel portfolio, book a strategy call with the HL Growth Partner team.
Frequently asked questions
Does a GoHighLevel snapshot back up my contacts?
No. HighLevel's documentation states that contacts, appointments, conversations, conversation history, messages and reputation data do not transfer in a snapshot. A snapshot copies configuration assets such as Workflows, funnels, forms, calendars, custom fields and pipelines. Contact data must be backed up separately by CSV export or API v2.
Can I recover a deleted GoHighLevel sub-account?
Only within the 24-hour grace period documented by HighLevel. After 24 hours the deletion is permanent and the contacts, messages, campaigns and settings cannot be retrieved. If a client relationship is ending, pause the sub-account and export the data before you consider deleting anything.
How long do I have to restore deleted contacts in GoHighLevel?
Deleted contacts can be restored from the Bulk Actions page for up to 60 days, including records removed in a bulk delete. Restoring the contact does not restore its associated conversations, notes or tasks. Treat the 60-day window as a safety net for mistakes, not as a backup system.
What is the difference between a snapshot and a real HighLevel backup and restore process?
A snapshot is a configuration template that rebuilds how a sub-account works. A real backup and restore process also preserves what happened inside it: contacts, opportunities, conversations, submissions and appointments. You need both, because a snapshot alone gives you a functioning but empty account.
Can I export GoHighLevel conversations and SMS history?
There is no native bulk CSV export for conversation threads the way there is for contacts. The reliable route is API v2, using the search conversations endpoint and then retrieving messages by conversation ID, and writing the results to your own storage. Budget for the published rate limits when you schedule it.
Does Workflow version history protect me from a bad edit?
Partly. Workflow version history covers approximately the last 10 versions or 30 days and lets you restore a previous version as a new draft. It does not reverse actions the faulty version already executed, so emails already sent stay sent and tags already applied stay applied.
How often should an agency back up GoHighLevel sub-accounts?
Weekly for data that changes constantly, meaning contacts, opportunities, conversations and appointments, and monthly for configuration via a snapshot refresh plus a full CSV export. Set the frequency from your recovery point objective: the gap between backups is exactly how much client data you are prepared to lose.
Related Articles on HL Growth Partner
Sub-account structure and access
- GoHighLevel Sub-Account Permissions & User Roles (2026)
- GoHighLevel Custom Menu Links: Agency Setup (2026)
Data hygiene and structure
- GoHighLevel Tags Strategy: Naming, Structure and Hygiene (2026)
- GoHighLevel Workflow Folders & Naming Conventions (2026)
- GoHighLevel Contact Import: CSV Mapping (2026)
