Go High Level

πŸš€ Start your FREE 30-day GoHighLevel trial: https://globalhighlevel.com/trial Learn how to use GoHighLevel's enhanced snapshot management tools to selectively create, refresh, and force-create snapshots for your sub-accounts. This episode covers the practical steps to save time, avoid errors, and maintain better control over your agency's account data. In this episode you'll learn: β€’ What snapshot management is and why it matters for GoHighLevel agencies β€’ How to create new snapshots with selective assets in GoHighLevel β€’ How to refresh existing snapshots without rebuilding everything β€’ How force snapshot creation works when assets fail to load Ready to try GoHighLevel yourself? The link above gets you a FREE 30-day trial β€” double the standard 14-day trial. See why thousands of agencies run their entire business on one platform.

What is Go High Level?

Welcome to our podcast, where we dive into everything Go High Levelβ€”from mastering the basics to tackling the most complex tasks. I use GHL daily in my business and rely on Google NotebookLM to stay ahead of the curve, keeping up with all the latest GHL features, tools, and innovations. This podcast is powered by AI, fueled by the research and insights I personally curate to bring you the most valuable and up-to-date content.

Copy this link for a free trial of Go High Level - https://www.gohighlevel.com/highlevel-bootcamp?fp_ref=amplifi-technologies12

