Share GoHighLevel Snapshots: Agency Share Link Setup Guide

by Fahim

Exporting an agency build asset by asset takes hours and almost always breaks your workflow dependencies. HighLevel agency share links solve this: you package your entire stack—funnels, workflows, custom fields, and email templates—into a single link that another agency can import in a couple of clicks.

I’ve built and handed off dozens of snapshots for client accounts and SaaS rollouts. Along the way, I’ve hit every stupid edge case: custom field mapping collisions, missing trigger links, and accidentally leaking staging templates through unrestricted share links. Here is how to prep, restrict, share, and update your snapshots cleanly without breaking anything downstream.

Close-up of network switch hardware representing data transfer and GoHighLevel snapshot sharing
Close-up of network switch hardware representing data transfer and GoHighLevel snapshot sharing

The Types of Snapshot Share Links in HighLevel

When you generate a link in Agency Settings, HighLevel gives you four sharing modes. Pick carefully—using the wrong type is how templates leak to the public or fail to import for clients.

  • One-Time Share Link: Generates a single-use URL that invalidates immediately after the first agency imports it. Use this if you sell snapshots and want to stop people from forwarding the link.
  • Permanent Share Link: A static URL that never expires. Anyone with the link can import it into their agency. Good for public onboarding templates or affiliate lead magnets.
  • Agency Restricted Link: Locks the snapshot down so only specific HighLevel Agency Relationship IDs can pull it. This is what you should use for client work and private partner distribution.
  • Sub-Account Restricted Link: Restricts installation directly to explicit Location IDs inside the target agency.

Step 1: Clean and Prepare Your Source Sub-Account

Never take a snapshot from an active client sub-account with live customer data. Build everything inside a dedicated, clean master template account instead.

Before you hit capture, run through this pre-flight cleanup in your source sub-account:

  1. Replace any hardcoded phone numbers, business names, or webhook secrets with custom values. If you haven’t set these up yet, check our guide on how to use custom values in GoHighLevel.
  2. Audit custom fields and delete throwaway test fields created during development. If you leave them in, they’ll clutter every sub-account created from this snapshot forever.
  3. Check your workflow triggers. If a workflow listens for a specific tag or form submission, verify that the form and tag actually exist in this account so they get bundled into the snapshot.
  4. Wipe all test contacts, conversations, and appointments. Snapshots only copy structural assets, but leftover contact references can trigger workflow validation errors during import.

Step 2: Create the Snapshot in Agency View

Once your master account is scrubbed, switch to Agency View to generate the snapshot.

  1. Head to Agency View > Settings > Snapshots.
  2. Click + Create Snapshot in the top right.
  3. Give it a clear, versioned name (something like Dental-Niche-Onboarding-v2.1).
  4. Pick your clean template account from the Select Account dropdown.
  5. Click Save.

HighLevel will queue the build. For smaller builds (a couple of funnels and under 10 workflows), it finishes in 15–30 seconds. Larger accounts with massive websites and hundreds of custom values can take a minute or two.

Step 3: Generate the Agency Share Link

Once the status flips to complete, grab your share link based on who needs access.

  1. Locate your snapshot under Agency Settings > Snapshots > My Snapshots.
  2. Click the three dots () on the right side of the row.
  3. Click Share Snapshot.
  4. Pick your link type: Get Link (Permanent), One-Time Share, Agency-Restricted, or Location-Restricted.

If you choose Agency-Restricted, you’ll need the recipient agency’s Relationship ID. They can find this under Agency Settings > Company > Agency Relationship Number.

If you automate or query snapshot metadata programmatically using the HighLevel API v2 Documentation, this is the JSON structure you’ll deal with:

{ "snapshotId": "snp_98a7df8b2c1e4f5a", "name": "Dental-Niche-Onboarding-v2.1", "shareType": "agency_restricted", "allowedAgencyIds": [ "rel_8492048102", "rel_5510294811" ], "createdAt": "2025-01-15T14:22:10.847Z"
}

Copy the generated URL. Depending on your whitelabel domain settings, it will look like https://affiliates.gohighlevel.com/?fp_ref=snapshot&share=snp_98a7df8b2c1e4f5a or a custom app URL.

Step 4: How Recipients Import and Deploy Your Snapshot

