📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

Facebook Pixel is BROKEN in 2025 (Use This Instead)

Dr. Matt Shiver21:50

Transcription

If you're relying on the Facebook pixel alone, you're going to be optimizing your ads based off of bad data. And that bad data could cost you thousands of dollars every single month.

And look, I've been running ads since 2019. And I caught myself making this same mistake last month. And I wasted about $10,000 on a single campaign. And I don't want that to be you. Okay?

So, in the next 20 minutes, I'm going to show you how you can set up advanced tracking using conversions API to optimize for qualified leads and qualified calls. So you actually talk to the right people that want to buy versus just tire kickers that end up wasting your money.

Okay, this is crucial for anybody who is running ads to generate more leads for a service-based business or you're running an application funnel or a uh direct book a call funnel.

Okay, now the big reason this is important now more than ever is because of the new Andromeda update. Okay, the Andromeda update happened about in August. I've made some videos on that in the past. I'd highly suggest watching those. But with the changes, we have to make sure we're sending the best data back to Facebook so the ads can optimize around that.

So, let me jump into my account and show you the mistake I made and show you how important this is to set up the right way.

All right, so we are in my ad account here and these are the two campaigns. So, one of them I did right, one of them I did wrong. Okay, the one that I did wrong is this one over here. As you guys can see, I I I spent about uh $10,395 and I messed up. Okay, I messed up because I had too many calls being reported and it was way more calls being reported than was actually happening. And I'm going to show you how to to make sure you don't do this.

But let me just show you because you can see, oh man, 29 calls, $355 cost per call. That's great. But this is high. That's what I use for my attribution tracking. There's other other softwares like that. But in reality, this only actually booked me 16 calls. So it almost doubled. It almost double reported how many calls came from this set of ads. So, you can see my cost per qualified call is $2,500, right? Huge boo boo. I was like, what is going on? Right? And Facebook over here says my cost per call is $355. And you can even see the discrepancy of like cost calls that happened and calls that were qualified.

All right, last week, I made some adjustments and you can see cost per call is at 664. Qualified is is nine. 12 calls and two deals, right? And uh this is actually way more accurate. I have 16 calls reported by Facebook. it overattributed a little bit where I only have 12 calls that have actually happened. But way better, way better.

Now, let me emphasize this why this is even more important. Okay, so if you have bad data, here's what's going to happen. I'm going to show you this one ad. So, this ad right here, okay, it's uh Jen screen share. Let me go ahead and pull this over. You're going to see exactly what I mean.

Okay, so I messed this up big time. Okay, I had uh two calls. Only two calls happened from this one ad. Okay, Facebook thought it had eight calls. Okay, so it was like, man, you're doing so good. So what happens with the Andromeda update is based off of the output, right? So this one clearly outperformed a lot of the other ads based off what Facebook saw. So Facebook gave it more money to spend. Okay. But in reality, it didn't. It only got me two calls. So it thinks it got me eight. So it spent a lot more money than some of the other ones that probably should have got spent.

So again with the Andromeda update, what happens is whatever event you're optimizing for, so for me is schedules. If you're getting a lot of pixel fires or a lot of event fires for an action, it's going to show more of that ad. But again, the problem is, well, what if that's actually not happening like this one, that ad is going to get a lot more spin.

So, you can see across all of these, like all of them over reported, right? Eight calls. That was actually the closest one. Actually pretty good. The again, this one had two calls. Facebook thought I had eight. This one, Facebook thought I had four, had one. Facebook thought I had three, had one. Facebook thought had three, had two, and a client. Like, this one should have got more spent, right? because these three got the most results. But again, it's just disproportionate.

So, how this works, again, I want to emphasize the importance of this, is Facebook will see what ad is actually getting you results that you're optimizing the campaigns for. So, if you're optimizing for book calls and it thinks you're getting eight calls, it's going to keep spending more on this ad.

