On this page

GoHighLevel Snapshot Workflows Not Transferring? Here's What's Really Happening

Missing workflows, empty editors, everything switched off — when a GoHighLevel snapshot does not bring your automations across the way you expected, it is usually doing exactly what it was built to do. Here is what it carries, what it drops, and the cleaner way to move one or a few workflows.

You applied a GoHighLevel snapshot to a sub-account, and the workflows are not where you expected: some are missing entirely, some open empty, and the ones that did come across are switched off and sitting as drafts. This is one of the most common surprises in a GoHighLevel migration, and it is rarely a bug: snapshots behave exactly as designed — the catch is that what they are designed to do is narrower than most people assume.

What a snapshot actually carries (and what it skips at capture time)

A snapshot is a whole-account template. When you save one, GoHighLevel bundles a point-in-time copy of the sub-account's configuration — workflows, pipelines, custom fields, calendars, funnels and more — into a single package you can load into a new account. The phrase that matters is point-in-time. A snapshot only contains what existed in the source account at the moment it was captured.

So if you built a workflow, or edited an existing one, after taking the snapshot, that work is simply not in the package — no matter how recently you applied it. A surprising share of "missing workflow" reports come down to this: the snapshot is simply older than the workflow someone is looking for. Check its capture date against when the workflow was last touched before assuming anything is lost.

Why workflows arrive as drafts or look empty

Even the workflows that are in the snapshot do not arrive ready to run. GoHighLevel deliberately imports them in a published-off state — as drafts. That is a safety decision: an automation firing the instant a snapshot loaded could email or text real contacts before you had checked anything, so every imported workflow is left switched off for you to review and publish by hand. That explains the "inactive" workflows, and it is why some look missing until you filter the list to show drafts.

The "empty" ones are a different story. When a workflow opens with its trigger blank or its actions stripped back, it usually means it referenced something the snapshot could not carry cleanly across the account boundary. The shell of the workflow loads; the parts that depended on account-specific wiring do not.

Steps and actions a snapshot silently strips

Some actions are known not to travel well in a snapshot. Integration-dependent steps are the usual casualties — adding or removing a contact from a Facebook custom audience, Google Ads conversion actions, Google Analytics events, and Facebook Conversions API steps frequently arrive blank or are dropped, because each is bound to an integration and account that exist only in the source.

The real problem is that this happens quietly — the workflow still loads, the surrounding steps are intact, and there is no error. If you publish without checking, the automation runs with a hole in it, and a missing Conversions API action is invisible until you go looking for it.

The gap to watch: a snapshot tells you nothing about what it dropped. There is no diff and no "these three actions could not be carried" report — the workflow simply loads lighter than it left. Reviewing every imported workflow by hand is not optional.

Pipeline, tag and calendar references that come across blank

Workflows lean heavily on other records in the account: move an opportunity to a pipeline stage, add a tag, assign a user, book into a calendar, update a custom field. GoHighLevel stores each of those as an id that is unique to the account it was created in, not as a name you would recognise.

Applied to a fresh account, a snapshot recreates many of those assets alongside the workflows, so the new ids are generated together and usually line up. But the moment a workflow references something the snapshot did not recreate — or you apply it on top of an account that already has its own pipelines and tags — the ids no longer match and the reference comes across blank — you open the step and the pipeline dropdown is empty.

Why snapshots are clumsy for already-live accounts

All of this is manageable when the destination is a brand-new, empty sub-account — that is exactly what snapshots are built for, and the regenerated ids tend to resolve among themselves. It gets painful when you only wanted one or a few workflows, or when the destination is already live.

A snapshot is all-or-nothing. You cannot cherry-pick a single workflow out of it, so you drag in funnels, pipelines and settings you did not want, risk duplicating assets the account already has, and still have to hunt down every draft and blank reference by hand afterwards. For one nurture sequence into an account a client is already using, that is a lot of collateral. (GoHighLevel's native duplicate feature does not rescue you here either — it only copies a workflow within a single sub-account, never across the account boundary.)

Moving one or a few workflows with save and deploy instead

When the job is one or a few workflows into an account that already exists, a per-workflow approach is cleaner than a snapshot. ExportGHL Workflows works at the level of the individual automation rather than the whole account. You save a workflow from the source to a private cloud library — capturing the full build: every trigger, every action in order, waits, branches and settings — then deploy it into the destination as a new workflow whenever you need it. Save a workflow once, deploy it into each account that needs it.

Two things make this safer than a snapshot for live accounts. First, every deploy lands as a new workflow and never overwrites an existing one unless you deliberately choose to update it, so nothing the client depends on gets clobbered. Second, cross-account remap tackles the blank-reference problem head on: it matches pipelines, stages, tags, users, custom fields, calendars and templates by name in the destination and rewrites the ids, so the steps resolve instead of opening empty. Anything it cannot match confidently is flagged, and the workflow is imported as a draft rather than published broken — so you review a workflow that is wired up, not one full of silent holes.

One honest caveat, true either way: sending infrastructure does not travel with a workflow. The sending domain, from-address, phone number and A2P registration are tied to each account individually, so an email or SMS step needs its sending connection reconnected in the destination no matter how the workflow arrived. ExportGHL carries the workflow's build and its references, not your A2P registration or sending domain.

If you are weighing the two approaches, see snapshots vs workflow export. To move a specific automation step by step, read how to copy a workflow between accounts, or the broader GoHighLevel workflow migration guide. Moving your first workflow is free, with no card.

Frequently asked questions

Why are my workflows missing after restoring a snapshot?
Usually one of two reasons. A snapshot only contains what existed when it was captured, so any workflow built or edited after that point was never in the package. And workflows that did come across are imported switched off as drafts, so they can look missing until you filter to show drafts. Check the snapshot's capture date, and look under drafts, before you assume a workflow was lost.
Do snapshots carry Facebook and Google Ads workflow actions?
Often not cleanly. Integration-bound steps — Facebook custom audience actions, Google Ads conversions, Google Analytics events and the Facebook Conversions API — are tied to a connection that only exists in the source account, so they frequently arrive blank or are dropped when a snapshot loads. There is no warning that it happened, so open each imported workflow and check these steps individually before you publish.
Why are snapshot workflows inactive or in draft?
By design. GoHighLevel imports every workflow from a snapshot switched off, as a draft, so an automation cannot fire against real contacts the instant the snapshot loads. You are expected to open each one, confirm the triggers and actions came across intact, reconnect anything account-specific, and publish it by hand. A draft is a safety pause, not a fault — but it does mean nothing runs until you turn it on.
How do I move just one workflow without a full snapshot?
Use a per-workflow tool instead of a whole-account snapshot. ExportGHL Workflows saves a single workflow to a cloud library and deploys it into the destination as a new workflow, with pipelines, tags and other references remapped by name so they do not come across blank. It never overwrites existing automations, and anything it cannot match is left as a draft for you to finish.

Move one workflow, not a whole snapshot

Save a workflow from one account and deploy it into another as a new workflow — references remapped, nothing overwritten. Your first move is free, no card.

Start free