When the recipient clicks your link, HighLevel handles the import in two distinct steps: saving it to their agency library, then pushing it into a location.

  1. The recipient opens the link while logged into their HighLevel agency account.
  2. They click Yes! Import Snapshot on the prompt.
  3. The template now shows up under Agency Settings > Snapshots > Imported Snapshots.
  4. To apply it to an existing sub-account, they click the three dots on the imported snapshot and select Refresh / Push Snapshot to Location.
  5. To spin up a new sub-account with the snapshot pre-loaded, they select it from the snapshot dropdown under Sub-Accounts > + Create Sub-Account.

If they are pushing updates to an active sub-account without wanting to wipe out local client edits, have them follow our guide on how to update GoHighLevel snapshots without overwriting sub-account assets.

What Actually Transfers (And What Gets Left Behind)

Snapshots bundle almost all core assets, but account-level credentials and external infrastructure never transfer across agencies. Here is the breakdown:

  • What transfers: Funnels, websites, forms, surveys, workflows, email templates, custom fields, custom values (keys and default values), tag definitions, pipeline stages, and courses.
  • What does NOT transfer: Connected domain names, DNS records, phone numbers, A2P 10DLC registrations, live Stripe/PayPal keys, user accounts, OAuth integration tokens (Google/Meta), and domain-locked chat widgets.

If funnels show 404s or broken paths after an import, the recipient simply needs to connect their own domain. Walk them through connecting Cloudflare custom domains to GoHighLevel to get DNS routing squared away.

Troubleshooting Broken Snapshot Imports

When an import runs into problems, it’s usually one of these three issues:

1. “Location Not Found” or API Validation Errors

This typically happens when you trigger automated pushes via webhooks and feed HighLevel an invalid or mismatched sub-account ID. Verify the target sub-account ID using our walkthrough to find your GoHighLevel location ID for API v2 requests.

2. Workflows Stuck in Draft Mode

Snapshots import workflows in Draft mode if they depend on an unassigned resource—like an unconfigured LC Phone/Twilio pool or a missing Google Calendar link. The recipient has to hook up those third-party services in their sub-account first, then flip the workflows to Publish.

3. Merge Fields Showing Empty Strings

If emails or SMS alerts go out with blank values instead of business names, check the Custom Values tab. The snapshot creates the keys, but if your master account relied on dynamic values that weren’t supplied, the target sub-account will have empty strings until filled in under Settings > Custom Values.

Here is a quick Node.js script to list all snapshots registered to your agency token via the public API:

import axios from 'axios'; const agencyApiKey = process.env.GHL_AGENCY_API_KEY;
const companyId = process.env.GHL_COMPANY_ID; async function getSnapshots() { try { const response = await axios.get('https://services.leadconnectorhq.com/snapshots/', { headers: { 'Authorization': `Bearer ${agencyApiKey}`, 'Version': '2021-07-28' }, params: { companyId: companyId } }); console.log(`Found ${response.data.snapshots.length} snapshots:`); response.data.snapshots.forEach(snap => { console.log(`- [${snap.id}] ${snap.name} (${snap.type})`); }); } catch (error) { console.error('Failed to fetch snapshots:', error.response?.data || error.message); }
} getSnapshots();

For more on managing agency OAuth scopes and tokens, check the HighLevel Support Center.

Frequently Asked Questions

Can I edit a snapshot after generating a share link?

Yes. Make your edits in the master sub-account, go to Agency Settings > Snapshots > My Snapshots, click the three dots, and hit Refresh Snapshot. Anyone who imports the link after that gets the fresh build. It will not auto-update accounts that already imported the previous version unless you explicitly push it.

What happens if I delete the source sub-account?

The snapshot remains safe in your agency library. However, you won’t be able to refresh or edit that snapshot template moving forward because the source account is gone. Keep your master accounts active and organized in a dedicated folder.

Why does my recipient get a “Permission Denied” error on an agency-restricted link?

Check their Relationship Number. If they have a multi-tier agency setup or changed whitelabel branding recently, their Agency ID might have changed. Grab the exact ID from their Agency Settings > Company screen and regenerate the share link.

Can one-time share links be used again if the import fails halfway?

No. Once the URL is hit and HighLevel initiates the import handshake, the token is consumed. If the connection drops or fails, just generate a new one-time link from your snapshot menu.

all_in_one_marketing_tool