How to Push Snapshot Updates to Existing Sub-Accounts in GoHighLevel

by Fahim

Updating a workflow, funnel, or email sequence across 40 live client accounts one by one will burn an entire week. The good news: you can push updates directly from a master snapshot. The bad news: if you don’t configure your asset conflict rules properly, you’ll wipe out custom client phone numbers, break form triggers, and overwrite live production workflows.

Pushing snapshot updates to sub-accounts in GoHighLevel dashboard
Pushing snapshot updates to sub-accounts in GoHighLevel dashboard

The Master Account Workflow

Before touching the agency-level snapshot manager, make all your edits inside your source sub-account (your Master Template or Golden Account). HighLevel snapshots are static, point-in-time copies. If you fix a broken condition in your master workflow, the snapshot itself stays frozen on the old version until you manually tell HighLevel to re-scan that account.

I keep a dedicated sub-account named [MASTER] Core System v2 that never runs active campaigns or takes real contact submissions. When I build a new onboarding pipeline or overhaul our lead nurture, I test every trigger with dummy contacts inside this account first.

Once your changes are verified and working, jump over to your Agency View. Go to Settings > Account Snapshots. Find your snapshot, click the three dots on the right, and hit Refresh Snapshot. HighLevel will queue a background job that usually wraps up in 10 to 30 seconds.

Understanding Conflict Resolution: Overwrite vs. Skip

The single most dangerous button in the snapshot manager is “Select All”. When you push updates into existing accounts, HighLevel asks how to handle assets that share the exact same internal identifier or name in the destination sub-account.

Here is what happens during a conflict:

  • Overwrite: Replaces the client’s asset entirely with the snapshot version. If the client tweaked an SMS copy step, swapped out a webhook URL, or changed an email layout, their changes are wiped out immediately.
  • Skip: Leaves the client’s existing asset untouched. The engine skips that item and moves on to the rest of the queue.
  • Select Individual Components: Lets you drill down and check specific assets—like pushing a single new workflow or custom field while leaving sensitive items like Funnels or Settings untouched.

If you use custom values in GoHighLevel funnels and workflows, pushing duplicate keys will trigger conflict resolution. If you choose Overwrite, the client’s unique values (their booking link, local business phone, or address) get overwritten by your master template defaults. Always be intentional here.

Step-by-Step: Refreshing and Pushing the Snapshot

Here is the exact sequence I use to push clean updates without breaking client accounts:

  1. In your Agency Dashboard, click Settings in the bottom-left sidebar.
  2. Select Account Snapshots from the agency menu.
  3. Find your target snapshot. Click the three dots (...) on the right and hit Refresh Snapshot. Wait for the status badge to update with a fresh timestamp.
  4. Click the three dots again and select Push Update to Linked Accounts (or Push to Sub-Accounts).
  5. Select the destination sub-accounts. You can filter by tag or search by account name.
  6. Click Proceed to open the Asset Selection and Conflict Resolution modal.

In the asset selection modal, HighLevel breaks assets into categories: Workflows, Funnels & Websites, Custom Fields, Custom Values, Tags, Forms, Surveys, and Triggers. Expand each section individually instead of blindly checking the master box.

If you’re distributing snapshots across multiple agencies or team members, check our guide on how to share GoHighLevel snapshots with agency share links.

Handling Workflows and Draft Status Gotchas

When you push a brand-new workflow into an existing sub-account, HighLevel defaults it to Draft status. This is a deliberate safeguard so live contacts don’t immediately trigger an unverified sequence before you can double-check calendar assignments or sender numbers.

However, if you overwrite an existing workflow that was already Published, HighLevel keeps it published while updating the underlying steps. If an action step relies on a user, calendar, or phone pool that doesn’t exist in that specific client account, that step will fail silently at runtime.

Under the hood, here is how HighLevel structures the conflict resolution payload when processing a push batch via their backend:

Sample snapshot push payload structure for sub-account updates:

{ "snapshotId": "snp_9f82a7c14b2e", "destinationLocations": [ "loc_a8310bc92d11", "loc_f7421de83a04" ], "conflictResolution": { "workflows": "OVERWRITE", "customValues": "SKIP", "customFields": "MERGE", "funnels": "SKIP" }, "selectedAssets": { "workflows": [ "wf_lead_nurture_v3", "wf_review_request_v2" ], "tags": [ "lead-engaged", "review-submitted" ] }
}

