Tag: Paid Lead Attribution

  • Moving a Franchise Phone Number in GoHighLevel: What Stays Behind

    Moving a Franchise Phone Number in GoHighLevel: What Stays Behind

    A franchise branch is closing. The phone number printed on its vans, business cards, and customer invoices is staying with the business. The plan sounds simple: move that familiar number into another GoHighLevel location and let the receiving team answer it.

    There is a catch: HighLevel can move an eligible number between subaccounts in one agency, but the prior contacts and conversations stay in the source account. Messaging registration and call settings need their own checks. The new branch might have the right number in its phone list and still be unready for the next caller.

    If you need to move a GoHighLevel phone number between subaccounts, the useful decision happens before anyone clicks Move Numbers. What must the destination be able to do on the first call, and what information will remain behind?

    First, identify which kind of number move you’re making

    This article covers one specific case: reassignment of an eligible number between two existing subaccounts under the same HighLevel agency. It does not cover transferring an entire subaccount to another agency or porting a number from an outside carrier.

    According to HighLevel’s September 4, 2026 Move Numbers guidance, the agency-level tool supports LC Phone to LC Phone moves. It also supports Twilio to Twilio moves when both subaccounts share the same Master Twilio account. The in-app route currently supports US and Canadian numbers, with up to ten eligible numbers in one move.

    Those conditions matter when a franchise restructures. Two branches can share a brand and still sit under different agencies or phone providers. A Twilio number under another Master Twilio account is not eligible for the same in-app transfer. A provider change between LC Phone and Twilio belongs to a different process.

    HighLevel’s phone-number migration and porting guide explains the other paths. Use that guide when the agency relationship, provider, or country does not match the same-agency tool. BrandLyft’s multi-location setup checklist covers the wider branch rollout. This move assumes the receiving branch already has its own subaccount.

    The number moves. Five kinds of history and setup do not simply follow it

    Imagine an established branch transferring its main line to a nearby office after the original location closes. The new office knows the telephone number, but a returning customer expects somebody to recognize an unfinished estimate from last month.

    Moving the number alone will not put that estimate conversation in the destination inbox. HighLevel separates the phone number’s assignment from other records stored against a subaccount. That is the central boundary to plan around.

    ItemWhat the move establishesWhat to do separately
    Phone numberEligible number is reassigned to the destination subaccountConfirm the exact number appears in the intended location
    Contacts and conversationsCustomer records and prior threads are not copied with itDecide how authorized staff will find needed history
    AnalyticsPast account reporting does not move with the numberPreserve source-period references before access changes
    Recordings and voicemailsHistorical assets do not automatically transferRetain permitted assets while the source is accessible
    Messaging registrationThe destination’s A2P registration is not carried overConfirm the receiving location and number are ready for messaging
    Call settings and workflowsDo not assume every number setting, assignment, or automation works afterwardReconfigure where needed and run live-path tests

    A familiar number can make a customer assume the person answering has the former location’s account notes, even though those records are still elsewhere. When that assumption is wrong, the receiving team needs a legitimate way to retrieve context. The move did not bring those records over.

    Decide what the receiving team can see before cutting off source access

    Find the relationships that remain active: appointments, open estimates, service issues, unpaid invoices, and promised callbacks. Then establish where those records currently live and which employee can answer questions about them after the transition.

    Commuter bicycle secured in a repair stand with its front wheel removed and tire-service materials on a nearby workbench.
    A familiar number may reach a new branch while unfinished customer work and its history remain associated with the original location. The receiving team needs an approved way to retrieve that context.

    A franchise may keep approved access to the old location for a period. It may retain permitted exports or move selected customer information through a separate process. Each option is a separate data and permission decision. Move Numbers does none of that. Nor does moving the number give staff permission to copy conversations or ignore communication preferences.

    Keep source references with enough detail to explain what happened. If a customer says, “I left a voicemail yesterday,” staff need somewhere to look. Who can access the older voicemail, and when does that access end? An internal owner and an accessible record are better than a promise that someone will somehow find the old thread.

    BrandLyft’s CRM data migration article addresses broader record-selection decisions. For this cutover, ask what history a caller will reasonably expect the next branch to have.

    Check destination messaging registration before relying on texts

    For eligible US local numbers, A2P 10DLC status belongs to the subaccount and its registration. It does not follow the digits alone. After the move, check the destination’s approved brand and campaign, then link the number where required by the messaging setup. A number appearing in the destination’s Phone Numbers screen does not prove it can send compliant business SMS.

    HighLevel’s September 8 A2P number-linking instructions describe the number-level check. In the destination, review the approved campaign and link the number when needed. Then check for the expected A2P Verified indicator. An approved campaign and a linked number are two different conditions.

    Toll-free messaging takes another path. Do not assume a toll-free verification automatically accompanies a transferred number; confirm its status in the receiving account. International and other messaging configurations have their own requirements. Avoid testing outbound SMS through an account that has not met the applicable registration and permission rules.

    Moving a phone number does not create fresh permission for new automated texts, even if the receiving branch serves the same customers. The destination’s consent, opt-out, and communication-preference handling needs review apart from number ownership. A missed-call text-back workflow is particularly easy to overlook because it may send without an employee touching the conversation.

    Write down the call path customers already use

    A franchise number may ring several places depending on the hour: the front desk during business hours, an answering service after closing, or a backup employee when the desk is busy. When nobody answers, callers hear a voicemail greeting, and a separate workflow may offer a callback by text. The same number could also appear as outbound caller ID for staff.

    Inventory the working behavior before moving it. Record forwarding, ring behavior, assigned users, voicemail, recording, whisper messages, business hours, and missed-call handling. Add the workflows that select or reference that number. Then name the intended destination behavior for each one.

    The new branch might need a different greeting and routing rule, which is reasonable if the team planned it. Trouble starts when staff assume the old setup follows the phone number unchanged.

    Check what external systems still publish or reference the number, too. A website, Google Business Profile, directory, ad, or old invoice may still send people to it. Keeping the digits can preserve that entry point, but it does not make the destination’s answering workflow correct.

    The wider question of which branch should own each new lead belongs to BrandLyft’s GoHighLevel lead-routing guide for franchises. This move is smaller: prove that calls to one number reach the intended team.

    Choose the cutover window based on call coverage, not convenience

    An admin may have time to make the change on Friday afternoon. The business might not have anyone available afterward to test every route and fix a failed callback. A less busy window is useful only if someone can stay accountable through the checks.

    Assign the HighLevel admin, test-call recipient, SMS registration owner, and final approver before the move. Someone else should own provider escalation if the setup fails. If a route fails, staff need a supported fallback for customer contact.

    Do not build the plan around a guaranteed zero-interruption cutover. HighLevel does not promise that a moved number arrives with its old routing, messaging approval, and history already usable. Nor does a phone-number move provide a one-click restoration of customer context.

    Set a short validation period after the transfer and tell the receiving team what will be checked. Someone should record the first failed test without marking the transition complete merely because the number shows up on screen.

    Use the in-app move only after the preflight is signed off

    For an eligible same-agency move, go to Agency Settings and open Phone Integration. Under Sub Account Settings, choose Move Numbers. Choose the source and destination subaccounts, select the eligible number or numbers, review the destination, and complete the move. The current interface permits up to ten numbers in one operation.

    Pause before the final action. The source and destination Location IDs should already be in the change record. Confirm the exact number, country, phone provider, and receiving branch against that record. Similar location names are a poor substitute for IDs when the franchise operates several offices in one region.

    Once the number appears in the destination, the transfer itself may be complete. The customer-facing cutover is not. That second decision belongs to the acceptance tests below.

    Phone Number Move Acceptance Sheet

    Use one sheet per moved number, even when several numbers are transferred together. The purpose is to prevent a successful tool action from becoming an unverified declaration that the branch is ready.

    Record the number in international format, both Location IDs, agency, provider, country, planned window, and actual move time. Add test owners and the release approver. Keep any registration evidence and historical-data access decision attached to the same record.

    Acceptance checkEvidence to recordRelease condition
    Identity and eligibilityNumber, provider, source/destination Location IDs, countryCorrect pair and supported move confirmed
    Historical contextOld contact/thread access owner and permitted retained assetsActive customer history has an agreed access path
    Destination numberPost-move number-list verification and timeCorrect number appears in correct location
    Inbound and outbound voiceTest caller, time, answered by, displayed outbound caller IDBoth directions reach intended people
    Unanswered and after-hoursVoicemail, forwarding, fallback and callback resultsCoverage matches the branch’s operating rule
    Messaging registration and consentA2P/campaign or toll-free status; permitted test recipientApplicable approval and number linking verified
    Inbound and outbound SMSTest time, sending number, receiving account and delivery resultBoth directions work where SMS is enabled
    Release or holdExceptions, owner, next check time, approving operatorBlocking failures resolved or covered by an approved fallback

    The sheet should allow three outcomes for every test: Pass, Blocked, or Not applicable with a reason. A blank SMS result is not a pass. A branch that does not use SMS should say so rather than inventing a successful messaging test. Review the final release decision once every required row has an owner and result.

    Run the tests from outside the destination, not just inside the settings screen

    Start with an inbound call from an external test handset. Check whether the right location receives it and whether the intended staff member answers. Then make an outbound call and confirm which caller ID the recipient actually sees. Outbound-number preferences can differ from what the team expects, especially when users have access to more than one number.

    Next, test an unanswered call. Listen to the voicemail or forwarding behavior rather than reading the configuration and assuming it is correct. For an after-hours path, use an approved test window or a safe configuration review. Do not interfere with real callers. Any missed-call text-back path should be included when messaging is allowed.

    For SMS, use an authorized test contact after checking the destination’s registration and consent requirements, then send an inbound message and verify the receiving account. Then send an outbound reply through the intended workflow or operator and verify the recipient sees the right sender. Record failures and their error details, not just a checkbox.

    Finally, inspect a test conversation and associated task or alert. Does the destination team see the message, know who owns the reply, and receive the expected notification? The tests should reflect real branch behavior. One call from the admin who moved the number is not enough.

    A failed test changes the release decision

    Voice may work while SMS fails because the number still lacks the appropriate campaign link in the destination. That is an incomplete handoff. Keep that messaging path on hold while the registration issue is resolved. Do not send unregistered automated texts simply because calls are now reaching the correct office.

    If calls reach the wrong employee, check forwarding, assignments, and the number’s configuration first. If customers cannot reach the destination, use the planned escalation path and an accurate temporary contact method. Moving the number back is not a guaranteed rollback. It could require another eligible move, setup work, and the same tests.

    If an eligible LC Phone move fails, HighLevel asks for both Location IDs and the affected numbers when contacting Support. Keep the failed action, error, time, and support reference in the change record. When the provider is unsupported, use the applicable migration process instead of repeating the failed attempt.

    Do not declare the cutover complete while the receiving branch is unready

    The destination must own the number, the intended team must answer its calls, and any active messaging path must have its required registration. Older customer context needs an agreed access route, too. An authorized operator should sign off on any remaining exceptions.

    That is how a familiar franchise phone number can keep doing its job after the office behind it changes. The number itself is only one part of the handoff.

    The cutover decision

    The number moved. Is the branch ready to answer it?

    If the move affects calls, missed-call texts, or active conversations, a discovery call can help identify the relevant review scope.

    Before release: Voice tested  •  Messaging verified  •  History access assigned

    Discuss your number cutover

    Exploring the broader franchise setup? See BrandLyft’s GoHighLevel for Franchises service.

  • Are Angi Leads Worth the Cost? Track What Won Jobs Actually Earned

    Are Angi Leads Worth the Cost? Track What Won Jobs Actually Earned

    The estimator got the job. In GoHighLevel, the opportunity is marked Won, with a $4,800 value beside it. That looks like a good outcome for a lead the company paid to receive. But the work may still be on the schedule, the final invoice may be different, and nobody has checked what it cost to complete.

    This is where Angi lead ROI for contractors becomes a different question from lead response or estimate booking. A won estimate can be good news. It cannot tell you whether the Angi lead was profitable. To answer that, the original charge needs to meet the completed-job record and the actual financial result.

    BrandLyft’s Angi and HomeAdvisor lead follow-up guide covers what happens from a paid inquiry through the estimate process. Here, the estimate decision is already recorded. We need to find out what the business earned, what it spent, and which numbers are still unconfirmed.

    Go straight to the paid-lead profitability worksheet if your Angi charges and job records are ready.

    A Won opportunity is not the same as a completed, paid job

    HighLevel’s Lead Source Report, updated October 6, 2026, groups opportunities by their recorded source, status, and value. It lets a user open the underlying opportunity records and see missing sources. That is useful when a contractor wants to know what happened to the inquiries coming from Angi.

    But the report counts opportunities, not unique purchased lead charges. One customer with three opportunities can appear three times. And an opportunity value might have come from the initial estimate, a salesperson’s update, or an automation. HighLevel’s own reporting FAQ says that its dashboard revenue based on Won opportunities is the sum of their monetary values, not the payments actually received.

    A contractor needs three different confirmations after marking a deal Won. Did the customer accept the scope and price? Was the job completed and its final revenue recorded? How much was collected, and what did the work actually cost?

    Those facts may live in field-service software, invoicing tools, payroll records, or the accounting system. A CRM report can point you toward the jobs. It does not automatically settle the accounts.

    Start with charged Angi leads, not every marketplace record

    Before calculating cost per won job, count what the contractor actually paid for. In Angi’s current terminology, an Opportunity is a homeowner project the pro can review. A lead is a connection that supplies contact details and may trigger a fee. The billing arrangement depends on how the business receives leads and on its account terms. A GoHighLevel opportunity is a separate CRM sales record.

    Those distinctions were important to intake in the earlier article. Here they matter for a narrower reason: the denominator for paid-lead economics must reflect charges, not the number of GHL opportunities, contact profiles, or marketplace projects someone opened.

    Angi’s billing guidance says lead pricing varies by task, location, and demand. Subscription and pay-per-lead arrangements also have different billing patterns. Pull the actual statement for the period. Do not multiply lead count by a supposed average Angi price from another contractor’s article.

    A delivery can also reach your CRM more than once without creating another charge. Angi’s partner API reference describes a unique lead ID, leadOid, a service request ID, srOid, and a fee field. It also documents delivery retries when an endpoint fails. The available integration data may differ by connection, so check your receiving records rather than assuming those fields were preserved.

    Keep the billed lead and its source identifier once. A second webhook delivery should not create a second purchase in the profitability worksheet. If Angi actually billed the same lead twice, preserve both billing lines and investigate the credit separately; hiding the second charge as a technical duplicate would understate spend.

    If the source IDs never reach your CRM, BrandLyft’s earlier Angi integration guide explains the receiving connection. The financial check here needs those purchases and their charges to remain traceable after the first handoff.

    Match one lead to its jobs without multiplying the customers

    A person may call about gutter work in March and buy a roof repair in July. That’s one contact with different service requests. Another homeowner may accept an estimate that turns into two separately billed jobs. The financial record has to handle both situations without inventing more leads or more customers.

    The matching rule should start with the paid lead identifier, the original service request, and the GHL opportunity ID. When the estimator records acceptance, add the actual job ID from the system that controls scheduling and billing. Save that relationship even if the office later renames the opportunity or the customer returns for different work.

    Where one paid inquiry leads to several genuine jobs, link each job to the original lead, while keeping the lead fee only once. If two different paid inquiries may have influenced the same job, mark the attribution as disputed. Pick a documented primary attribution rule or a clearly identified allocation method before assigning revenue. Counting the full job under both leads would make the channel look twice as productive.

    There will be imperfect matches. Some job systems have no Angi lead ID, and a technician may open a fresh customer profile. Use the address, job reference, contact history, and acceptance paperwork to investigate. Mark the link Verified, Probable, or Unknown. That last category is a reporting gap, not a zero-dollar job.

    Subtract only credits you can actually support

    A paid lead that does not turn into work is not automatically eligible for a credit. Angi’s lead-credit guidance describes possible reviews for problems such as invalid contact details, service mismatches, wrong locations, or duplicate charges. It also excludes ordinary outcomes such as a homeowner choosing another contractor. Eligibility and deadlines depend on the current account rules.

    Separate the stages in your cost record. A requested credit is not an approved credit. An approved credit is not necessarily cash refunded. Angi says issued credits are applied toward future lead charges, with expiration conditions. Subscription accounts have different treatment.

    For financial reporting, record the original fee, credit status, credited amount, and when that value was actually applied. Attribute it to the original charged lead only once, while retaining the later statement where the credit appeared. Otherwise you might subtract the same adjustment from the old lead cohort and again from next month’s purchase total.

    Include any fixed Angi account expense or other directly attributable acquisition charges under a documented allocation rule. A contractor with a subscription should not treat a nominal per-lead field as the whole channel cost if other required fees were paid.

    What the job record must prove after the estimate is accepted

    Once a job is sold, the opportunity value becomes a reference point. It is not the final number to place in a profit calculation.

    Take a quoted roof repair worth $4,800. The scope changes after work begins, and the final customer invoice is $5,150. The crew uses $2,100 in materials, $1,350 in direct labor, and $300 in subcontractor costs. Before other direct job expenses, that leaves $1,400 of job gross profit based on the final revenue figure, assuming the revenue is properly recognized.

    That example still says nothing about whether the customer paid the invoice. Nor does it include the cost of obtaining the lead. If the finance team cannot establish the job’s actual direct costs, the gross-profit field should remain unverified instead of quietly treating missing costs as zero.

    For each matched job, record its accepted date, completion date, final invoice, recognized job revenue, cash collected, and direct job costs. Direct costs normally include job labor, materials, subcontractors, and other costs directly attributable to doing that job under the business’s accounting method. Keep lead purchases and related acquisition costs separate. Those are subtracted after job gross profit to show what remains from the lead cohort before other overhead and taxes.

    This is also why a payment is not interchangeable with revenue. A deposit may arrive before completion. An invoice may remain unpaid after a completed job. Track both, and have whoever owns the books confirm which amounts count as recognized revenue.

    A worked example: 20 charged leads, five finished jobs

    The figures below are hypothetical. They are not BrandLyft client results or Angi pricing benchmarks. In this example, each paid lead has a final estimate disposition, and every won job is completed. One invoice is not yet fully collected.

    Cohort measureHypothetical result
    Charged Angi leads20
    Original lead fees (20 x $75)$1,500
    Two confirmed, applied $75 credits-$150
    Net lead spend$1,350
    Qualified estimates completed8
    Won jobs, all subsequently completed5
    Recognized revenue from completed jobs$14,500
    Cash collected so far$13,000
    Verified direct job costs$9,300
    Job gross profit$5,200
    After net lead spend, before other overhead and taxes$3,850

    Cost per qualified estimate is $1,350 divided by eight, or $168.75. Cost per won job is $1,350 divided by five, or $270. Those denominators include the cost of unsuccessful purchased leads. Using only the five leads that won jobs would make acquisition appear much cheaper than it was.

    The $5,200 job gross profit comes from $14,500 in recognized revenue minus $9,300 of direct job costs. Subtracting the $1,350 in net acquisition spend leaves $3,850 before other operating costs and taxes. That is an acquisition-adjusted contribution, not the company’s final net profit.

    There is still $1,500 in revenue not collected in this example. The recognized-revenue calculation and the cash position therefore tell different stories. Before spending more on Angi, review that unpaid balance. The projected financial result is not cash already available.

    Don’t compare fresh leads with jobs that have had time to finish

    Roofing jobs bought through October leads may not finish until November. Remodeling estimates can also take weeks to turn into firm decisions. If you divide October charges by only October’s completed work, the source may look poor simply because the jobs have not had time to close.

    Group purchases by the date the charged lead arrived. Then follow each cohort through estimate, acceptance, completion, and collection. Show the reporting as-of date, the number of still-open jobs, and the number of completed jobs with missing cost or payment evidence.

    Partially installed kitchen cabinets with unfinished toe-kick trim and installation materials in a residential remodeling project.
    A purchased lead can turn into real work before the job is finished. Profitability comparisons need to account for jobs that have not yet reached a verified financial outcome.

    Compare cohorts at equivalent maturity, such as the same number of days after lead delivery, or wait until each cohort is sufficiently resolved. The appropriate window depends on the trade and its real job cycle; no universal 30-, 60-, or 90-day cutoff can make slow projects instantly comparable.

    Also compare like with like. A set of emergency pest-control jobs and a set of full roof replacements may carry very different margins and delays. Service type, territory, and billing arrangement can explain differences that a single Angi-wide total conceals.

    Contractor Paid Lead Profitability Worksheet

    Start with one line per billed lead and a separate line for each real job. Keeping those ledgers apart prevents the same lead fee from being repeated every time one customer buys another service.

    Paid-lead ledgerCompleted-job ledger
    Lead ID, service-request ID, arrival date and tradeJob ID and linked source lead ID
    Actual billed fee and account-cost allocationEstimate acceptance and completion dates
    Credit status, credited amount and application dateFinal invoice and recognized job revenue
    Qualified estimate result and GHL opportunity IDCash collected and any amount still due
    Original source, match confidence and exceptionsDirect job costs, gross profit, source confidence and lead-to-job lag

    A completed row should let someone open the original Angi charge, the corresponding estimate, the job record, and the payment evidence. Use the same lead ID on the job ledger only when the link is supportable. Leave uncertain matches flagged for investigation.

    From the completed records, calculate net acquisition spend, cost per qualified estimate, cost per won job, verified completed-job gross profit, and the amount remaining after acquisition expense. Publish those numbers with the cohort window and exclusions. This worksheet is an operating method, not a claim that HighLevel natively reconciles all those systems.

    What to do when a source looks expensive

    A poor result does not always mean every Angi lead should be stopped. The place where the numbers go wrong matters.

    If valid paid inquiries rarely receive a completed estimate, check contact attempts and estimator coverage before making a profitability judgment. Those leads may be losing their chance long before pricing becomes relevant. If estimates are completed but rarely accepted, review trade fit, quoting, and sales follow-through.

    Another possibility is that jobs sell but leave little gross profit. That calls for looking at job scope, quoted prices, direct costs, and the types of projects being purchased. More aggressive follow-up will not repair a consistently underpriced job.

    When certain trades or ZIP codes repeatedly show weak financial results, restrict the lead types or areas you buy and measure the next completed cohort. If the data is incomplete, repair the source-to-job link before treating an absence of recorded profit as proof of a loss. And if the channel still fails an appropriate margin test after the reporting and sales issues are understood, stopping or reducing spend is a reasonable business decision.

    Follow the fee past the Won column

    At the estimate stage, the question is whether the business can turn a purchased inquiry into a real opportunity. After the job closes, it changes. Which Angi charges produced work, which jobs were completed, what did those jobs earn, and how much of that money was actually collected?

    GoHighLevel can help identify the original opportunity and the recorded source. A completed-job and finance record must supply the rest. Once those records meet, the contractor can decide whether to keep buying the same lead types, change the follow-through, or put the money somewhere else.

    Before the next Angi purchase

    You have the Won count. Can you prove the profit?

    An Angi charge, a finished job, and the payment record should point to the same work. When that trail stops at a CRM opportunity, it may be time to review how your systems exchange the result.

    PAID LEAD JOB RECORD PAYMENT + COSTS

    Discuss lead-to-job tracking

    Want to see the implementation approach first? Explore Revenue System Build.