Send GoHighLevel Phone Closes to Facebook Ads
Your deals close on the phone, days after the click, and Facebook Ads never finds out. This playbook connects your GoHighLevel funnel and pipeline to the Facebook Conversion API, so Meta optimizes toward callers who pay instead of leads who ghost.
Your funnel doesn’t close deals. Your reps do, on the phone, three or four days after the click. Facebook Ads never hears about those calls, so its delivery keeps optimizing toward the cheapest leads it can find: the ones who book nothing and buy nothing. You end up paying for volume while your closers work a pipeline full of tire-kickers.
This playbook connects your GoHighLevel funnel and pipeline to the Facebook Conversion API through AnyTrack. Every lead, booked call, and won opportunity is matched to the ad click that started it and sent back to Meta server-side, with the deal value and customer data attached. Meta stops chasing raw leads and starts finding the people who pick up the phone and pay.
The Journey of a Tracked Conversion
Follow one lead from the ad click, through the booked call, to a phone close sent back to Facebook Ads days later. Every stage stays attached to the click that started it.
Steps marked with the AnyTrack node run automatically. No extra code, no manual tagging.
Example Scenario
You run Facebook Ads for a home-services business. Leads land on a GoHighLevel funnel page, submit a form, book a call on your calendar, and a rep closes them over the phone, sometimes days later. For Meta to learn from any of that, three things need to happen:
- Every lead needs its click. The contact created in GoHighLevel must carry the click ID from the ad session, or the close can never be attributed.
- Every stage needs to be an event. Contact created, appointment booked, and opportunity won each become a conversion event AnyTrack tracks.
- Every close needs to reach Meta. The won deal, with its value, is sent server-side to the Facebook Conversion API and mapped to an event Meta can optimize for.
- An AnyTrack account on Starter or above (the Facebook Conversion API requires a paid plan)
- Admin access to your GoHighLevel account and the sub-account you want to connect
- Facebook Business Manager access with permission to manage your ad account
- Leads collected on GoHighLevel funnel pages or native forms (external forms and Zapier imports need an extra step, covered below)
- A GoHighLevel pipeline where your reps mark opportunities won
Step 1: Install the Tracking Tag on Your Funnel
Create a property in your AnyTrack dashboard with your funnel’s URL, and copy the AnyTrack Tracking Tag. Then, in GoHighLevel:
- Open the funnel you want to connect
- Open the funnel settings and locate the Head Tracking Code section
- Paste the AnyTrack Tracking Tag and save
The Tag starts a first-party session on every visit, collecting the Facebook click ID (fbclid) and UTM parameters the moment the ad click lands. If you share GoHighLevel calendar links outside your funnel, paste the Tag into each calendar’s Customization → Custom Code field too, so booked calls from those links stay attributed.
Confirm the Tag is live
Install the AnyTrack Pixel Helper Chrome extension to watch client-side events in real time.
Step 2: Connect the GoHighLevel App
In the AnyTrack Integration Catalog:
- Search for “GoHighLevel” and click Install Integration
- Select your property and click Next
- Authenticate with your GoHighLevel account
- Select the sub-account to connect and save
The app configures all the necessary webhooks automatically; no manual automations needed. From this point, GoHighLevel sends contact, appointment, order, and opportunity events to AnyTrack server-side. Full details in the GoHighLevel integration guide.
External forms land under Unknown
External forms and Zapier-pushed contacts arrive with no session. Pass the click ID into the contact’s _atid field (how-to).
Step 3: Map Your Pipeline to Conversion Events
Out of the box, the integration tracks the stages a phone-sales funnel cares about:
- Contact created is recorded as
Lead - Appointment created is recorded as
Schedule - Opportunity won is recorded as
DealWon, carrying the deal amount, the contact’s email, phone, and name
AnyTrack also fetches your pipelines and their stages, so you can map individual stage changes (say, “Qualified” or “Proposal Sent”) to their own events in the integration settings if your sales cycle is longer. Lead and Schedule are standard events and map to ad platforms automatically; DealWon and any pipeline stage events are custom events, which you’ll map to Meta by hand in Step 4.
Step 4: Connect Facebook Ads and Turn On the Conversion API
In AnyTrack, open Tracking Pixels, add a new pixel, and click Connect Facebook Pixel:
- Authenticate with your Business Manager and choose your Pixel ID
- Toggle Server-to-Server Tracking on and connect your ad account
- Save your changes
AnyTrack now loads your Meta Pixel for PageView and sends every conversion server-side through the Facebook Conversion API, out of reach of ad blockers and browser restrictions. Then map your pipeline events: in the Meta integration’s event mapping, map DealWon to Purchase so the deal value drives Meta’s optimization, or to a custom event if you prefer to keep purchases separate.
Unmapped events never reach Meta
Map DealWon (and any pipeline stage events you enabled) before you expect them in Events Manager.
Step 5: Add the UTM Template and Verify Your Ads
The UTM Tracking Template is how AnyTrack ties each session to the exact campaign, ad set, and ad:
- In Tracking Pixels, select your connected Meta Pixel and open the Ads Integrations tab
- Copy the UTM Tracking Template
- In Meta Ads Manager, paste it into the URL parameters at the campaign level
- Back in AnyTrack, click Verify Ads Settings and confirm a green mark next to your campaigns
A red mark means the template wasn’t found; a yellow mark means it’s there but has errors. Click the mark to see the cause. Full walkthrough in the Facebook UTM guide.
Step 6: Remove Duplicate Tracking and Test
AnyTrack deduplicates everything before it reaches Meta, but only if it’s the one doing the sending. In GoHighLevel, disable any direct connections to your ad platforms:
- Disable Facebook pixel tracking on your GoHighLevel forms and workflows
- Remove any ad platform conversion tags from form submission automations
- If you previously wired AnyTrack through manual webhooks, disable those automations; the app handles them now
Then run an end-to-end test. Submit a form on your funnel, book a test call, and mark a test opportunity won. Each event should appear in the AnyTrack Event Log within seconds. On the Meta side, the Test Events tab in Events Manager validates events within about 30 seconds, event parameters appear within about 20 minutes, and modeled conversion attribution in Ads Manager can take up to 3 days. Test mode setup is covered in Meta CAPI Test Mode.
Running Lead Ads or Google too?
Meta Lead Ads pair with Meta CAPI for CRM; on Google, the offline lead status playbook closes the same loop.
Step 7: Launch the Campaign Stack
Every stage of your pipeline now reaches Meta. Two campaigns turn that into cheaper closes.
Prospecting: optimize toward phone closes
Your main campaign, retargeted at the metric that pays: won deals.
- Destination: your GoHighLevel funnel page, with the UTM tracking template from Step 5 at the campaign level and a green mark in Verify Ads Settings.
- Budget: hold your current lead-gen budget while Meta accumulates
DealWonsignals (deals close days after the click, so give it two to three weeks before judging), then scale in steps of about 20% while cost per close holds. - Audience: broad, and let delivery learn from the closes. Exclude a custom audience built from your won deals so you stop paying to re-acquire customers.
- Event tracking: optimizes on the event
DealWonmaps to, arriving with deal values and hashed contact data; every click generates theLeadandScheduleevents that feed the retargeting below. - Conversion objective: Sales, optimized for the
Purchaseevent yourDealWonmapping points to. If closes are too sparse for delivery to learn from, optimize for theScheduleevent first (it maps automatically), then switch once won deals accumulate.
Retargeting: chase the booking, not the lead
Converts the leads who submitted the form but never picked a time.
- Destination: your calendar booking page, same UTM tracking template.
- Budget: 10 to 15% of prospecting. The audience is small by design; let its size, not the budget, set the ceiling.
- Audience: a custom audience of
LeadwithoutSchedule, 7-day window, so it only ever contains leads who haven’t booked yet. - Event tracking: fed by the
Leadevents from your funnel; generates theScheduleevents that pull each lead out of this audience the moment they book. - Conversion objective: Leads, optimized for the
Scheduleevent.
The Optimization Loop
Every deal your reps mark won now does double duty. As soon as an opportunity hits the won stage, AnyTrack sends it server-side to Meta with the deal value attached, and two things happen without you: the new customer joins your exclusion audience so prospecting stops paying for them, and the value gives Meta’s algorithm one more portrait of a caller who pays, nudging delivery toward people like them. Meta rolls those signals into delivery on its own timeline (modeled attribution in Ads Manager can take up to 3 days), so read trends, not single days. Your reps keep working the pipeline; the targeting quietly sharpens behind them.
Once a week, check what the phone calls taught the ads:
- Measure. In the Campaign Report, read cost per
DealWonand revenue per campaign next to the raw lead counts Meta shows you. Then confirm in Events Manager that Event Match Quality holds while contact emails and phone numbers travel with each close. - Improve. Back the campaigns that produce closes even when their cost per lead looks worse: a $40 lead that closes beats a $12 lead that ghosts. And if your reps work stages the tracking doesn’t see yet, extend the pipeline mapping to cover them.
- Expand. Once the won-deals audience is big enough to seed from, build a 1% Lookalike Audience on it and launch a second prospecting campaign against it, same task-card fields as above. A seed of closers beats a seed of leads every time.
Closes teach Meta; Meta finds more closers. Your weekly pass just keeps the money pointed at the campaigns that make the phone ring with buyers.
Wrapping Up
Here’s what you shipped:
- A GoHighLevel funnel where every visit, form submission, and booked call is tracked against the Facebook click that started it.
- A pipeline whose won opportunities flow back to the Facebook Conversion API server-side, with deal values and hashed customer data attached.
- A prospecting and retargeting stack optimized toward phone closes, plus a weekly loop that keeps budget on the campaigns that close.
Your reps already know which leads were worth calling. Now Meta does too.
Explore Related Playbooks
Feed Offline Lead Status to Google Ads with Webhooks
The close happens in your CRM, days after the click, and Google Ads never finds out. This playbook webhooks every stage change back to the original click, so Smart Bidding optimizes on closed deals instead of raw leads.
Build TikTok Custom Audiences from High-Value Buyers
TikTok can find more of your best customers, but only if it knows who they are. This playbook sends full order values server-side, so you can build value-based audiences and lookalikes from the buyers who move your AOV.
Track Affiliate Commissions Back to Your Facebook Ads Campaigns
The affiliate redirect is a blind spot: your commission lands in the network, and Facebook never learns which ad set or creative earned it. This playbook closes the loop with AutoTagged offer links and network postbacks.