If you automate client provisioning via the HighLevel API Integrations, understanding how location IDs map to these snapshot batches is . See our walkthrough on how to find and use client location IDs in GoHighLevel API integrations for your backend scripts.

What Happens to Custom Values, Tags, and Custom Fields?

Collisions behave differently depending on the asset type:

  • Tags: HighLevel merges tags safely. If a sub-account already has a tag named New Lead, pushing the snapshot won’t duplicate it or break existing contact assignments.
  • Custom Fields: If a field key matches (e.g., contact.property_type), HighLevel keeps the field definition intact. It does not overwrite or wipe the actual data stored on existing contacts.
  • Custom Values: If you push {{custom_values.company_name}} with Overwrite selected, it replaces the client’s business name with your template placeholder. Always set Custom Values to Skip on live accounts.
  • Email Templates: Overwriting will replace any custom logos, footers, and physical address blocks the client added inside their builder.

For more edge cases on asset merging, consult the official HighLevel Snapshots Documentation.

Tracking Push Status and Troubleshooting Failures

Once you trigger the push, don’t just close the tab. Head to Settings > Account Snapshots > Snapshot Push History.

The queue shows each account with a real-time status:

  • Queued: The job is waiting in the HighLevel worker queue.
  • In Progress: Assets are actively being written to the sub-account.
  • Completed: All selected assets were written successfully.
  • Failed: One or more assets threw a validation error.

If an account fails, click the record to inspect the logs. In my experience, failures almost always come down to three things:

  1. Missing Form or Survey References: A workflow references a form from the master account that wasn’t included in the push selection.
  2. Missing Calendar Dependencies: An appointment trigger expects a calendar ID that doesn’t exist in the target sub-account.
  3. Plan Level Restrictions: The target sub-account is on a restricted plan tier that blocks specific trigger types or actions.

If you push workflow updates and your outgoing webhooks suddenly stop firing, review our guide on how to send authenticated webhooks with headers in GoHighLevel workflows.

A Real Gotcha: The Disconnected Trigger Problem

I ran into this the hard way: I pushed an updated nurture sequence to 28 client sub-accounts. Four accounts stopped triggering entirely on new form submissions. The workflow was published, the snapshot push reported 100% completion, and the steps looked fine on the surface.

The problem? The master workflow trigger had a filter: Form is > [Master] Seller Intake Form. In the destination sub-accounts, the form was copied with a new internal UID, but the workflow trigger lost its binding to that form.

To prevent this, always bundle the form (or funnel) and the workflow together in the same push batch. When pushed together, HighLevel’s dependency mapper links the new form’s UID to the workflow trigger automatically. If you push the workflow on Monday and the form on Tuesday, that dependency link breaks, leaving your trigger filter blank.

Frequently Asked Questions

Can I undo a snapshot push if I accidentally overwrote client data?

No. HighLevel does not have a rollback feature for snapshot updates. Once an asset is overwritten, the old version is gone. You’ll need to manually rebuild the lost steps or restore funnels from the sub-account’s revision history if available.

Do contacts currently inside an active workflow get ejected when I push an update?

No. Contacts sitting on a “Wait” step or moving through an active workflow remain in the sequence. If you add new steps after their current position, they’ll hit those new steps once their wait condition ends. If you delete the step they’re currently on, they’ll advance to the next available valid action.

Why are newly pushed workflows sitting in Draft mode?

HighLevel defaults newly added workflows to Draft to prevent incomplete triggers or unassigned calendars from firing against live contacts. You’ll need to log into the sub-account and switch the toggle to Published manually.

Does pushing a snapshot update the sub-account’s Twilio or LC Phone numbers?

No. Phone numbers, LC Email DNS records, user permissions, and Stripe integrations are location-specific infrastructure. Snapshots will never touch or overwrite telephony or payment settings.

Next Steps

Before rolling updates out to your entire client roster, spin up a sandbox sub-account with dummy custom values and test workflows. Practice refreshing and pushing updates there first so you know exactly which assets conflict. Once you’re comfortable with conflict resolution, learn how to dynamically populate funnels and workflows using Custom Values across your entire account fleet.

all_in_one_marketing_tool