Now, what had happened here on the back end, again, I made a boo boo, right? I had the same event fire multiple times. If somebody rebooked a call, right? Right? So, if somebody rescheduled a call, that would fire the event again for Facebook. Huge problem. If they booked a second call or a follow-up call, it would fire the event again. So, in reality, I had two people and probably one of those who was very unqualified booked probably five or six calls from like reschedules or no show cancellation, then we booked them in for another one the next week. So, I had a really, I say, shitty person here that had this pixel fire way more times. So, then the ads started being put in front of people like that, right? which again led to more problems.

So, I fixed that this past week again and we can kind of jump back into this account. Things look so much more stable. Okay, this is the the one ad that's got most of the spin. It's got seven calls. Guess what? Facebook says it's got seven, right? This one Loom video got one. One schedule. Facebook got one. This uh carousel got one. Facebook said one. Now, again, Facebook didn't attribute perfectly. There's some errors down here, but like overall, this is way better. Now that I'm giving Facebook the right data, it's going to start optimizing the campaigns based off of the results that it's seeing too.

Okay, so this is extremely extremely important. Now, let me first just like explain to you guys what is uh pixel versus conversions API cuz what I'm going to share with you guys in this video is is going to be more conversions API of like how to set it up using go highle and zaper to make sure that again the events match uh appropriately.

Now you guys have probably heard about the Facebook pixel, right? The Facebook pixel is essentially a line of code that is put on your website, right? So, if I'm over here and someone books a call with me, there's going to be a pixel that's on this page for page view as you can see. But in reality, every page is essentially something that looks like this, right? It's just a bunch of code. And when the line of code lands, like when hits a page and it has a line of code on it, that's where the pixel is installed. So when the browser loads the page, that pixel event is there and then it fires and then it pushes it back and says and Facebook sees that activity because that line of code is on your website. Okay, that at a very high level is what a pixel is. It fires from the user's browser.

Now we are in a stage now where data, privacy, all that stuff is becoming more important. Since iOS 14, you can now like opt out of tracking that you can still track with UTM parameters and stuff like that. But I will say as we continue to progress through this privacy-driven era, there's going to be more limitations on what events we can push back to uh Facebook. So it's going to become harder and harder to track people. Google also has mentioned before about cutting off the UTM parameters and and adding more security there too. So uh what's going to be more and more important is if it's becoming harder and harder for us to really rely off of just this pixel data line of code because essentially some of these browsers can just strip them, right? If someone uses an ad blocker as a plugin, it's going to strip it. So, it won't actually pass back to Facebook. So, that's a problem because if Facebook can't see the activity that's going on your website, it can't optimize for more of those people taking that action.

So, this happened in like 2020, 2021, they introduced conversions API. And slowly but surely, this is now kind of the mainstream thing that most people are doing. And if you're not doing this, you're way behind the ball curve. You should be doing this. Okay.

Conversions API sends data directly from your server back to Facebook. Okay, so this has all the information that you could possibly need even if someone is using cookie blockers or you know pulling things off, right? So essentially what can happen here is when somebody fills out a time right with their name, phone number, email and all this data from go high level that's my platform I use. I can push this data manually back to Facebook and I can actually only push back data of qualified people. And that's what I want to show you in this video is to walk through how to actually do that.

Because if you're tracking just, hey, I want all leads, I want all schedules, I want all people who will fill out applications, and there's no like filtering out of of that. Uh, with this post and drama era, you're going to get a bunch of cheap leads. Okay? You have to understand the goal of Facebook is to give you or meta is to give you the event that you're optimizing for, more of that event. So, if you're optimizing for leads, it's going to give you the cheapest cost per lead. Okay? Cheapest cost per lead doesn't mean best quality. The same thing for if you're optimizing for a schedule or a complete application. They're going to give you as many as possible. That doesn't mean they're going to be good quality. So, you have to as an advertiser, as a business owner, learn how to only send back the best quality leads. Okay? We can do this with applications. We can do this by having it on the form of like an opt-in, you know, asking a question. Is this you? Yes or no? And again, only people that say yes, the pixel fires for. And we can also do, I'm going to show you in this in a second, is you can actually optimize ads based off of people who show up on sales calls and get pitches or potentially people who buy. Just depends on your overall volume. All right, but this is what you need to be doing, right? And I'm going to show you exactly how to do that.

