Blog

  • A GoHighLevel Funnel Domain Move Is More Than a DNS Change

    A GoHighLevel Funnel Domain Move Is More Than a DNS Change

    A GoHighLevel funnel domain can resolve correctly and still send visitors through a broken journey.

    The new domain opens. SSL appears. A landing page loads. That only proves the browser can reach something.

    The real cutover starts after that. Forms still need to submit to the right place. Buttons and booking links need to land where the business expects. Tracking has to survive the URL change. Old campaign links need somewhere useful to go. Public pages that already rank or receive traffic need a clean relationship with their new URLs.

    A GoHighLevel funnel domain migration is therefore a visitor-path migration as much as a DNS change. The new domain is ready when a customer can enter through the same real-world paths, complete the same actions, and reach the same next step without falling back into the old setup.

    Map every public path that depends on the old domain

    Start with the old root domain or subdomain, then work outward.

    List the funnels, websites, landing pages, confirmation pages, forms, booking pages, resource pages, and other public assets using that domain. Record the important paths, not only the home page. A funnel may have several live step URLs, and outside campaigns may point directly to a middle step rather than the first page.

    Then search outside HighLevel. Email templates, SMS messages, ads, QR codes, social profiles, PDFs, saved replies, browser bookmarks, partner pages, and printed materials may still contain the old URL.

    The point is to build a cutover map before changing DNS. A domain migration becomes harder when the team discovers old public links only after customers start clicking them.

    BrandLyft’s GoHighLevel buildout timeline already owns broad pre-launch page, form, and funnel QA. This article starts with an existing public path that already works and now has to move.

    Connect the destination domain before treating DNS as finished

    HighLevel currently connects funnel and website domains through its Domains & URL Redirects setup. Depending on the registrar and setup, the account may use Domain Connect or add the required DNS records manually.

    For a root domain or subdomain, the useful cutover question is not whether somebody changed an A or CNAME record. HighLevel needs to recognize the destination domain and attach the intended funnel or website to it. Where a default page matters, confirm that too.

    HighLevel also provisions SSL after the domain is linked. Give that process time to finish before deciding the cutover failed. If Cloudflare manages the DNS, follow HighLevel’s current proxy guidance rather than assuming a proxied record will behave like a normal funnel or website connection.

    Do not remove the old domain from the working setup before the new one has reached a stable connected state. DNS propagation, record conflicts, SSL issuance, and domain-assignment mistakes are easier to recover from while the source path still exists.

    Page assignments and URL paths need their own migration map

    A domain change can leave the pages intact while the public URLs change underneath them.

    Record the old URL and intended new URL for every important page. Keep the path structure where it still makes sense. When paths change, decide whether the old URL should redirect to a new page, another funnel step, or an external destination.

    HighLevel distinguishes a funnel’s domain-level URL from the individual step paths inside that funnel. Changing the domain does not remove the need to check each important step. Thank-you pages, application steps, confirmation pages, and hidden campaign pages can be missed if the team tests only the first URL.

    Open every priority URL directly after the new domain is connected. Check the page itself, then follow its buttons and next-step actions. A page loading at the right hostname does not prove the rest of the funnel stayed on the same path.

    Forms need a real submission from the new public URL

    A form can render normally and still fail the business test.

    Submit it from the new domain with a controlled test contact. Confirm the contact lands in the intended sub-account and the expected fields populate. Then check attribution and the follow-up workflow or notification.

    If the form redirects after submission, inspect that destination too. Confirmation URLs are easy places for an old domain to survive. The form may work while the customer gets sent back to the previous page afterward.

    Repeat the test on mobile. Embedded forms, pop-ups, and multi-step experiences can behave differently once the page is published on the final domain, especially when outside scripts, custom CSS, or third-party embeds are involved.

    Do not sign off from the form builder. Sign off from the public page.

    Booking paths and embedded tools can survive the page move but keep an old destination

    A landing page may move cleanly while the appointment button still opens an old calendar URL.

    Check buttons, embedded calendars, pop-ups, forms that route into booking, and confirmation pages that send visitors to the next appointment step. The same applies to chat widgets, surveys, payment steps, or other embedded tools that the page uses to continue the journey.

    There is another HighLevel domain layer worth separating here. A funnel or website domain hosts public pages. A branded API domain can affect system-generated links such as forms, surveys, calendar links, trigger links, payment links, and review links. Changing the funnel domain does not automatically prove those generated links now use the same hostname.

    That is not a reason to turn this article into an API-domain setup guide. It is a reason to inventory the links a visitor actually sees and confirm which domain controls each one.

    Tracking has to be tested after the URL changes

    A page view is not the same thing as a tracked visit.

    HighLevel has built-in funnel and site analytics. Many businesses also use Google Analytics, Meta Pixel, Google Ads tags, call-tracking scripts, or other outside measurement tools. A domain cutover can alter the URL, page path, referral context, or final destination those systems expect.

    Open the new public page in an incognito window and trigger the events the business actually cares about. That may include a page view, form submission, button click, booking, or purchase. Confirm the expected event appears in the relevant platform rather than assuming an existing tracking snippet kept working because the page copied correctly.

    If campaign attribution depends on query parameters or UTMs, test a real tagged link. Preserve the parameters through the visitor path where the campaign needs them, and verify that redirects are not dropping information the reporting process uses.

    HighLevel’s current funnel analytics can show page views and opt-ins for funnel assets, but outside advertising and analytics platforms still need their own validation after a public URL changes.

    Email and SMS links need a separate old-domain search

    The web cutover can be correct while yesterday’s automation keeps sending tomorrow’s visitors to the old URL.

    Search workflow emails, campaign emails, SMS templates, saved snippets, appointment messages, nurture sequences, and one-off templates for the old hostname. Include button URLs and linked text, not only visible copy.

    Custom Values can help when the account already uses one reusable URL in several assets, but hard-coded links still need to be found individually. The practical question is simpler: does a live customer message still point at the domain being retired?

    Trigger a few important messages after the change and click the links from a real inbox or phone. That catches redirects, tracking parameters, and mobile behavior that are easy to miss inside the editor.

    Ads, QR codes, and outside references can keep the old domain alive

    Some of the most expensive old links sit outside HighLevel completely.

    Paid-search and social campaigns may use the old domain as a final URL. QR codes can be printed on signs, mailers, event materials, packaging, or business cards. Partner sites, directories, Google Business Profile links, social bios, PDFs, and sales documents may send traffic directly to a specific funnel step.

    Customer scanning a QR code at a transit shelter, showing how outside links can keep an old GoHighLevel funnel domain in circulation.
    Links outside HighLevel can keep the old domain alive after the cutover.

    Do not assume a redirect makes every outside reference permanent forever. A redirect is a safety net, not a substitute for updating destinations the business controls.

    Ads deserve extra care because final-URL mismatches and unexpected redirect behavior can affect review or delivery. Test the final landing URL from the advertising platform after the new domain is live, and update the destination deliberately rather than relying on an old chain.

    Use 301 redirects when the old public URL is permanently moving

    HighLevel currently supports 301 redirects for an entire connected domain or for specific URL paths. The destination can be a custom URL, a funnel step, or a website page.

    That gives the migration a clean way to preserve old links when a public URL has permanently changed. Build the redirect map from the inventory rather than creating one broad redirect and hoping every old path lands somewhere sensible.

    A former lead-magnet URL should reach the corresponding new resource. Campaign pages should reach their replacements. Retired pages may need a deliberate alternative rather than the home page.

    Watch for redirect loops and unnecessary chains. The old URL should normally move directly to the final destination instead of bouncing through several intermediate addresses.

    HighLevel’s current 301 redirect guide distinguishes full-domain redirects from path-specific redirects and recommends keeping the old path useful when URLs change.

    Indexed pages need an SEO decision, not just a redirect decision

    Not every funnel page matters to search engines. Some do.

    If the old domain or path has been indexed, linked to externally, or already receives organic traffic, map the move like a normal URL migration. Preserve the intended destination, use permanent redirects where the old URL is going away, and review the new page’s indexability and metadata.

    Canonical tags solve a different problem. HighLevel’s current funnel-indexing guidance says a canonical can identify the preferred URL when multiple versions remain accessible. It does not redirect the visitor. If the old URL is being retired, a 301 is usually the more direct migration tool.

    After launch, check the URLs in the search tools the business already uses. Look for unexpected indexed variants, old pages that remain accessible, or new pages that point their canonical back to the retired hostname.

    Do not turn a campaign-only funnel into an SEO project merely because the domain changed. Apply the indexing work to pages that actually have search visibility or are meant to earn it.

    Test the new visitor path on more than one browser state

    Cached DNS, cookies, saved sessions, and browser history can hide migration problems.

    Test the priority pages on desktop and mobile, then repeat the important path in an incognito or private window. Use a device or connection that did not participate in the build when practical.

    Start from several real entry points. Type the new URL directly, click an email or SMS link, follow an ad test link, scan a QR code, and use one redirected old URL. Submit the form, follow the thank-you step, and complete any booking or conversion action that belongs to that journey.

    If different subdomains serve different parts of the experience, watch the address bar as the customer moves. Unexpected jumps back to the old domain are evidence that a link, embed, redirect, or generated URL still needs work.

    Keep the old domain available until rollback stops being useful

    Old-domain retirement should be the last step, not the first proof of confidence.

    Keep the source configuration long enough to verify DNS, SSL, page assignments, forms, redirects, analytics, customer links, and real traffic. If the cutover fails, the rollback plan should say which DNS record or domain assignment needs to be restored and who has the registrar access to do it.

    A practical rollback threshold can include the new site failing to load consistently or forms not creating the intended records. Paid traffic reaching the wrong page, SSL errors, broken redirects, or lost conversion tracking can justify the same response.

    Do not promise instant DNS rollback. Caches and propagation can delay what different visitors see. The useful plan is knowing which known-good state the team can restore and which traffic sources can be paused while the domain settles. During a GoHighLevel funnel domain migration, that recovery path matters more than pretending DNS can be reversed instantly.

    A GoHighLevel funnel domain migration is finished when the visitor path is predictable again

    Domain resolution is the beginning of the test, not the end.

    Pages need to load on the intended URLs. Forms need to submit. Booking and embedded tools need to continue the journey. Tracking needs to record the events the business uses. Old links need redirects or replacements. Indexed pages need the right permanent signals. Outside campaigns need to stop sending traffic into retired paths.

    Once those pieces behave consistently from real entry points, the old domain can move from production dependency to redirect and historical infrastructure.

    If this domain move sits inside a larger lead-to-revenue rebuild, BrandLyft’s Revenue System Build is the broader implementation path. If the work is mainly inside an existing HighLevel setup, the GoHighLevel Partner service is the closer fit. When the move also requires deeper website or custom web work, BrandLyft’s Web Design service covers that layer.

    Move the domain without losing the path that turns a visit into a lead

    BrandLyft can trace domains, page paths, forms, booking links, redirects, tracking, and live visitor journeys before the new GoHighLevel domain takes over.

    Review Revenue System Build

    Already know the cutover needs hands-on help? Book a discovery call.

  • Will Your GoHighLevel Webhook Still Work After the Endpoint Changes?

    Will Your GoHighLevel Webhook Still Work After the Endpoint Changes?

    A webhook can keep returning 200 while the business result is already wrong.

    The endpoint changed. The workflow still fires. A test record reaches the new service. Then production starts. The new receiver creates a second contact, drops the opportunity ID, rejects one field type, or loses the source value reporting depended on.

    A GoHighLevel webhook migration is not finished when the URL is replaced. The cutover has to prove that the same event still carries the right data and authenticates correctly. It also has to find or create the intended record, expose failure, and give somebody a workable recovery path.

    The safest starting point is the existing contract. Document what the live webhook does before changing the system that receives or sends it.

    Map the live handoff before you touch the endpoint

    Write down the current sender, receiver, trigger, endpoint, authentication method, payload, and business purpose. Add what record is supposed to change and what the team expects to happen after a successful request.

    That sounds basic until an old integration turns out to contain three jobs at once. A form submission may send contact data to middleware, the middleware may enrich it, and a second request may update an opportunity. Another webhook may look similar but exist only to send an internal event into a reporting database.

    Do not describe both as “the GHL webhook.” Name the actual handoff.

    BrandLyft’s GoHighLevel Custom Build article already covers the architecture question. It deals with what should send, what payload is expected, what record should change, how duplicates are handled, and who owns failure. This article starts later. That contract already exists, and now production has to move without silently changing it.

    Know which kind of GoHighLevel webhook is actually moving

    HighLevel has more than one webhook path, and their behavior is not interchangeable.

    An outbound Workflow Webhook sends data from a HighLevel workflow to another service. A Custom Webhook action gives the workflow more control over the HTTP method, authorization, headers, query parameters, content type, and request body. An Inbound Webhook works in the opposite direction: an outside system sends JSON into a HighLevel workflow trigger.

    Marketplace app webhooks are another case. They use the developer platform rather than the normal workflow action and have their own signing, delivery, logging, and retry behavior.

    Identify the type before planning the migration. Moving a simple outbound workflow action to a new catch URL is one job. Replacing an OAuth-protected Custom Webhook or changing a Marketplace app endpoint is another.

    HighLevel’s current Custom Webhook documentation and Inbound Webhook documentation show those differences directly. Each path exposes different controls and constraints.

    Change the endpoint and the authentication as separate cutover items

    A new URL can accept the request and still reject the credentials that made the old path work.

    For Custom Webhooks, HighLevel currently supports authentication patterns including Bearer tokens, API keys, Basic Auth, OAuth2, and custom headers. The platform also stores supported secret keys in masked credential controls at the location level. If the integration is moving into another sub-account, confirm that the destination has the credential it needs. Do the same when the credential owner changes.

    Keep secrets out of screenshots, migration spreadsheets, chat threads, and query strings unless the receiving API explicitly requires the query-string pattern. Rotate credentials when the migration itself changes who or what should have access.

    If the receiver validates a webhook signature, include that verification in the cutover test. For Marketplace apps, HighLevel’s current SDK supports signature verification for webhook delivery. An endpoint can be reachable and still fail because the new service does not preserve or validate the request the same way.

    Preserve the data contract during a GoHighLevel webhook migration

    Capture a known-good example from the old path before editing the new one.

    Compare field names, nesting, data types, required fields, null behavior, identifiers, timestamps, and static values. If middleware transforms the request, document both sides: what HighLevel sends and what the final receiver gets.

    The ordinary outbound Webhook action can include default contact and location data plus additional data tied to the workflow trigger. HighLevel’s current documentation notes that object-specific data depends on the trigger context. Appointment details, for example, do not simply appear because the contact has an appointment somewhere in the CRM.

    Custom Webhook actions can build a more deliberate JSON or form-style payload. That flexibility makes field-by-field comparison easier. The team does not have to trust that two requests merely “look about right.”

    Do not change field names, casing, nesting, or types casually during the endpoint migration. If the receiver also needs a contract change, treat that as a separate decision.

    Inbound webhook schema changes can break the workflow after the request is accepted

    An inbound request reaching HighLevel does not prove the rest of the workflow understands it.

    HighLevel’s current Inbound Webhook trigger accepts JSON through supported HTTP methods and uses received sample data as a mapping reference for later workflow steps. Its documentation says to reselect the mapping reference when the incoming data structure changes. Downstream actions then have a current reference for those fields.

    The trigger also requires an email or phone number when it needs to find or create the contact. That makes identity part of the contract, not an optional cleanup detail.

    The new sender may rename phone, nest it under another object, or stop sending email. The request can still arrive while later workflow steps lose the information they depended on.

    Retest the whole workflow with the new payload. Do not stop at “HighLevel caught the webhook.”

    Record identity rules before testing duplicates

    The migration needs one written answer for what makes two events belong to the same business record.

    For an inbound HighLevel workflow, email or phone may be used to find or create the contact. Other integrations may rely on a HighLevel contact ID, opportunity ID, external customer ID, order ID, or another durable key. The receiver may use an upsert rule instead of a create-only rule.

    That distinction becomes dangerous during side-by-side testing. Sending one sample event to both production paths can create duplicates. That may mean two contacts, two opportunities, two jobs, or two downstream notifications.

    Use controlled test records and a clear duplicate rule. Where the receiver supports idempotency or a stable event ID, test it. Where it does not, keep the side-by-side validation read-only or isolated from production writes.

    The migration is not proving that two endpoints can both receive data. It is proving that the new path produces one intended business result.

    Protect source and attribution fields during the field-map review

    A webhook can create the right contact and still damage reporting.

    Source, campaign, location, service, owner, pipeline, and external-system identifiers often look less important than name, email, and phone during a migration. They become important later. Reporting may need to explain the lead source, owning branch, offer, or why two systems disagree.

    Compare the field map against the reporting and routing logic that uses those values. The old middleware may normalize source names or translate an external status before sending it into HighLevel. The new path has to reproduce that behavior or deliberately replace it.

    A technically successful request that turns every source into “Webhook” can still be a failed migration.

    Build test payloads around real variations, not one perfect sample

    Start with a clean happy-path record, but do not end there.

    Use a small test set that reflects the data the integration actually sees. Include one record with the normal required fields and one with optional fields missing. Add a pre-existing contact and a case that exercises opportunity or appointment data when the webhook depends on that object.

    If the integration handles multiple locations, services, products, or source types, include the variations that change mapping or routing. If one field can arrive as blank, zero, false, or an empty list, test the representation the receiver actually needs to handle.

    HighLevel’s standard outbound webhook documentation recommends testing the workflow with a sample contact and reviewing Execution Logs. For exact request inspection, HighLevel points to the receiving application or a webhook-testing endpoint. The standard workflow log does not expose the full outbound payload.

    Success and failure responses need an agreed meaning

    The receiver should return a response that tells the sender what happened, and the team should know where to see it.

    For a Custom Webhook, HighLevel’s current guidance uses familiar HTTP outcomes during troubleshooting. Examples include 400 or 422 for invalid data, 401 or 403 for authentication problems, 404 for a wrong path, 409 for a conflict, 429 for rate limiting, and 5xx for server failure.

    Do not treat every non-200 response as the same incident. Authentication failures, schema failures, duplicate protection, rate limits, and an unavailable server need different fixes.

    What the test provesWhat to inspect
    The request reached the intended receiverEndpoint, method, timestamp, request log
    Authentication still worksToken or key, scopes, headers, signature validation
    The payload still matches the contractRequired fields, names, types, nesting, mapping
    The correct record changed onceContact or opportunity identity, duplicate rule, resulting record
    Failures are visibleWorkflow log, middleware log, receiver log, response code
    Recovery is understoodRetry, replay, manual repair, rollback owner

    Do not assume every HighLevel webhook has the same retry behavior

    Retry logic is one of the easiest places to borrow the wrong rule from the wrong webhook product.

    HighLevel publishes automated retry behavior for Marketplace app webhooks, including delivery identifiers that receivers can use when guarding against duplicate processing. The same documentation explicitly scopes that feature to Marketplace webhooks rather than Workflow Inbound Webhook triggers.

    That means a workflow webhook migration should not be designed around a retry promise taken from Marketplace developer documentation. Check the actual sender, middleware, queue, and receiving service involved in this connection.

    Define what happens when the receiver times out, returns a rate-limit response, or accepts the request but fails during downstream processing. Decide who can replay an event and how they know it was not already processed. Use a stable identifier when the receiver supports one.

    Idempotency is useful even when the platform retries are limited because people replay events too.

    Side-by-side validation should not double-write production

    Running old and new paths together can be useful when the validation method is controlled.

    A safer pattern is to let the new endpoint observe or log representative payloads without performing the final production write. Another option is to replay captured test payloads into a staging receiver and compare the transformed result with the current production path.

    If both production endpoints must stay active briefly, define which one is authoritative. Make the secondary path harmless. Do not let both paths write the same production result. That includes contacts, opportunities, charges, bookings, and customer messages.

    Parallel validation is useful only when it reduces uncertainty. Two systems changing the same record at once creates more of it.

    Failure visibility needs an owner before the cutover

    The new endpoint should have somewhere obvious to tell the team it is unhealthy.

    For workflow webhooks, review HighLevel Execution Logs alongside the logs from the middleware or receiving service. The standard outbound Webhook documentation says Execution Logs can confirm that the action ran. Exact payload inspection may still require the receiver or a webhook-testing endpoint.

    Marketplace app webhooks have a separate developer-side logging surface. HighLevel’s current Webhook Logs Dashboard documentation describes payload, response, attempt, and delivery history for those app webhooks. Do not assume that dashboard represents normal workflow webhook actions.

    Decide who watches failures after cutover, what counts as an alert, and how long the team will monitor more closely. “The developer will notice” is not an ownership plan.

    Set rollback criteria before the new endpoint receives production traffic

    Rollback should be based on observable failure, not on how nervous the cutover feels.

    Rollback signals can include unresolved authentication failures, missing required fields, duplicate records, or material attribution changes. Repeated receiver errors or a missing downstream action can qualify too.

    Keep the old endpoint, credentials, mapping notes, and relevant middleware configuration available until the new path has passed the agreed tests. If the migration changes secrets, keep the old credential only as long as the fallback path requires it. A security policy that requires immediate revocation takes priority.

    For inbound HighLevel webhooks, remember that replacing the trigger can generate a new webhook URL. HighLevel says deleting and recreating an Inbound Webhook trigger changes the URL. Requests to the old URL then stop entering that workflow. Coordinate the external sender before using that as the cutover step.

    Retire the old endpoint after the business result is stable

    A GoHighLevel webhook migration is ready to finish after the new path handles representative events and preserves the required field map. It should also produce the right records once, keep needed attribution, and expose failures somewhere the team can act on them.

    Then watch the production path long enough to catch events that did not appear in the controlled samples. Rare cases can still expose a contract assumption later. That may be a weekend source, an unusual opportunity status, or one location with a different mapping.

    The old endpoint can be retired when the new one is not merely reachable but trusted.

    If the webhook sits inside a broader custom integration, BrandLyft’s CRM & App Development service is the strongest fit. It covers API calls, webhooks, middleware, and data movement between systems. If the work is mainly inside an existing HighLevel account, the GoHighLevel Partner path is the closer fit.

    Change the endpoint without changing what the integration means

    BrandLyft can review the endpoint, authentication, payload, field map, record behavior, middleware, and failure path before a live GoHighLevel integration moves.

    Review CRM & App Development

    Already know the integration needs hands-on review? Book a discovery call.

  • Keep Existing Bookings Intact During a GoHighLevel Calendar Migration

    Keep Existing Bookings Intact During a GoHighLevel Calendar Migration

    A GoHighLevel calendar migration can look finished the moment a new booking link opens. That is usually too early to trust it.

    A live calendar already has commitments behind it. Future appointments are attached to people, users, meeting locations, linked calendars, reminders, cancellation rules, and sometimes rooms or other bookable resources. Moving the visible calendar without moving those dependencies can leave customers booking into one setup while staff are watching another.

    The cutover is complete when the new booking path works and the appointments already on the books still make sense. That means proving the old and new sides agree before the business retires anything customers or staff still depend on.

    First, identify what kind of calendar move this actually is

    A full sub-account transfer is different from rebuilding a calendar inside another sub-account.

    HighLevel’s current sub-account transfer guidance says supported account history stays with the sub-account when the whole account moves between agencies. A snapshot works differently. Snapshots can carry calendar configuration but exclude appointments from snapshot contents.

    That distinction changes the cutover plan. If the business is transferring the same live sub-account, the job is mostly about verifying that the scheduling system still behaves correctly after the account move. If the destination is a rebuilt or newly created sub-account, future appointments need their own migration decision because copying the calendar asset does not bring the bookings with it.

    BrandLyft’s CRM migration article owns the broader question of what data deserves to move. This page starts after that decision. The calendar is staying, and now the booking system has to survive the handoff.

    Inventory the live booking system, not only the calendar names

    Start with every calendar customers or staff still use.

    Record the appointment type, assigned users or teams, meeting location, duration, availability source, and booking URL. Add the linked external calendar, conflict calendars, reminder path, and any room or resource the booking consumes. For round-robin calendars, record the users in the distribution and the rule the team expects the calendar to follow.

    Service businesses may also have rooms, chairs, bays, equipment, or other limited resources tied to appointment capacity. HighLevel supports rooms and resources inside service scheduling. A calendar can show staff availability and still be wrong if the physical resource behind the booking was never recreated.

    This inventory should also separate active calendars from old ones that still happen to exist. The goal is not to reproduce every scheduling object in the account. It is to identify the live paths a customer can still reach and the internal calendars staff still rely on.

    Existing future appointments need their own cutover plan

    This is the part a copied calendar cannot solve.

    HighLevel’s snapshot documentation says appointments are not included, even though calendar assets can be copied. If the destination is a new sub-account, a calendar that looks identical can still be empty while the old account holds next week’s consultations, estimates, demos, or service visits.

    Use Appointment List View or another reliable appointment view to identify future bookings by date range, calendar, owner, and status. HighLevel’s current Appointment List View supports filtering across those fields and lets users edit appointment details, including the assigned calendar, inside the same account.

    For a same-account calendar change, that may give the team a controlled way to move a future booking to the intended calendar. For a rebuild in a different sub-account, do not assume an in-account edit becomes a cross-account migration tool. Decide how those future appointments will be recreated or preserved, then verify each one against the old record.

    At minimum, retain the customer, appointment date and time, assigned person, meeting location or link, and appointment type. Keep any notes that matter and the communication path that follows the booking.

    Rebuild ownership before you open the new booking path

    A calendar can be present while the people behind it are wrong.

    Round-robin calendars distribute appointments across assigned team members, and service calendars can depend on staff availability as well as rooms or resources. A user may have been recreated under a different profile, left the company, changed roles, or missed the correct calendar access. In any of those cases, the destination may expose time that nobody can actually cover.

    Check the users attached to each live calendar. Then compare the destination against the real operating team instead of copying old assignments automatically.

    Rooms and resources deserve the same treatment. A consultation room may host only one appointment at a time. A service may depend on a particular station or piece of equipment. That capacity belongs in the migration review too. Staff availability alone does not protect the business from resource conflicts.

    Linked and conflict calendars have to be reconnected by the right users

    External calendar sync is one of the easiest dependencies to overlook because it often lives at the user level.

    HighLevel’s current Google Calendar documentation says the connection is tied to each individual user profile, not to one global company setting. Linked calendars can receive or sync booking activity, while conflict calendars are used to block availability when outside events already occupy the user’s time. HighLevel supports similar connected-calendar behavior for Outlook.

    That means one admin connecting their own Google account does not prove the sales team, estimator, clinician, or consultant has the right conflict calendars in place.

    Reconnect the external calendar under the user who owns it. Confirm the intended linked calendar, the calendars that should block availability, and the permissions granted to HighLevel. Then create a real outside event on the external calendar and verify that the expected HighLevel slot becomes unavailable.

    HighLevel’s linked and conflict calendar guide is the right reference for that distinction.

    Availability rules need more than copied business hours

    Two calendars can both say Monday through Friday and still offer very different booking windows.

    Review weekly availability, date-specific overrides, time zones, meeting duration, slot interval, minimum scheduling notice, booking range, daily limits, and pre- or post-appointment buffers where the business uses them. HighLevel’s current buffer guidance also notes that, on Round Robin calendars, buffer settings from a user’s other calendars can affect availability.

    Time zone deserves a separate check because HighLevel now separates appointment display preferences from the scheduling logic itself. A user can view appointments in a preferred time zone without changing the calendar’s availability or what a customer sees on the booking page.

    Do not use the staff calendar view as the only test. Open the public booking link in a separate browser and compare the slots against what the business actually intends to offer.

    Old booking links do not quietly become new booking links

    This is where an otherwise clean calendar migration can stay split for weeks.

    HighLevel’s calendar duplication guidance says a duplicate calendar gets its own booking link. The old link remains tied to the original calendar rather than redirecting to the new one.

    Search every place the business can still send customers to book. That may include forms, funnel buttons, website pages, confirmation screens, email templates, SMS messages, and workflow actions. Check QR codes, staff signatures, saved replies, ads, and external profiles too.

    Old booking-link decal being peeled from a service business glass entrance.
    A calendar cutover is not finished while customers can still reach an old booking path.

    During a GoHighLevel calendar migration, replacing the old public link is part of the cutover, not a cosmetic cleanup. Do not stop after the most obvious website button. An old nurture email or saved text message can still carry the previous calendar link. Customers may reach it long after the team thinks the cutover is done.

    BrandLyft’s GoHighLevel buildout timeline already owns broad pre-launch calendar setup and QA. The migration problem is narrower: find every live booking path that still points to the old scheduling object.

    Reminder and confirmation automation can overlap during the cutover

    Existing bookings create a second risk: both setups may think they are responsible for the same appointment.

    HighLevel can send calendar notifications and can also trigger workflows from appointment events and status changes. The old account may still hold a future booking while the new account contains a recreated version. Now two reminder systems may be watching what the team considers one appointment.

    Map the customer communication before recreating or moving bookings. Identify native calendar notifications, appointment-triggered workflows, internal alerts, and any follow-up that starts after a confirmed, cancelled, rescheduled, or no-show status.

    Rescheduling deserves special attention. HighLevel’s current Appointment Status workflow documentation says a reschedule can re-enter the contact into an appointment workflow. That depends on the trigger and re-entry settings. That can be useful in normal operation and confusing during migration if the old and new sides are both active.

    Use test contacts while the cutover is being validated. The business should know exactly which setup is allowed to send the next reminder before real appointments are duplicated or moved.

    Test cancellation and rescheduling from the customer’s side

    A booking path is not proven because the original appointment can be created.

    HighLevel can add cancellation and reschedule links to calendar invites, and appointment-specific merge values can also be used inside appointment-triggered workflows. Those controls depend on appointment context, so the migration test needs to use the same path customers will use after launch.

    Book a test appointment from the public link. Open the confirmation. Reschedule it. Check the new time in HighLevel and in the linked external calendar. Then cancel it and confirm the status, customer message, internal alert, and any workflow behavior that should follow.

    Do not use a booking created manually by an admin as the only proof when most customers schedule through a public link. Test the public journey the business actually sells or services through.

    A short booking freeze can be useful when the two systems would otherwise overlap

    Not every migration needs a freeze window. Some do.

    If customers can keep booking the old calendar, new work can keep arriving on the source side. That becomes a problem when the team is rebuilding the destination and recreating future appointments at the same time. That creates a moving target.

    For a busy calendar, choose a controlled cutover period when somebody can monitor both systems. Depending on the business, that may mean temporarily removing the old public link or pausing a booking campaign. Another option is setting a clear time after which new bookings must use the destination.

    Keep the window as short as the migration allows. The point is not to make customers wait unnecessarily. It is to stop the source calendar from changing underneath the team while the final appointment and link checks are being completed.

    Run one booking all the way through before opening the new calendar

    The final test should behave like a customer, not like an administrator reviewing settings.

    Use an outside browser and a real test contact. Open the destination booking link. Check the available times. Make the booking. Confirm the correct user or team receives it. Verify the external calendar sync and conflict behavior. Read the customer confirmation. Check the internal notification.

    Then reschedule the appointment and cancel it. Watch the workflow history and the customer messages. If the business uses a room, resource, payment, meeting link, or other calendar dependency, include that in the same test.

    Afterward, book a second appointment or create an external conflict to make sure the first test did not leave availability in an impossible state.

    One successful booking is not proof of every edge case. It is the minimum evidence that the new path can survive the same basic lifecycle as a real appointment.

    Shut down the old calendar only after the new path stops producing surprises

    The old calendar is safe to retire when the business no longer needs it to catch missed dependencies.

    Cutover questionWhat should be true before shutdown
    Are future appointments accounted for?Every needed booking is preserved, recreated, or deliberately left on the source until completion.
    Can the right people be booked?Assigned users, round-robin members, rooms, and resources match the live operating team.
    Does availability reflect real capacity?Hours, overrides, time zones, buffers, booking limits, and conflict calendars have been tested.
    Do customers reach the destination?Live forms, pages, email, SMS, and other booking links no longer send people to the old calendar.
    Do reminders come from one intended path?The team has ruled out duplicate confirmation, reminder, reschedule, and cancellation messages.
    Can the team recover if something breaks?The old setup remains available long enough to verify records and restore a working booking route if needed.

    Do not delete the old calendar simply because the new one accepts a booking. Keep enough access to compare future appointments, verify old links, and understand any reminder or sync behavior that surfaces after cutover.

    A rollback plan does not need to pretend the migration can be reversed with one click. It needs to say what the business will do if the destination stops accepting bookings, external sync fails, or a future appointment cannot be found.

    Keep existing bookings intact during a GoHighLevel calendar migration

    A GoHighLevel calendar migration is not a calendar-copying task. It is a live scheduling handoff.

    The destination has to know who can be booked and when they are available. It also needs the right conflict calendars, future appointments, customer links, and messages after a booking changes.

    Once those pieces agree, the old calendar can stop carrying real work.

    If the calendar move is one part of a larger rebuild, BrandLyft’s Revenue System Build is the broader implementation path. If the account already exists and the booking system needs to be traced, moved, or tested inside GoHighLevel, the GoHighLevel Partner service is the more direct fit.

    Move the booking system without losing the commitments already on it

    BrandLyft can trace live calendars, future appointments, staff ownership, external sync, reminders, and booking links before the destination setup takes over.

    Review GoHighLevel Partner Help

    Need help with the wider account rebuild? Book a discovery call.

  • Reassign Live Work Before Removing a GoHighLevel User

    Reassign Live Work Before Removing a GoHighLevel User

    Before you remove a user from GoHighLevel, there is a more important question than where the Delete button sits: what still depends on that person?

    A salesperson may own active contacts. The manager could sit inside a round-robin calendar. One contractor may be named in workflow assignments or internal notifications. Someone who left last Friday may still have open appointments, tasks, conversations, and opportunities waiting for a next action.

    Taking away login access is necessary. It does not answer the operating problem by itself.

    This is an operational handoff checklist, not a reason to leave access open past the company’s security cutoff. If access has to end immediately, revoke it on schedule and complete the dependency cleanup from an authorized admin account.

    The cleaner exit is to separate live ownership from historical attribution, move the work that still needs somebody, remove the person from future routing, and then test the account after access changes. That keeps one staff departure from turning into a week of unassigned leads and quiet automation failures.

    Start with where the person can actually get in

    Do not start by scanning one sub-account and assuming you found the whole user.

    HighLevel has agency-level and sub-account-level user management. At the agency level, a user can have Agency access across client accounts or Account access limited to selected sub-accounts. Inside a location, the same person can also have a role and granular permissions that determine what they can see or change.

    HighLevel’s current User Access guidance also notes that users added under a sub-account’s My Staff area appear in Agency Team Management. That is why the offboarding check should start with the person’s full access scope, not the screen where somebody first remembers seeing their name.

    Record the locations they can enter, whether their user type is Agency or Account, their role, and any sensitive permissions tied to the job they are leaving. If the business temporarily reduces access before the final removal, document that too.

    This article is not a general permissions design guide. For a multi-location business deciding what corporate, regional, and local users should see, BrandLyft’s multi-location setup article owns that broader problem. The job here is narrower: one person is leaving an active account.

    Live ownership is spread across more than one record

    A user can matter to the account even when nobody sees their name on the first screen they check.

    HighLevel’s current sub-account permission documentation makes part of that relationship visible through Only Assigned Data. When that setting is on, a user can be limited to contacts assigned to them, opportunities they own, and appointments or tasks linked to their name. Conversations have ownership too, with HighLevel supporting filters for the assigned conversation owner and followers.

    That is a useful map for offboarding because it shows how one identity can sit across several kinds of daily work. It is not a promise that changing one assignment automatically fixes the others.

    A plan to remove a user from GoHighLevel therefore needs a dependency map, not just a list of permissions.

    DependencyWhat to decide before removalWhat to prove afterward
    Contacts and conversationsWho owns the live relationship nowNew replies reach a monitored owner or team
    Open opportunitiesWhich active deals need a new ownerReassignment did not fire an unwanted workflow
    Tasks and appointmentsWho completes the scheduled workFuture tasks and bookings still have a valid assignee
    CalendarsWhich team member replaces the departing user in availability and distributionA real booking reaches the intended calendar owner
    Workflows and alertsWhich actions or recipients explicitly name the userAssignments and notifications reach the replacement
    Connected accountsWhich connections depend on the person’s own login or calendarThe replacement connection works under the intended owner

    Move active contacts and conversations before the inbox changes

    Start with people who can still reply, book, buy, cancel, complain, or ask a question.

    An assigned contact may be sitting in an active sales conversation. The departing user may also be the conversation owner or a follower. HighLevel’s conversation filters let teams find conversations by assigned owner or follower, which makes them useful during the handoff review.

    Do not move every contact the person ever touched to the replacement rep. Historical records and dead leads are different from live relationships. Focus first on contacts with recent conversations, upcoming appointments, open tasks, active opportunities, or a clear next step.

    For each live contact, decide who owns the next response. Then check what that change affects. Manual email behavior, notifications, workflow routing, and calendar logic can all depend on the assigned user in different ways.

    The practical test is simple: if that customer replies tomorrow morning, does somebody who still works here know that the reply belongs to them?

    Opportunity reassignment is a handoff, not a stale-deal cleanup

    Open opportunities owned by the departing user need attention, but this is not the place to re-litigate every old card in the pipeline.

    BrandLyft’s GoHighLevel stale opportunities guide owns the lifecycle decision about whether an old deal should remain open, close, reopen, move, or be reviewed. During user offboarding, the narrower question is who should own the active work after the person leaves.

    That distinction matters. A closed Won or Lost opportunity may still correctly show who handled the deal at the time. Reassigning old history just to make the former employee disappear can make past performance harder to explain. An open deal with a real next action is different because somebody still has to work it.

    Reassignment can also be an automation event. HighLevel’s current Opportunity Changed trigger includes an Assigned To filter that can fire when an opportunity changes owners. Before moving a large batch, check workflows that listen for ownership changes so the handoff does not accidentally send a customer message, create duplicate work, or trigger an escalation.

    Calendars can hide some of the most expensive dependencies

    A staff departure gets visible fast when a customer can still book time with someone who no longer works there.

    Review every calendar where the person appears as a team member, appointment owner, or part of the distribution logic. Round-robin calendars deserve special attention. HighLevel’s current team-member assignment guidance distinguishes the contact’s assigned user from the appointment owner and explains how “Always Book with Assigned User” changes booking behavior.

    Existing appointments need a person-level decision too. A future appointment on Tuesday does not become somebody else’s responsibility merely because access changes on Monday. Reassign the bookings that still need service, then check customer-facing reminders and internal alerts tied to those appointments.

    Empty barber station still prepared for a scheduled appointment after a staff departure
    An existing appointment does not automatically become someone else’s responsibility when a user’s access ends.

    There is another dependency outside the visible calendar roster. HighLevel says Google Calendar connections are tied to individual user profiles rather than one global company connection. If the departing user’s Google Calendar is part of conflict checking or linked-calendar behavior, plan the replacement connection instead of assuming another HighLevel user inherits it.

    Once the calendar changes are made, book a real test appointment. The result matters more than the settings screen.

    Workflows can keep naming someone who has already left

    User offboarding is where a workflow can look healthy and still route the next lead to the wrong place.

    HighLevel’s Assign to User action can name one user, several users in a distribution, or a user ID supplied from another step. Search the live workflows for the departing person, their user ID where it is used, and any assignment group that still includes them.

    Internal notifications need the same pass. HighLevel allows those workflow actions to target particular users, assigned users, roles, or teams through several notification channels. A workflow may continue running perfectly while the alert itself lands on a person who is no longer responsible for the work.

    Look beyond obvious new-lead automations. Appointment alerts, missed-call recovery, payment notices, escalation workflows, task creation, manual-call steps, lead routing, and exception handling may all contain a named user or depend on the assigned owner.

    Do not replace one departed user with the same manager in every workflow just because that person is available. Route each dependency to the role or person that should actually own the next action. Sometimes the better fix is a team or assignment rule that does not need another hard-coded name.

    Connected accounts may belong to the person, not the business

    Some dependencies sit outside the normal assignment fields.

    The clearest current example is calendar integration. HighLevel says each user’s Google Calendar connection belongs to that user’s profile. A replacement employee therefore needs their own connection when the business relies on that sync.

    Other integrations need case-by-case review. Check anything the departing person connected with their own login, OAuth approval, email account, calendar, meeting account, phone identity, or outside credential. Do not assume every integration is user-owned, and do not assume every integration is location-owned either.

    If a shared credential was exposed to the departing user, credential rotation may also belong in the company’s wider offboarding process. That is an access-security decision outside HighLevel itself, but it should not be missed just because the CRM user was removed.

    Historical ownership should stay historical when it still tells the truth

    Offboarding can become destructive when the cleanup goal changes from “move live work” to “erase the former user’s name everywhere.”

    Past ownership can explain who handled a closed opportunity, who completed an appointment, who sent a manual response, or why an older report looks the way it does. That history may still be useful after the person’s access ends.

    Separate operational ownership from attribution. Reassign the records that still need future work. Preserve old ownership where it accurately describes what happened and does not leave a live dependency behind.

    Reporting deserves a quick check here. Saved dashboard views, filters, owner comparisons, or team reports may still include the departing user because the historical activity is real. That does not automatically mean the report is broken. The question is whether current work and future routing still depend on someone who no longer has the job.

    Test a small handoff before changing everything

    A broad reassignment can trigger more than a new name on the record.

    Pick a small, representative sample before moving the full workload. Use one active contact, one open opportunity, one future task or appointment, and one workflow path that previously depended on the departing user. Reassign those items to the intended replacement and watch what happens.

    Check the conversation owner. Look at workflow history. Confirm the opportunity did not fire an unwanted reassignment sequence. Review the new owner’s task list. Make sure the appointment appears where expected. If a round-robin calendar changed, submit one test booking through the public path.

    This is also where the team can catch a bad assumption about permissions. The replacement user may technically own the contact but lack access to the module, calendar, or data needed to act on it. HighLevel’s current user controls separate access scope, role, module permissions, and assigned-data visibility, so ownership and usable access are not the same thing.

    Fix the handoff rule while the sample is small. Then scale the reassignment.

    Remove a user from GoHighLevel only after future routing has a home

    Once the live dependencies have replacements, change the person’s access according to the business’s offboarding decision.

    HighLevel lets authorized admins edit or delete users from Agency Team Management and from My Staff at the sub-account level. The exact access scope matters, so confirm that the change covers the places the person could actually enter.

    Do not treat the removal action as proof that every dependent record now belongs to the right replacement. HighLevel’s current user-access documentation explains how to change and remove access, but the business still has to verify the operating result across the modules it uses.

    After the access change, test new work rather than only old records. Submit a new lead. Reply to an existing conversation. Book an appointment. Trigger an assignment workflow. Let an internal notification fire. Check one opportunity handoff if ownership automation is part of the account.

    The point is to prove that tomorrow’s work has somewhere valid to go.

    A clean user exit leaves the account able to keep working

    When you remove a user from GoHighLevel, the risky part is rarely the final click. It is the collection of small dependencies that still expect that person to exist.

    Contacts need a receiving owner when the relationship is live. Open deals need a person who can take the next step. Calendars need real availability. Workflows and notifications need valid recipients. User-owned connections need replacements. Historical records should keep telling the truth.

    That is why the right order matters. Map access first, transfer live work, remove the person from future routing, test a small sample, change access, and then test the next real handoffs.

    If one departure exposes a much larger problem — unclear ownership, hard-coded users across workflows, calendars nobody understands, or routing the team no longer trusts — BrandLyft’s GoHighLevel Partner service is the more direct path for account review and cleanup.

    Move the work before the login disappears

    BrandLyft can review user access, live ownership, calendars, workflow assignments, notifications, and routing before one staff change leaves active work without a valid owner.

    Review GoHighLevel Partner Help

    Already know the account needs outside help? Book a discovery call.

  • With GoHighLevel Payment Cutover, What to Test Before the New Account Takes Live Payments?

    With GoHighLevel Payment Cutover, What to Test Before the New Account Takes Live Payments?

    A GoHighLevel payment migration can look finished before the business has proved that money will land in the right place.

    The team may copy the funnel. The order form may still show the right offer. Someone may publish the workflows. None of that proves the destination account uses the correct payment provider, charges the intended price, creates the right subscription, sends the expected receipt, or triggers the same work after payment.

    That is the cutover problem. Before the old payment path is shut down, the new account has to process the same real business events without creating a missed charge, duplicate subscription, wrong-price checkout, silent workflow failure, or refund mess.

    Start by finding every place a customer can pay

    Most businesses remember the main checkout page. The forgotten payment paths are usually the riskier ones.

    A customer may pay through a funnel order form, a direct payment link, an invoice, a form with a payment element, a calendar deposit, a text-to-pay request, or a recurring subscription that keeps charging without anyone opening the checkout again. Older links may also live in email templates, SMS messages, proposals, QR codes, bookmarks, ads, staff notes, or a website button outside the new account.

    Build the inventory before changing the provider connection. For each live path, record what the customer buys, which price applies, whether the charge is one-time or recurring, which currency is used, where the payment goes, and what should happen after it succeeds or fails.

    BrandLyft’s GoHighLevel buildout timeline treats payment tools as one dependency inside a larger launch. This article starts later and goes narrower: the pages already exist, and now the payment path itself has to survive the move.

    The destination account needs its own payment-provider check

    A copied page does not carry payment ownership with it.

    HighLevel’s current snapshot documentation says Stripe connections and other integrations are not included in snapshots. Its current sub-account transfer guidance also says HighLevel clears sub-account-level Stripe fields during a transfer. Those are two different migration situations, but they point to the same operating rule: verify the payment connection in the destination instead of assuming the old authorization followed the visible assets.

    For Stripe, HighLevel currently allows one connected Stripe account per sub-account. Confirm that the destination uses the Stripe account the business actually intends to use, then check the live and test settings separately. A green connection badge is only the first check.

    The account also needs the right payment methods for the customer-facing surface. HighLevel lets payment-method availability vary across invoices, payment links, funnels, forms, stores, calendars, and subscriptions. Something that appears during one checkout does not prove it is available everywhere else.

    Review HighLevel’s current Stripe connection guidance before accepting the first live payment in the new sub-account.

    Product names are not enough to prove the price is right

    Two products can have the same name and still represent different billing instructions.

    HighLevel products can carry one-time or recurring prices, currency settings, billing cycles, trials, setup fees, and other pricing details. During a rebuild, compare those settings against the live offer rather than checking only that “Monthly Plan” or “Deposit” appears in the product list.

    A one-time setup fee that accidentally becomes recurring is obvious after the customer gets charged twice. A monthly service copied as a one-time product can fail more quietly because the first payment works. Wrong currency creates another failure that may not show up until checkout.

    The cutover record should tie each live offer to the exact product and price used in the destination. If several funnels or payment links share the same product, note that too. Changing one price can affect more than one public path.

    HighLevel’s current product setup guidance separates one-time and recurring pricing and shows how products feed payment links, funnels, invoices, and forms. That relationship is what the cutover needs to prove.

    GoHighLevel payment migration needs payment-link testing, not link counting

    A payment link existing in the new account does not prove the customer should use it.

    Open each live link the way a customer would. Check the product, price, quantity rules, recurring terms, required fields, branding, and the page shown after payment. If the business has a setup fee plus a recurring service, confirm the checkout represents both charges correctly.

    Then trace every place where that link still appears outside HighLevel. An old URL can remain in a saved email, website button, SMS template, PDF, QR code, or staff bookmark long after the team thinks the payment migration is complete.

    HighLevel supports separate Test and Live modes for payment links. Use Test mode to check the checkout structure without charging a real card, but do not stop there. Test and Live are separate environments. A successful test does not prove the live provider, live payment methods, or live price path are correct.

    That makes public-link replacement part of the cutover. The old payment path is not retired until the places that send customers there have been found and updated.

    Recurring charges need their own cutover decision

    Recurring billing is where a clean-looking rebuild can create expensive mistakes.

    First separate existing subscribers from new customers. A new recurring product in the destination tells you how the account may create future subscriptions. It does not, by itself, tell you what happened to customers who are already paying every month.

    Inventory the active subscriptions before changing anything. Record the customer, product, billing interval, next expected charge, provider, status, and the HighLevel account currently associated with the payment path. Then decide what happens to those subscriptions during cutover.

    Do not recreate a live subscription merely to see whether the new setup works while the old subscription remains active. That can turn a migration test into a duplicate charge.

    Two recurring café supply deliveries arriving at the same business while both service arrangements remain active.
    Creating the replacement subscription before resolving the existing one can leave both recurring paths active.

    HighLevel’s subscription page reflects Stripe subscription status and upcoming payments for Stripe-connected subscriptions, but the team should still compare the destination against the actual Stripe records. If the business changes products, prices, or account structure during the move, verify which subscription should bill next and where that event will appear.

    Payment success is only half of the workflow test

    Many GHL accounts do something immediately after money arrives.

    A successful payment may send a confirmation, create or move an opportunity, notify the team, grant access, create a task, start onboarding, change a tag, or stop an unpaid follow-up sequence. A failed payment may take a different route. Subscription renewals can trigger different work from the first purchase.

    HighLevel’s Payment Received workflow trigger can filter by payment source, transaction type, product, price, and payment status. That flexibility is useful, but it also means a copied workflow can still listen for the wrong source or product after a rebuild.

    Test the business result, not just the green transaction. After a successful test purchase, check the contact, opportunity, pipeline stage, customer message, internal alert, task, access change, and any downstream integration that should react. For a controlled failure test, confirm the account does not send a success message or move the deal as though payment cleared.

    Receipts and confirmations should come from the new path

    Customers notice payment mistakes quickly when the confirmation looks wrong.

    HighLevel can send automatic sales receipts for several payment sources, including order forms, subscriptions, calendar payments, and invoices. Check the destination account for receipt settings, sender details, branding, and any workflow message that follows the transaction.

    A cutover can accidentally create two confirmations: one native receipt and one workflow message that says nearly the same thing. The opposite can happen too, leaving the customer charged but unsure whether the payment went through.

    Run the receipt test from the same checkout the customer will use. Confirm the amount, product or service description, business identity, and next instruction make sense. Internal payment alerts deserve the same check. Finance or operations may depend on a notification that the old workflow or user used to send.

    Refunds and cancellations belong in acceptance testing too

    A payment system is not ready merely because it can take money.

    Pick at least one approved test transaction and follow the refund path the team would actually use. HighLevel has a refund workflow trigger that can respond to successful or failed refunds, but its current documentation says the team needs to issue the refund inside HighLevel for that trigger to fire. A team that refunds directly in Stripe may therefore see different automation behavior.

    Recurring offers need a cancellation check as well. Confirm who can cancel, where staff see the subscription status, what happens to future billing, and whether any customer or internal workflow should run afterward.

    The point is not to manufacture every edge case before launch. It is to test the money-moving events the business already expects to handle: purchase, renewal, failure, refund, and cancellation.

    Use test mode first, then run one controlled live payment

    Test mode is useful because it lets the team prove product selection, checkout behavior, and workflow logic without moving real money.

    It should not be the final signoff.

    Once the test environment passes, run a controlled live transaction with an approved payment method. Keep the amount and offer appropriate for the business’s own testing policy. Confirm the charge appears in the intended provider account and in HighLevel, then follow every expected post-payment action.

    If refunds are part of normal operations, use that same controlled transaction to test the live refund path rather than creating another charge solely for the refund test.

    Record the result. A cutover should have evidence that the live provider, product, amount, currency, receipt, workflow, opportunity change, and internal notification all matched the intended path.

    Do not shut down the old payment path until these facts are boring

    The old account should stay available until the team can answer basic payment questions without guessing.

    Cutover questionWhat has to be known
    Where does the money go?The destination sub-account uses the intended live provider account.
    What does the customer buy?The live checkout uses the correct product, price, currency, billing type, and any setup fee.
    What happens after payment?Receipts, workflows, opportunities, access changes, and internal alerts behave as expected.
    What happens next month?Existing subscriptions and new recurring purchases have a known billing owner and next charge path.
    What happens when money has to go back?The team has tested refunds and cancellations through the process staff will actually use.
    Can customers still reach the old checkout?The team has checked public links, templates, buttons, QR codes, and staff shortcuts before retiring the old path.

    Those facts should feel routine before cutover day ends. If the team still has to say “I think Stripe is connected to the right one” or “that workflow should fire,” they are removing the old path too early.

    The payment cutover is finished when the next transaction is predictable

    A GoHighLevel payment migration is not complete because the funnel renders or the Payments tab contains the right product names.

    The new account has to prove where the charge goes, what amount the customer pays, what recurring billing will do later, which confirmation goes out, which automation reacts, and what happens when a payment fails or needs a reversal.

    That is a smaller scope than a full CRM rebuild, but the consequence is immediate. A routing mistake can lose a lead. A payment mistake can charge the wrong amount, bill twice, send customers to a dead link, or leave the team thinking revenue automation is working when it is not.

    If payment cutover is one part of a larger rebuild, BrandLyft’s Revenue System Build is the broader implementation path. If the account already exists and the team needs to trace, correct, or test the payment layer before launch, the GoHighLevel Partner service is the more direct fit.

    Test the money path before the old account stops catching mistakes

    BrandLyft can trace the live provider, products, payment links, subscriptions, receipts, and post-payment workflows before the new GHL account takes over real transactions.

    Review GoHighLevel Partner Help
    Book a Discovery Call

  • GoHighLevel Stale Opportunities? How to Clean Up Old Deals Without Breaking Follow-Up or Reporting

    GoHighLevel Stale Opportunities? How to Clean Up Old Deals Without Breaking Follow-Up or Reporting

    A pipeline full of old cards can make a GoHighLevel account look healthier than it is.

    The problem with GoHighLevel stale opportunities is not simply age. It is that nobody can say which open deals are still being worked, which ones are finished, which ones belong to former users, and which ones exist twice for the same sales event.

    Deleting whatever looks old can break follow-up and remove context the team still needs. Leaving everything open creates the opposite problem: pipeline totals, forecasts, ownership, and daily work stop meaning what people think they mean.

    The cleanup job is to decide what each opportunity represents now. Keep the real active work. Close the finished work. Reassign the orphaned work. Remove proven duplicates carefully. Reopen an old opportunity only when it is still the same sales event. Create a new one when the customer has actually created new work.

    GoHighLevel stale opportunities need more than an age cutoff

    Age is useful because it tells you where to look. It does not tell you what happened.

    An estimate may sit in the same stage for three weeks because the customer asked the business to wait until a certain date. A commercial deal may stay open for months because several people have to approve it. Another opportunity may be only ten days old and already be dead because the customer declined, the rep left the company, or nobody intends to follow up again.

    HighLevel has a Stale Opportunities workflow trigger that can watch for an opportunity staying in the same stage for a set number of days. That is useful for catching neglected work. It is not a cleanup rule by itself.

    The current HighLevel guidance also says the stale trigger does not work retroactively. If a business adds it today, it does not automatically classify the backlog that has already been sitting in the pipeline for months. Existing mess still needs review.

    A better definition starts with the sales reality. An opportunity is stale when its current stage, owner, status, next action, or expected outcome no longer matches what is actually happening.

    Every open opportunity should have a reason to stay open

    HighLevel uses four opportunity statuses: Open, Won, Lost, and Abandoned. The useful question during cleanup is not which status makes the board look nicer. It is which status describes the business outcome.

    An Open opportunity should still represent work the business intends to pursue. That usually means somebody owns it, the customer situation is still live, and there is a believable next action or waiting condition.

    If the sale happened, mark the opportunity Won. A customer who chose not to proceed, or a deal that otherwise ended unsuccessfully, belongs under Lost when that status reflects the outcome. When nobody plans to pursue the opportunity any further and it has effectively fallen out of active consideration, Abandoned may be the more honest status.

    The team should define those choices once and use them consistently. HighLevel gives the status types. The business still has to decide what each one means in its own sales process.

    What you findLikely actionWhat to check first
    Old card, active customer conversation, real next stepKeep it openOwner, next task, expected timing, current stage
    Customer declined or chose another optionClose as LostLost reason, active workflows, unfinished tasks
    No further follow-up is planned and the opportunity is no longer activeReview for AbandonedLast activity, owner, automation state, business policy
    Same customer and same sales event appear twiceKeep one valid opportunity and review the duplicate for removalWorkflow history, value, attribution, notes, tasks, reporting impact
    Same customer has a genuinely different job, renewal, property, or offerKeep separate opportunitiesOpportunity naming, pipeline, workflow targeting, value
    Old card is assigned to a former or wrong userReassign and then decide the real statusConversation history, next task, appointment, current customer intent

    Close outcomes instead of parking them forever

    One of the easiest ways to create an untrustworthy pipeline is to use Open as a holding status for everything the team does not want to decide.

    A quote went nowhere, so the card stays open. Then a prospect says “not right now,” and nobody records whether that means nurture, lost, or a scheduled return. Another job is completed, but the opportunity never moves to Won. Months later, management sees a board full of potential revenue that includes work nobody expects to close.

    That is not harmless clutter. It changes what the pipeline appears to say.

    HighLevel’s current opportunity forecasting guidance specifically calls out stale opportunities and outdated data as problems that weaken forecast quality. Even without using the Forecast workspace, the same logic applies to any dashboard or pipeline total built from open opportunities.

    Cleanup should turn vague outcomes into recorded outcomes. A lost deal should be closed. When the customer asks to revisit in October, record the real follow-up path instead of leaving the card untouched for six months. Work that is waiting on an external event should show that condition through the next task, note, stage, or field the team actually uses.

    The point is not to force every old deal closed. It is to stop using an open card as a substitute for a decision.

    Wrong ownership can make dead work look active

    Old accounts often contain opportunities assigned to people who changed roles, left the company, stopped working that pipeline, or were never the correct owner in the first place.

    Those cards can sit for a long time because nobody feels responsible for them. The pipeline still shows activity and value, but the person attached to the opportunity is not actually going to do anything next.

    Do not reassign every stale card to the current sales manager and call the cleanup finished. First check the conversation history, last meaningful activity, current stage, open task, booked appointment, and customer intent. Then decide whether the opportunity still deserves an owner at all.

    When the work is real, assign it to somebody who can take the next action. Once the sale has ended, record the outcome instead of transferring dead work to a new name. Unclear records belong in a review queue until somebody can decide what they represent.

    HighLevel’s current opportunity editor lets teams update owners, stages, statuses, tasks, notes, and appointments from the opportunity record. Those details are exactly what should be checked before ownership changes.

    Duplicate opportunities are not the same as duplicate contacts

    This is where cleanup gets dangerous if the team starts deleting by sight.

    One person can legitimately have more than one opportunity. A homeowner may request work on two properties. An existing customer may return for a different service. A company may have a renewal and a new project moving at the same time.

    HighLevel supports multiple opportunities for the same contact, including more than one in the same pipeline when the account setting allows it. That means two cards tied to one person are not automatically duplicates.

    The useful distinction is the sales event.

    If two opportunities represent the same inquiry, same job, same quote, same expected revenue, and same follow-up path, one may be an accidental duplicate. If they represent separate work, both may be valid even though the contact is the same.

    BrandLyft’s GoHighLevel duplicate contacts guide handles the identity side of this problem. The contact answers “who is this person?” The opportunity answers “what business are we trying to win or complete with them?” Cleaning one layer by applying rules from the other is how good data gets removed.

    Before deleting a duplicate opportunity, check which card carries the useful value, source, owner, notes, tasks, workflow context, and reporting history. A duplicate created by an import or retry is different from a second legitimate deal.

    A returning customer does not always need a brand-new opportunity

    Reactivation creates another judgment call.

    Suppose a customer asked for an estimate in January, paused the project, and comes back in March ready to move. If the same quote, same project, and same sales event are continuing, reopening the old opportunity may preserve the cleanest story.

    Now change the facts. The customer completed the January job and returns in March for a different service. Reopening the old won opportunity would mix two sales events together. A new opportunity on the existing contact makes more sense.

    There is no useful rule that says “always reopen” or “always create new.” The decision depends on what the opportunity represents.

    A practical test is to ask whether the team would expect the old and new activity to share the same deal value, source interpretation, sales outcome, and close history. If combining them would make reporting harder to explain, they probably belong as separate opportunities. If separating them would manufacture a second sale that never really existed, reopen or continue the original work instead.

    Check automation before changing statuses in bulk

    Opportunity cleanup can change more than the board.

    HighLevel workflows can trigger from opportunity status changes, stage changes, created opportunities, stale opportunities, and other opportunity events. Workflows can also update opportunity fields, move stages, send messages, assign work, or create other actions after those triggers fire.

    Before a large cleanup, identify the workflows that listen for the fields you plan to change. A bulk move from Open to Lost may be the correct data decision and still fire customer messages, internal alerts, task creation, or downstream updates the team did not expect.

    The same review applies to tasks and appointments. An opportunity may look abandoned from the board while an appointment is still booked or a rep has a future task attached. Closing the opportunity may still be correct, but somebody should understand what happens to the work around it first.

    Do this before changing hundreds of cards, not after a workflow starts reacting to the cleanup.

    Use a controlled cleanup process before bulk actions

    HighLevel supports bulk actions for opportunities. That can save a lot of time once the business knows what each group of records should become.

    It is a bad place to start when the rules are still fuzzy.

    Begin with one pipeline. Filter or sort the records so the oldest and least active work becomes visible. Sample enough opportunities to understand why they are still open. You may find several different problems mixed together: dead deals, waiting deals, former-user ownership, duplicate sales events, completed work never marked Won, or cards that still have valid follow-up.

    Create cleanup groups from those real patterns. A business might use categories such as keep open, close lost, review abandoned, reassign, probable duplicate, and manual review. The labels themselves are not important. What matters is that each group has a clear rule before the bulk edit begins.

    Then test the cleanup on a small batch.

    Verify the sample before scaling the cleanup

    Furniture conservator testing a small cleaning area before treating the full wooden panel.
    Test the cleanup rules on a limited sample before applying bulk changes across the pipeline.

    Watch workflow history. Check tasks. Confirm assignments. Review the pipeline totals. Look at the reports leadership actually uses. If the account has integrations that read opportunity status or stage, confirm those systems still receive the expected state.

    Deletion should be the narrowest action, not the cleanup default. HighLevel currently allows deleted opportunities to be restored for a limited period, but a closed opportunity and a deleted opportunity do not tell the same business story. Use status to record a real outcome. Delete only when the record should not represent a deal at all, such as a proven duplicate or test record, after its dependencies have been checked.

    Not sure whether this is cleanup or a deeper GHL problem?

    Use BrandLyft’s GHL Rescue Decision Guide to check pipeline trust, ownership, workflow overlap, reporting, and the rest of the account before changing the wrong layer.

    Run the GHL Rescue Check

    Reporting should make more sense after cleanup, not simply look smaller

    A successful cleanup usually reduces the number of open cards. That is not the main success measure.

    The useful test is whether the remaining pipeline can now answer basic questions without somebody explaining away half the records.

    How much open work is actually being pursued? Who owns the next action? Which opportunities are waiting for a real reason? What deals are lost, and why? How many separate opportunities represent real separate sales events? Does expected revenue still include abandoned work? Can management compare periods without old cards carrying forward indefinitely?

    HighLevel notes that pipeline totals and forecasts reflect the opportunities present in the system, including multiple open opportunities when those are allowed. Clean data matters because the reporting layer cannot decide which card the business secretly stopped believing months ago.

    After cleanup, compare the same reports from before and after. Large changes should be explainable. If open value drops because dead opportunities were finally closed, that is useful. If booked work disappears because legitimate deals were deleted as “duplicates,” the cleanup went too far.

    Keep the pipeline clean by deciding what happens when work goes quiet

    A one-time cleanup helps. The account will drift again if nobody decides what happens after an opportunity stops moving.

    Use stage-specific aging rules instead of one universal number. A new inbound lead may deserve attention within hours or days. Longer waits may make sense for a quoted commercial project. Nurture or delayed-decision stages may need a scheduled return date rather than an aggressive stale timer.

    The Stale Opportunities trigger can help surface records after a chosen duration, but the automation should lead to a decision. Notify the owner. Create a review task. Move the opportunity to a review stage when that fits the process. Ask for a status update. Do not build an automation that keeps stale cards alive forever by moving them around without anybody deciding the outcome.

    Ownership changes should have a cleanup rule too. When a user leaves or changes roles, review the open opportunities attached to that person instead of simply transferring every card. The same applies when pipelines are rebuilt, services change, or new teams start using the account.

    If stale opportunities are only one symptom and the account also has unclear routing, duplicated workflows, weak reporting, or low team trust, BrandLyft’s GoHighLevel audit guide covers the broader diagnosis. This page stays on the opportunity layer because that is where the sales record either becomes trustworthy again or keeps lying quietly.

    A clean opportunity layer should tell the truth about current work

    GoHighLevel stale opportunities are not a housekeeping problem. They are a decision problem stored inside the pipeline.

    Old does not always mean dead. Multiple does not always mean duplicate. A returning customer does not always need a new opportunity. A card with no next action should not remain Open simply because nobody wants to close it.

    Clean the opportunity layer by matching each record to the real sales event, current owner, next action, automation state, and final outcome. Make the bulk changes only after those rules are clear. Then check the reports again.

    If the pipeline is already too tangled to tell which records are safe to change, BrandLyft’s GoHighLevel Partner service is the next place to look. If you already know the account needs outside help, book a discovery call and bring the pipeline, workflow dependencies, and cleanup questions with you.

  • GoHighLevel Phone Number Migration – What to Test Before Calls and SMS Move to a New Account

    GoHighLevel Phone Number Migration – What to Test Before Calls and SMS Move to a New Account

    A GoHighLevel phone number migration can look finished while the part customers actually use is still broken.

    The contacts may be in the new account. Pipelines may open correctly. Workflows may be published. None of that proves the business can still receive a call, place an outbound call from the expected number, send a text, receive a reply, or recover a missed call after the phone layer moves.

    That is the cutover to test. Before the old setup is disconnected, the business needs to prove that every number it intends to keep still reaches the right people and still behaves correctly across voice, SMS, routing, voicemail, and automation.

    First, identify what kind of phone-number move this actually is

    “Move the number” can describe several different jobs inside and around HighLevel.

    A number may be reassigned between sub-accounts under the same agency. It may move between different agencies or phone providers. An established business number may be ported from an outside carrier into HighLevel. The business may also decide not to move an old number at all and instead provision a new one.

    Those are not interchangeable cutovers. HighLevel currently documents separate paths for same-agency moves, cross-account or provider migrations, and external-carrier ports. The first useful step in a GoHighLevel phone number migration is therefore not clicking a transfer button. It is identifying which case applies to each number.

    SituationWhat is changingMain cutover risk
    Same-agency number moveThe number is reassigned to another sub-accountRouting, assignments, messaging registration, or workflow senders no longer match the destination
    Agency or provider migrationThe number changes account or phone-system ownershipThe number arrives, but call and SMS behavior is not rebuilt around it
    External carrier portAn existing business number moves from another carrier into HighLevelThe old carrier is cancelled too early or the port completes before destination testing is ready
    New numberA fresh number replaces or supplements the old lineCustomers, ads, listings, workflows, and staff keep using the old number

    HighLevel’s current phone-number migration guide is worth checking before the cutover because the supported process depends on where the number lives now and where it is going.

    Build the number inventory before anyone changes routing

    Businesses often know their main phone number and forget the rest of the phone system around it.

    A location may have a sales line, a support number, tracking numbers used in campaigns, a toll-free line, department numbers, numbers assigned to specific users, and older numbers that still receive real customer calls. Some may send SMS. Some may exist only for inbound voice. Others may be referenced inside a workflow nobody has opened in months.

    For each number, record what it is for, where it lives today, whether it must be kept, who should answer it, what should happen after hours, whether it sends SMS, whether a workflow names it explicitly, and what public places still show it.

    This is also where number ownership needs to become clear. A business should know whether the number is controlled inside LC Phone, tied to a Twilio setup, held by an outside carrier, or sitting in an account somebody else owns. That fact changes the migration path and the fallback options.

    If the wider account is being rebuilt at the same time, BrandLyft’s GoHighLevel buildout timeline covers the broader launch sequence. This article stays narrower: the phone layer does not pass until the live numbers work in the destination.

    Inbound calling has to be tested beyond “the phone rang”

    An inbound call reaching somebody once is a useful start. It is not enough.

    The same number may behave differently depending on the assigned user, ring group, forwarding setup, call menu, business hours, timeout, voicemail settings, or backup handling. HighLevel also supports working-hours routing that can skip a user outside the selected schedule and send the call to the number’s existing backup path.

    That creates several ways for a migration to appear fine during a daytime test and fail later that evening.

    Call each migrated number from a phone outside the business. Let one call get answered. Let another time out. Test the number after hours. Confirm the correct users ring, the correct backup behavior starts, voicemail lands where expected, and the caller does not disappear into a line nobody monitors.

    If the business uses a menu or routing tree, test every option that real callers use. Do not stop after pressing the first extension.

    Outbound caller identity can fail while inbound routing looks perfect

    A migrated number may receive calls correctly while staff place outbound calls from the wrong number.

    That matters because the customer may see a number they do not recognize, call back into the wrong line, or continue an existing conversation under a different identity than the business intended.

    Test outbound calling from the actual users who will place calls after cutover. Check what number appears to the recipient. Then call it back.

    User assignments deserve attention here. HighLevel lets businesses assign LC Phone numbers to individual users or shared groups, so a number reaching the destination account does not automatically prove those assignments match the new operating setup.

    For multi-location or department setups, repeat the outbound test by location or role. A central office, local branch, estimator, sales rep, and support team may not be supposed to present the same number.

    SMS needs a separate GoHighLevel phone number migration test

    Voice working does not prove SMS works.

    Send a text from the destination account to a real test handset. Reply from that handset. Confirm the reply returns to the correct conversation and can be seen by the people expected to handle it.

    Then test the automated paths.

    HighLevel can choose an SMS sender from several possible numbers, and a workflow Send SMS action can name a specific “From Number.” A rebuilt account can therefore contain a perfectly valid workflow that still points to a number the business did not move, did not register, or no longer wants to use.

    Missed-call text back deserves the same attention. HighLevel’s current setup uses the default number for that feature. If the default number changed during migration, the missed-call acknowledgement may change with it.

    Do not treat messaging registration as a one-time box that must follow every number automatically. A2P 10DLC, toll-free verification, and country-specific requirements can behave differently depending on the migration path. HighLevel’s current guidance specifically warns that some A2P registrations or number-to-campaign relationships do not carry through certain moves. After cutover, confirm the destination account has the required registration and that each applicable number is attached correctly before relying on live SMS.

    For US local messaging, HighLevel’s A2P campaign-linking guide explains the number-to-campaign relationship that should be checked after a move.

    Workflows may still contain the old phone setup

    A phone cutover can fail without any phone setting looking wrong.

    The problem may be inside automation.

    Search the workflows that send SMS, trigger from calls, recover missed calls, notify staff, route replies, create callbacks, or use location-specific communication. Check whether the sender is fixed to one phone number, inherited from another setting, or expected to come from the assigned user.

    Do the same with voicemail notifications, internal alerts, call menus, forwarding rules, and any outside tool that still stores the old number.

    This is where a rebuilt CRM often exposes an awkward truth: the number itself moved, but the business logic around the number did not.

    That is also why this work fits the operating side of BrandLyft’s GoHighLevel Partner support. A phone migration is rarely just telecom when the same numbers drive workflows, lead ownership, response paths, and customer conversations.

    Test the paths that are easiest to miss during a clean cutover

    A cutover test should imitate normal customer behavior, not only prove that one technician can make one successful call.

    Use the real team and the real routing hours. If the company has several locations, repeat the test against each location number. If one number serves several departments, test each route.

    A practical cutover set should prove these situations:

    • Inbound calling reaches the intended person or group.
    • If nobody answers, the call reaches the correct voicemail or backup path.
    • After-hours calling follows the intended schedule.
    • Outbound calling presents the intended business number.
    • An outbound SMS reaches the test handset from the intended sender.
    • An inbound SMS reply returns to the correct conversation.
    • A workflow-generated SMS uses the intended number.
    • A missed call triggers the expected recovery behavior when that feature is part of the setup.

    Record the result against each number instead of relying on memory. When one test fails, the team should know whether the failure came from routing, user assignment, SMS registration, sender selection, workflow logic, or the migration itself.

    Do not disconnect the old phone setup just because the move says complete

    A carrier, support ticket, or HighLevel screen can tell you the number moved. The business still needs its own signoff.

    Before the old setup is cancelled or disconnected, confirm the destination account shows every expected number and that inbound voice, outbound voice, outbound SMS, inbound SMS, routing, voicemail, after-hours handling, and required automated messages have been tested.

    If the business ported a number from an outside carrier, keep the losing service active until the port has actually completed. HighLevel’s current porting guidance warns against cancelling the old carrier early and notes that a brief service impact can still happen during the port window.

    Existing carrier voice gateway left powered and connected during a phone-number migration cutover.
    Keep the losing carrier active until the port is complete and the destination has passed its real-world tests.

    Historical call recordings and voicemail assets also need separate thought. Current HighLevel migration guidance says those historical assets may not move with the phone number in some migration cases. If they matter, download what the business needs before the old account or provider becomes inaccessible.

    A rollback plan should exist before the cutover window starts

    The worst time to decide what “go back” means is after the business line stops receiving calls.

    Write down who owns the migration, who can contact the carrier or HighLevel, which old services must remain active during the window, how the team will communicate if SMS is unavailable, and what temporary routing option is acceptable if the final state cannot be restored immediately.

    Do not promise that every migration can be reversed instantly. HighLevel’s current migration guidance says rollback options depend on the carrier and timing. The useful plan is therefore not “we can always undo it.” It is knowing what fallback the business can live with while the underlying move is corrected.

    That may mean keeping an old line active, using a temporary forwarding path where appropriate, giving staff a backup outbound number, or scheduling the cutover when somebody can test and respond to failures immediately.

    The phone cutover is finished when customers can reach the same business again

    A GoHighLevel phone number migration should not be signed off because the number appears in the new account.

    It is finished when the number still does its job.

    Customers can call it. Staff can call out from the correct identity. Texts go out and replies come back. After-hours behavior still makes sense. Missed calls still have a recovery path. Workflows use the intended sender. Location and department numbers reach the right people. The old setup can be disconnected without removing something the business still depends on.

    If the phone layer is part of a larger rebuild, BrandLyft’s Revenue System Build is the broader implementation path. If the account already exists and the main question is what has to be checked, moved, or corrected inside GoHighLevel, start with the GoHighLevel Partner path.

    Move the phone layer without guessing what will survive

    Bring the current numbers, account structure, routing rules, workflows, and destination setup. BrandLyft can help trace what needs to move, what needs to be rebuilt around the number, and what must pass before the old setup is disconnected.

    Review GoHighLevel Partner Help
    Book a Discovery Call