GoHighLevel
Number Porting Into GHL
SOP: Number Porting Into GHL
Section titled “SOP: Number Porting Into GHL”Last Updated: 2026-05-01 Version: 0.1 (initial draft, will be updated as we run real ports) Tier: Operations / CSM Coordination
Purpose
Section titled “Purpose”When a new client signs with us, they often have an existing phone number we need to bring under our roof. Most commonly:
- A call tracking number the previous agency owned inside WhatConverts, CallRail, or similar.
- The client’s main business line that lives with their old phone provider.
We want that number ringing into GoHighLevel so we control routing, recording, and attribution. To do that, we initiate a port-in to GHL. The losing carrier (WhatConverts, CallRail, AT&T, etc.) needs information from us before they’ll release the number, and we need information from the client before the losing carrier will accept the request.
This SOP is the playbook for running that handoff cleanly so the client never has downtime on their inbound calls.
When to Run: Anytime a new or existing client wants a number ported into our GHL. Owner: CSM coordinates with the client. Operations runs the GHL-side request. Nick approves the cost if there is one. Timeline: 7 to 14 business days from request submission to active in GHL. Allow 2 to 3 weeks before any DNS or ad-campaign change that depends on the number being live in our account.
What You Need Before Starting
Section titled “What You Need Before Starting”From the client:
- Confirmation in writing that they own the number and want it ported (email is fine)
- The full phone number being ported (with area code)
- The name of the current carrier or call-tracking platform (WhatConverts, CallRail, AT&T, Verizon, etc.)
- A copy of the most recent invoice or bill for that number (this proves account ownership to the losing carrier)
- The account number on the losing carrier (often on the invoice)
- The account holder’s exact legal name and service address as it appears with the losing carrier (a single character mismatch will reject the port)
- Any PIN or port-out passcode the losing carrier requires (common with mobile carriers like Verizon and AT&T, less common with VoIP/tracking platforms)
From GHL:
- Receiving-carrier name and account info (GHL generates this when you open the port-in request)
- LOA (Letter of Authorization) template
Step 1: Confirm the Number Type and Owner
Section titled “Step 1: Confirm the Number Type and Owner”Before you do anything else, answer two questions:
- Is it a local number or a toll-free (8XX) number? Toll-free ports go through a different process (RespOrg change). The general flow is the same but the paperwork and the receiving carrier identifier are different. If toll-free, flag to Nick before proceeding.
- Who is listed as the account holder on the losing side? The previous agency, or the client?
- If the client is the account holder, we can move directly to Step 2.
- If the previous agency is the account holder, the LOA must be signed by whoever has authority on that agency’s account. The client cannot authorize the release of an account they don’t legally control. Coordinate with the previous agency rep before sending the LOA.
Get this confirmed in writing from the client before moving on. Most rejected ports trace back to a mismatch on this step.
Step 2: Open the Port-In Request Inside GHL
Section titled “Step 2: Open the Port-In Request Inside GHL”(Operations runs this step.)
- Log into the client’s GHL sub-account (not the agency dashboard).
- Settings → Phone Numbers → Add Number → Port In (the exact path may shift; if it’s not there, search “port” in the settings sidebar).
- Enter the number to be ported.
- GHL will surface:
- The receiving carrier name to send back to the losing carrier (typically Twilio or LeadConnector / Bandwidth depending on the number’s profile)
- The receiving account number to provide
- A prefilled LOA for the client (or account holder) to sign
- A request for the most recent invoice from the losing side
- Download the LOA. Note the receiving carrier and account number.
TODO: confirm during first real port — capture exact GHL UI path, screenshot the port-in form, note any required fields we missed here, and update this section.
Step 3: Get the LOA Signed and Collect the Bill
Section titled “Step 3: Get the LOA Signed and Collect the Bill”(CSM owns this step.)
- Send the LOA to the account holder identified in Step 1 (client or previous agency).
- Request the most recent invoice for that number from the same party. PDF is fine. The losing carrier reads it to confirm:
- The phone number being ported
- The account number
- The account holder name
- The service address
- Verify all four of those fields on the invoice match what the LOA says before sending anything to the losing carrier. A mismatch is the most common rejection reason.
If the account holder is the previous agency, send the LOA + bill request to the agency rep directly. Loop the client only if the agency stalls.
Step 4: Send the Port Package to the Losing Carrier
Section titled “Step 4: Send the Port Package to the Losing Carrier”Reply to the losing carrier (or the previous agency rep handling the release) with everything they asked for in one email:
- Receiving carrier name (from Step 2)
- Receiving account number (from Step 2)
- Signed LOA (from Step 3)
- Most recent invoice (from Step 3)
- The phone number being ported (with area code)
- A request to confirm receipt and provide a target FOC date (Firm Order Commitment, the scheduled port date)
Cc the client (or whoever signed the LOA) so they’re in the loop. Do not bcc — transparency keeps everyone honest about timeline.
Step 5: Submit the Port Request in GHL
Section titled “Step 5: Submit the Port Request in GHL”Once the losing carrier confirms they’ve received the package and will release the number:
- Go back into the GHL port-in request.
- Upload the signed LOA and the invoice.
- Submit.
GHL takes it from there. They’ll coordinate the actual port with the losing carrier’s network.
Step 6: Watch for the FOC Date and Test
Section titled “Step 6: Watch for the FOC Date and Test”- GHL will email a FOC date. That’s when the number is scheduled to flip onto our network. Calendar it.
- On the FOC date, call the number from an outside line at three points: morning, midday, late afternoon. Confirm:
- It rings into the GHL number’s assigned routing (forwarding rule, IVR, or user)
- Caller ID shows the correct number on the inbound side
- Recording (if enabled) is capturing
- If anything is wrong, open a GHL support ticket immediately. Do not wait until the next day.
Step 7: Update the Client Record
Section titled “Step 7: Update the Client Record”Once the number is live in GHL:
- Update clients.json with the GHL number ID for that client.
- Update call tracking attribution in any reporting (GA4 events, GHL workflows, dashboards) that referenced the old WhatConverts/CallRail number.
- Notify the client the port is complete and the number is now under our management.
- If the client was paying the previous agency or carrier directly for the number, remind them they can cancel that line item now.
Definition of Done
Section titled “Definition of Done”- The number is live and ringing inside GHL.
- A test call confirmed routing and recording (if applicable).
- clients.json reflects the new number assignment.
- Reporting and any workflow that referenced the old tracking number have been updated.
- The client has been notified the port is complete.
Common Rejection Reasons (and How to Avoid Them)
Section titled “Common Rejection Reasons (and How to Avoid Them)”| Reason | Fix |
|---|---|
| Account holder name mismatch between LOA and invoice | Get the invoice first, copy the name character for character onto the LOA. |
| Wrong account number | Confirm the account number is the one on the most recent invoice, not an old one or a customer-facing reference number. |
| Number is part of a multi-line account and can’t be ported alone | Ask the losing carrier in writing whether the number can be split off. Some plans require porting all lines or none. |
| Outstanding balance on the losing account | Client needs to pay the balance before the port will release. CSM flags this to the client immediately. |
| Wrong service address on the LOA | Pull the address from the invoice, not from memory or the client’s website footer. |
| Toll-free port submitted as a local port | Reset, treat it as a RespOrg change, escalate to Nick. |
Notes / Updates Log
Section titled “Notes / Updates Log”This SOP is a first draft. As we run real ports we’ll log:
- What surprised us
- Where the GHL UI didn’t match what’s written here
- How long the actual port took (vs. the 7 to 14 business day estimate)
- Carrier-specific quirks (WhatConverts vs. CallRail vs. AT&T vs. Verizon)
[YYYY-MM-DD] [Client name] — Brief note on what worked, what didn’t, what to update.