Okay, so let me just give you an example of this real quick. Right, so here is a VSSL funnel, right? So this is a 20-minute VSSL funnel. Says, you know, direct to book book a call. This is what we're running right now for a lot of our traffic. If I go book a strategy call, the calendar isn't just here, right? If I did do that with go high level, I would get, you know, that event for schedule would fire every time. But again, I don't want just all schedules. I only want people who are qualified.

So I'll come back over to my ads manager really quick and I'll scroll all the way down here. Actually, it's right here, right? So cost per lead is $150, right? So 20 people essentially have filled out this form right here. Right? 20 people have filled this form out. And of those, seven people have booked calls. the rest were unqualified or like just didn't book a call. So, I'm okay with that. I expect that to be the case. I don't want everybody to book a time, right? So, this is actually eight. So, this shows applications submitted is my pixel event for if someone is qualified. So, that's actually pretty good, right? Eight people uh submit applications for this ad and seven of them booked. That's a pretty good throughput all the way through. But the goal of the funnel here is to disqualify people first, right? Some people might say, "Oh man, I got 20 leads. They weren't qualified." But that that doesn't matter at the end of the day. What matters is your rorowaz, right? This one ad uh I just launched these last week, but that one's at a 1.62 just from the past week. And this one down here is crushing at a 12x. But again, that's just because it's still early on in the process, right? But again, like I don't care about these 45 people that applied and only of those, you know, 12 people booked calls. Like I care end of the day about just the rorowaz on across the entire campaign.

Okay. So again, we can optimize for just qualified people. So what happens is when this is completed, the people that are good fits will see a calendar. The people who are not good fits, we'll say, "Hey, thanks for your application." We'll reach out with you with next steps. And then if we do qualify, then we will send them a calendar invite and they will book an event will still fire. But I only want good quality people coming through, right?

The second way you can do this, like I said, is you can actually just put this in the form itself. So I do have like a paid ads school group. If you guys haven't seen it, you can go ahead and check it out. It'll be in the link in the description. It's great. Um, but inside this form, you'll see I've got name, phone number, email, and then I have a question. Are you an online coach with at least 10 clients and can invest at least $1,000 a month in ads, yes or no? Well, if they put yes, the event is going to fire. If they put no, the event will not fire. This is a longer term cycle, so I don't have these ads optimized for schedule. I do have them optimized for lead, but the only event that's going to fire for a lead is if someone says yes, I'm an established coach essentially, right? So then I can start to train the pixel. Put this ad in front of more people like this, not just anybody who's going to fill this form out because man, we get people who come in through here who are not coaches at all or who do low ticket, right? Or they don't have any money to invest in ads. And it's like, well, don't go through an ads miniourse if you don't have money to invest in ads. And over time, your pixel is going to get smarter. Okay?

Now, let me show you guys how to actually set this up logistically. Okay? If you guys aren't using go high level, you should be using GoHigh Level. I'm telling you right now, it is the best software for this because it's the easiest way to do it. Okay, so I have a whole folder in my goi level that is for um conversions API. Okay, so I've got a conversions API for applications submitted and again for me that's only qualified applications, right? So I've got my surveys as triggers and then I have a Facebook conversions API action here. So you can see inside of here uh you can pick your standard event. So this is a submit application and then down here you can actually also map your Facebook click ID which for this all you need to do this is important if you are using go high level to do because it'll give you better uh tracking data is if you come down to custom values and then you go to attribution and you go to latest and then you go to Facebook click ID that's going to help map the last click that that person took before they did the action you want them to take which helps Facebook realize who's who. Okay, but you'll see for each of these triggers here, this is only firing if the survey they completed is disqualified or sorry, it disqualified is false. So, it means they're qualified. So, I have that for the miniourse. I have it for the VSSL. And then I also have one on my homepage. So, again, only people that get passed back to Facebook are going to be people who have completed an application who are qualified.