Okay, so picture this. It is Monday morning. Uh oh. I already know where this is going. Right, you probably do. So, your highest paying client, they just spent their entire weekend locked in their office. Oh man. Yeah, just obsessively tweaking the copy on this brand new welcome sequence that you just deployed for them. Right. And you you log in and you decide to roll out like a really quick global fix to a completely different funnel. So you just click push update. Oh no. Yep, and instantly you wipe out 48 hours of their hard work, gone. That is just, yeah, that's brutal. And then your phone rings. Yeah. And I mean that is not going to be a fun conversation. No, it's the ultimate nightmare for literally anyone managing multiple sub accounts. And the crazy thing is it usually stems from just like a fundamental misunderstanding of how the data actually moves under the hood. Exactly, which is exactly the core mission of our deep dive today. We are making sure that scenario never ever happens to you. That's. But real quick, before we get into the technical architecture, I want to talk directly to you the listener because if you are running a digital marketing agency, you know that mastering your tech stack is, well, it's the only way to scale without burning out. Oh, completely. So we have an exclusive offer to help you implement everything we uncover today. It's a completely free 30-day GoHighLevel trial. Which is huge by the way. Right, it is double the standard trial length you normally see out there. We want you to have the actual runway to test these advanced strategies, you know, without rushing through it. Yeah, a month is perfect for that. So, the link for that double length trial is waiting for you right down in the show notes below. Seriously, go grab it, keep it open in another tab, and uh let's get into the mechanics. Let's do it. Because the mechanics here are fascinating. We are pulling today's intelligence directly from the high-level support portal. Straight from the source? Exactly. We're looking at the official documentation. So this covers everything from like the raw database logic of loading and pushing all the way to the newly released enhanced snapshot management tools. Okay, let's unpack this. Yeah. Because I feel like we have to start with the foundational data movement, right? For sure. The terminology gets thrown around a lot like loading versus pushing. Yeah, people make it up constantly. And for an agency owner dealing with complex client deployments, getting those two mixed up. I mean that's the difference between a successful launch and catastrophic data loss. 100%. So break down the architectural difference between a load and a push for us. Okay, so to really understand the difference, you have to look at how the database itself treats the incoming assets. Okay. The first mechanism is loading a snapshot. So you're taking a bundled package of assets from a master account and you're deploying it into an existing live sub account. The database treats this as a purely additive process. It is generating entirely new database entries for, you know, every single tag, pipeline, workflow, everything in that bundle. So if we lean into like software development terms, loading a snapshot is essentially cloning a GitHub repository into a new local environment. Yes, that is the perfect mental model. You're just establishing the base code, it doesn't look at what else is running on the server, it just, it installs the package right alongside it. Exactly. You use that load function during client onboarding. You know, you have your master template, your proven SaaS flows, your default pipeline, our bread and butter. Right, and you clone that repo into their empty sub account to just give them their foundation. Makes sense. But the second mechanism, pushing updates, well, that operates on an entirely different set of rules. Pushing is when you send changes from an updated snapshot into sub accounts that have already been loaded with that specific snapshot in the past. Okay, so sticking with the developer analogy, if loading is cloning the repo, pushing is like committing a change to the master branch and then forcing that update out to all the live production environments. Precisely. The architecture actively seeks out the previous versions of those assets and it overwrites them with the new code. Overwrites. Okay, that's the scary word. It is. You use this when your clients are actively using the system and you want to roll out a global improvement. Like a new feature. Right. Let's say you engineer like a highly optimized holiday reactivation campaign in your master account. You trigger a push to sync that specific upgrade across your entire client base simultaneously. Okay, wait, let's explore the reality of that simultaneous deployment for a second. Sure. Because if I have an agency with say 300 actively managed sub accounts and I push a massive data heavy update, I mean my instinct tells me the server is going to bottleneck. Oh, naturally. We're talking about thousands of individual asset rewrites triggering at the exact same millisecond. Does the system just like lock up, crash? Well, HighLevel actually anticipated that exact bottleneck. Okay, yeah. Yeah, they built a very rigid batching protocol into the push and load architecture specifically to protect the servers. How does it work? So, the system will process the first 100 sub accounts instantaneously. Okay, 100 right off the bat. Right. But then it implements a hard pause for 10 minutes. 10 whole minutes. 10 minutes and after that cool down it processes the next block of 100 accounts, pauses for another 10 minutes and it just loops that sequence until the entire deployment is completely finished. Wow, I can see how knowing that is absolutely critical for managing client expectations. Oh, it saves so many headaches. I mean, if you push an update to 300 clients at noon and then client number 250 calls you at like 12:15 complaining they don't see the new funnel. Right, they're like where is it? Exactly, if you don't know about the batching, you might panic and try to push it again, which would probably just corrupt the queue or something. It absolutely would. You just have to do the math. Right, they are in the third batch. It takes 20 minutes, you just tell them, hey, refresh your page at 12:21. Exactly, it saves you from frantically digging through execution logs thinking the software broke. The system is functioning optimally, you know, it's simply throttling the load. That throttling makes perfect sense, but uh, I want to pull on a thread from a moment ago. Okay, what's that? We established that pushing an update is like a forced commit that overwrites the existing assets. Yes. Let's play out the scenario from the opening of this deep dive. If I push an update and it overwrites, my mind immediately goes to the client's local customizations. Ah, yes, the danger zone. Right, does a push just blindly nuke everything the client touched since the last update? This is exactly why you have to understand the database mapping or you really will destroy your client's work. Walk me through it. So, rule number one of pushing. If an item was originally generated by the snapshot, the push will overwrite it with the master version. Okay. Rule number two, and this is the painful one. If the client manually edited that item, like the 48 hours of copywriting. Exactly. Let's say they spent hours tweaking the copy in an email template or they change the X-codes on a landing page to match their brand. Yeah. The moment you push, the system strips out all of their manual edits and it reverts the asset back to match your master snapshot. That is just brutal. But wait, how does the master snapshot even know which specific email template to overwrite in the client's account? I mean there could be 100 emails in there all named differently now. Well, it comes down to invisible unique IDs. Unique IDs. Okay. Yeah, when a snapshot initially loads an asset into a sub account, it permanently stamps that asset with a hidden identification string. And that links it back to the master blueprint. Oh, interesting. So when you push an update, the system it doesn't search by the name of the email or the folder it sits in. It completely ignores that. It just looks for the ID. Exactly. It scans the database for that specific unique ID. When it finds a match, it drops the new code payload, regardless of what the surface level text or design looks like. So it's like a targeted strike based on the ID. You could say that, yeah. But surely there are safe zones, right? Like think about a SaaS onboarding sequence. The client spends three days entering their specific API keys into custom values or setting up their stripe integrations. Oh, absolutely. If I push a new workflow, do those API keys get wiped out because if so, I mean this system is unusable for complex agencies? Right, and the engineers knew that. They built specific guardrails to prevent that exact disaster. HighLevel recognizes that certain data points are inherently localized. Okay, thank God. So, custom values are the primary safe zone. During a push, custom values are never edited, overwritten, or deleted. Oh, that's a relief. Yeah, the master snapshot just assumes the local data in those fields is supreme. It won't touch it. Okay, that saves the API keys and the unique company variables. What else is protected? Assigned users are immune. So if a client assigns specific sales reps to different steps in a pipeline, a push won't strip those assignments. Okay, good. And critically, external agency accounts, meaning accounts that are not under your direct organizational umbrella, they cannot receive pushed updates dynamically at all. Wait, really, not at all. Not at all. They're completely isolated. They have to re-import updates manually via a shared link. Okay, so that protects external accounts. But what about the internal client who legitimately needs to customize a core campaign? Right. Because the documentation highlights a very specific method. I think they call it the copy method as a workaround. Yes, the copy method. It's brilliant. If I know a client wants to aggressively edit their welcome sequence, but I still need to push structural updates to their account down the line, how do I protect their work without isolating them from future updates entirely? Okay, so the copy method actually exploits that unique ID architecture we just talked about. Oh, I see where this is going. Right. If you duplicate an asset inside the sub account, HighLevel generates a brand new, completely unique ID for that duplicated version. Ah. And because the duplicator ID wasn't generated by the master snapshot, Yeah. the master snapshot is completely blind to it. Precisely. It is entirely untracked. So, the agency playbook is basically this. You create a duplicate of the original campaign. You title it something super obvious, like client's custom version. Make it idiot proof. Exactly. You instruct the client to only build their customizations inside that copied environment. Then, you remap their local automations to trigger the copy instead of the original. Okay, so then what happens during the push? When you push your next global update, the master snapshot finds its original ID, overwrites the baseline campaign, but the client's custom copy remains entirely untouched. Wow. It effectively creates like an isolated sandbox for the client. That's exactly what it is, a sandbox. They get the freedom to tinker, and you maintain your global update capabilities. It completely eliminates the friction between agency control and client customization. Honestly, it is the single most important operational habit an agency owner can develop. Okay, so we've successfully protected the client's local environment. Let's look upstream for a second. Upstream. Okay. Let's look at the source code itself, the master agency account. If I am the agency owner and I build a brilliant new funnel in my master sub account, how does that new data actually get packaged into the snapshot? Yeah, how does it move up? Yeah. Does the snapshot just passively mirror my master account in real time, like does it automatically know I made a change? It is definitely not a live mirror. Yeah. And assuming it is will lead to massive deployment failures. Oh, really? Yeah. Changes made in your master sub account do not automatically update the snapshot shell. The master account and the snapshot are decoupled entities. So I have to manually trigger a data compilation essentially. You must manually go to your agency view, navigate to the account snapshots tab, locate the specific snapshot and initiate the refresh function. Just hit refresh. Right. That action tells HighLevel to scan the master sub account, read the current database state, and pull all those recent modifications into the snapshot package. Okay. And you absolutely must run this manual refresh before you even click push updates. If you skip the refresh, you're just pushing the old code payload again. You're just spinning your wheels. Exactly. Okay, a forced manual refresh. Got it. But let's play out a highly specific logistical scenario regarding that refresh, because my instinct tells me there is a massive trap here. Okay, lay it on me. Let's say I am in my master account optimizing a workflow. I look at a sequence and I realize a wait step, let's say, wait three days before sending email to is just killing conversions. Happens all the time. Right. So I delete the wait step entirely. I refresh the snapshot and I push the update to my clients. Okay. What happens to the poor contacts in the client's accounts who are actively sitting inside that wait step at the exact moment the push deletes it? Wow. Do they just get stuck in like a software matrix forever or does it crash the workflow? That is a super valid technical concern. And honestly, in older legacy systems, that exact scenario would totally corrupt the database or leave ghost contacts in limbo. Right, just floating around. But HighLevel engineered a specific ejection protocol to handle this. Oh, an ejection protocol, I like the sound of that. It's pretty slick. If a snapshot refresh removes a step that live contacts are actively queued in, the system automatically intervenes and safely removes those contacts from the workflow. So they don't get trapped. They are just gracefully ejected. Exactly. Gracefully ejected. But wait, how do I as the agency owner track that? If 50 leads suddenly vanish from a sequence, my client is going to demand answers. Does the system just silently dump them? No, no. The system maintains a very rigorous audit trail. Okay. The next time you or the client open the affected workflow, a one-time alert banner will actually display right there on the interface, noting the structural change. Oh, that's handy. And more importantly, if you drill down into the execution logs for that workflow, the database leaves a crystal clear footprint. What does it say? The log will explicitly state, removed by snapshot refresh. Wow, okay, that execution log is a lifesaver for post-mortem analysis. Oh, completely. But I mean relying on logs means a disruptive event already occurred, right? True. And it seems like HighLevel clearly realized that the old method of pushing these massive all-or-nothing updates was kind of the root cause of these disruptions in the first place, which I guess forced them to change the architecture entirely. You hit the nail on the head. The the legacy update process was basically a blunt instrument. Yeah, an all-or-nothing deal. Right, you updated the entire multi-gigabyte snapshot or you updated nothing. If a single asset out of a thousand had a misconfigured trigger, the entire deployment could fail. Which is terrifying. It was. But the new enhanced management tools, they really represent a paradigm shift here. We now have selective asset inclusion during the initial build and selective snapshot refresh for updates. Select Okay, so instead of moving the entire mountain every time I want to update a single pebble, I have granular control. You have total modularity now. Agency owners can navigate a highly detailed checklist, instead of the system blindly sweeping up every tag, pipeline and form, you can select only specific workflows. Oh, just one funnel. Exactly. A single updated funnel or just a handful of modified email templates. The snapshot becomes incredibly lean and purposefully focused. Let me test the absolute limits of that modularity though. Okay, go for it. Let's say I'm moving too fast on a Friday afternoon. I click create new snapshot, I name it, I select the master account, but I bypass the checklist entirely. Oh, boy. Yeah. I select zero assets and hit compile. Does the database throw a critical error and lock me out? Actually, no. It doesn't throw an error at all. Really? Yeah. The system will process your request and generate the snapshot shell. It will appear in your directory, complete with its own metadata, but it will be an entirely empty vessel. Just a shell. Exactly. It won't contain a single line of actionable code until you go back, initiate a refresh, and actually map the assets you want to pull in. That is wild. It allows the structural framework to exist completely independently of the data payload. It really is brilliant. But let's talk about when actual data loads do fail. Because moving complex interconnected assets across servers, it isn't always seamless. Nope, definitely not. The documentation highlights a new fail-safe called Force Snapshot Creation. Yes. This is a game changer. If we think about the old system, a single corrupted image file in an email could cause like a timeout error. And the system would scrap the entire snapshot creation process. You'd lose hours of compiling. The old system demanded absolute perfection. If one dependency failed, the entire build was rejected. Exactly. I look at Force Snapshot Creation like compiling a massive piece of software or rendering a feature length 4K video. Oh, that's a good comparison. Right. If the rendering engine drops a single frame at hour three, you do not scrap the entire file and start over from zero. You log the dropped frame, skip it, force the render to finish and you just patch the missing frame later. Is that how this fail-safe operates? The logic is identical. Yes. If the HighLevel system detects a failure while trying to compile a massive list of assets, say, perhaps a temporary API timeout on a specific third-party integration, you are no longer blocked. Thank goodness. Right. A diagnostic warning will trigger, presenting the option to click force create snapshot. And it essentially tells the system to push past the broken dependency. It commands the system to save every single asset that is successfully compiled into the package and actively skip the broken payload. Wow. And crucially, it does not delete the broken asset from your master sub account, it merely bypasses it for this specific compilation. Oh, that's smart. Yeah. And then it generates a comprehensive summary report detailing the exact assets that were skipped. The productivity implications of that are massive. You don't restart a two-hour build, you read the diagnostic report, identify the one email template that timed out, fix the corrupted image link, and then use the selective refresh we just talked about to surgically inject that one fixed item into the snapshot. Boom, exactly. It allows the agency to maintain momentum instead of just constantly fighting the software. Yeah. However, the documentation stresses one non-negotiable caveat regarding the data integrity here. Okay, what's the catch? The force creation feature is strictly limited to the initial creation of a new snapshot. You cannot invoke the force function when you are performing a refresh of an existing snapshot. Oh. Let me think through why they would restrict that. Take a guess. Well, if I force a refresh and it skips a core pipeline due to a temporary error, and then I push that partial update to my clients, I could accidentally delete their live pipelines because the system thinks the asset was removed from the master. You nailed it. The database architecture demands that updates are complete and verified. It actively prevents you from accidentally deploying corrupted or partial code packages to hundreds of live production environments. That makes so much sense. The data integrity just has to be absolute. Man, we have covered incredible ground today. From understanding the deep-level differences between cloning a baseline load and committing a global push, all the way to exploiting unique IDs to protect client data and utilizing granular modular updates to bypass server bottlenecks. It's a lot, but when you look at all these incremental improvements together, it becomes really clear that the sources are pointing toward a very specific future for agency operations. Where is it all heading? HighLevel is officially teasing the next evolution of this architecture. Asynchronous asset retrieval. Asynchronous asset retrieval. Okay, that sounds like enterprise level back-end engineering right there. It really is. But what does transitioning to an asynchronous model actually mean for the day-to-day reality of an agency owner? Like practically speaking? Practically speaking, it represents the complete removal of processing friction. Okay. Right now, even with the batching, you know, 100 accounts every 10 minutes, you are still actively managing the deployment flow. Right, you're monitoring it. Asynchronous retrieval means the system will execute these massive complex data pulls entirely in the background. It completely detaches the processing load from your active browser session. Yeah. It forces an agency owner to ask a serious strategic question. If deploying unbelievably complex, data heavy campaigns across 500 sub accounts happens frictionlessly in the background, without tying up your team or your bandwidth. What's your excuse for not scaling faster? Exactly. What is your excuse? That is a phenomenal point. When the technology ceases to be the bottleneck, the only limitation left is really just the ambition of your sales pipeline. Absolutely. The agencies that master these granular snapshot tools today are the ones we're going to completely dominate when that asynchronous scale fully unlocks. Oh, without a doubt. They will be positioned to handle thousands of accounts with the exact same operational overhead it currently takes to manage like 50. 100%. I completely agree. And listen, to everyone tuning in, knowing the theory behind unique IDs and selective asset inclusion, I mean that's really only half the battle. Yeah, you have to get your hands dirty. Right. The only way to truly master this architecture is to actively build within it. And that is exactly why I am reminding you to take advantage of that exclusive free 30-day GoHighLevel trial. Such a good opportunity. It is. Having a full month, which is double the standard window, to safely test the copy method, to practice forcing a snapshot compilation, and to see how the execution logs track data movement. It is an unparalleled opportunity to train yourself and your team without risking live client data. Seriously. The cost of making an overwrite mistake on a paying client is immeasurable. This trial provides the sandbox to fail safely. Exactly, fail safely now so you don't fail later. The link to claim that extended 30-day trial is right down there in the show notes. Go click it, set up your master account, and start building leaner, modular, and infinitely safer agency deployments today. Couldn't have said it better. Well, thank you for joining us on this deep dive into snapshot architecture. Grab that trial, protect your client's data, and we will catch you on the next one.