Now, I have that set up for a bunch of different events in here, too. I've got it set up for purchases. I've got it scheduled for a schedule call. And let me show you that the adjustment that I made to this cuz this was my boo boo last month. If you're using go high level and the trigger is appointment status is confirmed. This is my sales team's group. That's what you want. But the problem is I I tried to do this to where I was like, you know, I I don't allow re-entry. But I looked at the help docs and I discovered that doesn't matter if you have allow re-entry on or off because essentially if someone um books a new appointment, it's a new event. So the a trigger is an event. It's not based off of a contact. So, what had happened on that original campaign where I showed you there was eight calls that Facebook reported but only two happened was that this appointment status just kept changing because we had four reschedules and a follow-up call or whatever the case was.

So, what I did here, again, this is value. I can't believe I'm dropping this for free right now, but the appointment status is confirmed. So, somebody booked a call with us. And then I have a condition. Okay? And this is just an if else branch. And you could do this on other platforms, too. But I'm looking to see if they have a tag for the Facebook schedule pixel fired. Okay? And if they don't have that tag, that means they're a new conversion event, right? They have not had this tag fire before. So if that's the case, then they're going to go through my conversions API set up the same way as I I shared with you guys before, but the event's name is going to be schedule, right? So that event will fire, then they get the tag added, schedule pixel fired. So if someone ever re-enters this workflow again, they will not get the Facebook conversions API pixel to fire again. And that was the issue that I had. Now I may decide to change this just for uh transparency. I may decide to change this in the future, you know, cuz if someone books a call in 12 months from now, that pixel event may not fire. Now that I'm doing this real time, I'm probably going to add another if else equation has a contact had a call within the last x amount of time. I'm probably going to add that workflow there. But for simplicity, this is this is how I have it set up right now. Okay.

Now, same thing for uh let me show you guys the leads for the miniourse. So, somebody completes one of those forms, right? And then I have a condition, right? You guys saw that in the original uh ad here or like the form here, yes or no, right? So, then I have a condition of can they invest in ads or not. If the answer is yes, they fire that event. If the answer is no, we skip that event. Now, I could have the trigger only be added when somebody says yes. Like I could have the trigger is this and then the answer in here is yes. Like I could do that. I decided not to do that and still add people to a retargeting list because we still have some other offers that we can present to these people so I don't like exclude them from my remarketing campaigns. So I don't do that but I could. Okay, but that's how this one's set up here, right? So that event fires for that. Okay, so all of those events again, somebody's phone number, name, email gets passed into here and then gets kicked back to Facebook using the uh conversions API over here in go high level and the passback information is actually really really good.

Okay, so this is uh the events manager where you can kind of see all the events that happen. So the ones that are passed back over there right now are all listed over here. The complete registration is the the ads miniourse one that you just saw like this one here. That one's really really good because it's immediate, right? Where submit application also really good. It's immediate and then schedule here's the reason schedule purchase and then qualified call are lower, right? So you'll you'll notice when you when I actually look at this this over here like will tell you what is triggering that event. So a page view I don't have any conversions API data that's that's hooked up with that. It's just a pixel for complete registration for submit application for lead. I have the pixel firing. So it says sent by pixel and conversions API. So, I what I didn't mention is in my setup here, if somebody does uh you know qualify, they'll hit another page like this that also has the pixel installed on that page. I'm not going to cover that in this video. That'd be like a whole another rabbit hole. But essentially, you you want to use the pixel and the conversions API together to make the event match quality even better. Here's the thing. Four events that happen within 7 days. Okay.

Now coming back to this over here. That's why my schedule and purchase event and even qualified call have worse event like matching scores. So this is essentially like if the event comes through can Facebook actually find that user to get their information to then serve ads to more people like that. I don't have the pixel set up for schedule or purchase. I only have conversions API back. And the reason for that is typically if if it takes longer than 7 days for the event to happen, the attribution from the pixel is going to start to decline. So for me, you know, complete registration is the same day event. A lead pretty much same day event. Some of them I exclude, that's why it's off. But submit application, they complete the application on that page, same day event. So that's why the events are higher. Okay? But if you have an event like a call or a purchase that happens later than 7 days, I would just use conversions API. Okay? It's just going to give you better data.

Okay, now, one more thing I want to show you which is super cool. I just started doing this. Actually, two more things. You guys are staying here for this video, so you're crushing it. I'm going to share with you guys two things that can really help. Okay. So just because somebody could booked a call doesn't mean they're they're qualified even if they went through the full funnel, right? So another thing that you can do is you can also if you don't have go high level or if you wanted to make a custom event, you can use Zapier to send custom data or custom events back to Facebook. So for me I I as you guys saw a lot of the custom events that I have in here or a lot of the events I have in here are standard events, right? Standard events are the ones that Facebook already has. So purchase, schedule, lead, submit application, complete registration, and page view are all standard events. They're just events that Facebook has. But I wanted to add one for a qualified call. Okay? And you can do that with with Zapier, right? There is a Zapier Facebook uh conversions action that allows you to pass that data back to Facebook, right? So let's pretend that you know um we had a call with a client. If my closer just drags and drops this over to waiting on decision or marks the lead or tags them as qualified, that action alone and and this is this is a qualified person who showed up on a sales call, got a pitch. When the saleserson moves them or tags them as qualified, I then have them adjusted inside of goi level into a workflow that moves them over to a new pipeline stage. And this is like qualified call, right? When that change happens, then I have this zap that then pushes the data back to Facebook, right? That says, "Hey, this person, name, phone number, email, all of that stuff is a qualified lead. Go ahead and push all of their information back over there." So now, I just did this about a week or so ago, so I bulk pushed a bunch of people through it. And now what I'm going to do is I'm going to start to train this event for qualified people because if I can get even better data or put it in front of even better quality of people, it's going to help me make more money off of less ad spend. That's a really cool hack right there. Right? When a closer marks the person as qualified, you can create an action that tags them, right? And then moves them in a pipeline stage. When that happens, you can use Zapier to then send that information back to Facebook to say, "This is the type of person that we want to serve our ads in front of." Because there are people who will hop on a call and get a pitch versus people who will just fill out a form.

All right, let's let's kind of close this thing out. So, again, the whole purpose of me making this video in the first place is the importance of having good data. Okay, with the Andromeda update, what we are doing is we are optimizing for events that are further along down the sales cycle, right? Not just leads, not just form submissions if we are doing form submissions or making sure we have that qualified question here so I'm not just getting a bunch of junk leads, right? The more accurate this data that that you have in here matches up to what's actually happening in in your website or or wherever you're sending people, the better Facebook can learn. Facebook is a machine algorithm learning machine. So whatever events are happening over here, if if you're getting more events that's not happening, Facebook's going to spend more money on that. So, Facebook needs to see exactly what's going on. So, if you don't have a way or if you're not tracking this at all, you're not seeing how close am I and accurate am I from these reported events, you could be wasting a lot of money. Okay, I'm telling you now, if if anything, like look through your data because I did it last last month. I thought I had everything set up the right way. And for the most part, I did, but I didn't realize that all my calls were almost double recording. And that's a huge issue, right? Huge issue for Facebook because it doesn't know what to optimize for.

So, that's all I got for today's video. If you guys like this, you can smash the subscribe button for more videos just like this. If you guys do want to learn more about Facebook ads, I do have a mini course that'll be linked down in the description. Uh, it covers all of the the three main funnels that we help a lot of coaches, consultants create, the Instagram follower funnel, the DM funnel, as well as conversion ads. All right, so you go check that out. Click that link down below and I'll see you guys next week.