Quality traffic with Facebook ads is the Holy Grail. I’m not going to go into it here, but Meta’s ignorance of quality traffic activity is maddening. But I have a solution for you: A custom event that combines time spent and scroll depth.
I actually wrote about this three years ago, but hoo boy. I seriously overcomplicated that tutorial. We can do this in far fewer steps.
While there are likely manual solutions and other tools that help you accomplish something similar, I’m using Google Tag Manager to manage my pixel. This post assumes that you are doing the same.
After this tutorial, we’ll talk about what you can actually do with this once you have it set up.
Let’s go…
First, Do This…
As mentioned, this post assumes you are using Google Tag Manager to manage your pixel. I assume that you already have a tag created for the base pixel code. I also assume that you’ve already created tags for both the 60-second view and 70% scroll events.
If you haven’t done these things yet, you’re in luck. I have some rather simple instructions below. Read them first.
- Create a Meta Pixel Event that Fires After Viewing a Page for 60 Seconds
- Create a Meta Pixel Event that Fires After Scrolling 70% Down a Page
Create a Quality Visitor Event
If you’ve already completed the steps above, the most difficult tasks are finished. The rest is easy.
Create a tag in Google Tag Manager. Once again, we’ll use the Custom HTML tag type.
Add the following code:
<script>
fbq('track','Quality Traffic');
</script>
We could add parameters, but we’re not going to bother. We’re keeping it simple.
Make sure to turn on Tag Sequencing so that the base pixel code tag fires first.

Now click to configure your trigger and create a new trigger. We’re going to use the Trigger Group trigger type.

You’ll want to configure your trigger so that requires both the 60-second event and the 70% scroll event to fire prior to this event firing.

The final product looks like this…

You may want to test it using the Preview tool in Google Tag Manager. Otherwise, publish it and you’re ready to go.
Create a Custom ConversionCustom conversions let you create rules for events or URLs so that you can better track and optimize for specific actions with Facebook ads. More
We’ve discussed this in the other two blog posts, but there’s a bug that doesn’t allow you to add columns to your Ads Manager for all custom eventsConversion events tracked by the pixel, app SDK, or API that are outside of standard events. These tend to be created to fit the publisher's needs when a pre-defined standard event will not. More. The easy solution is to create a custom conversion that maps to that custom event.
The way I do it so that it includes all pages where this event is fired looks like this…

If you can, add it as one of your eight ranked events in Aggregated Event MeasurementAggregated Event Measurement is Meta's protocol for handling tracking opt-outs from iOS devices. AEM initially required advertisers to configure and rank eight events and verify their website, but those requirements were removed in 2023. Aggregated Event Measurement still exists, but Meta handles it on the back-end to comply with Apple requirements on privacy. More.

I consider this event pretty important, so I rank it after Complete Registration.
Use for Reporting
I add the Quality Visitor event along with the Scroll and Time on Page events as columns to my Ads Manager. This is a really good way to measure the quality of your traffic.
Compare these numbers to your link clicksThe link click metric measures all clicks on links that drive users to properties on and off of Facebook. More, outbound clicksOutbound clicks measure the number of clicks on ads that take people to properties away from Facebook. More, and landing page viewsLanding Page View is a Facebook ads metric that represents when people land on your destination URL after clicking a link in your ad. More.

Also note that I compared attribution to isolate 1-day click. Otherwise, these numbers include events fired for up to seven days after clicking or one day after viewing.
In the example above, we have 182 1-day click Quality Visitors compared to 801 landing page views (23%). Considering my Quality Visitor requires a 2-minute visit, that feels pretty solid.
This would be something to look at very closely if you ever optimize for link clicks or landing page views because the quality is often low.
Optimization
If you ever run ads to promote blog posts, you should optimize for this event. While it would be nice if Facebook had a “Quality Traffic” optimization option built-in, this still can’t be worse than optimizing for link clicks or landing page views.
To do that, create an Engagement campaignThe campaign is the foundation of your Facebook ad. This is where you'll set an advertising objective, which defines what you want your ad to achieve. More.

Select “Website” as your conversion location within the ad setAn ad set is a Facebook ads grouping where settings like targeting, scheduling, optimization, and placement are determined. More.

And then select “Maximum number of conversions” as your Performance GoalThe Performance Goal is chosen within the ad set and determines optimization and delivery. How you optimize impacts who sees your ad. Meta will show your ad to people most likely to perform your desired action. More and then your pixel and the Quality Visitor conversion event.

I’m actually running a split testSplit testing (or A/B testing) allows you to test changes in Facebook variables like ad creative, audience, or placement to determine which approach performs best. More right now to compare the results between optimizing for Quality Visitor or landing page views. I admit I don’t understand why I hadn’t done that before.
Targeting
If you run any remarketing ads, one group of people to consider targeting would be those who are most engaged. Those who trigger the Quality Visitor event would be a solid differentiator within your total website visitors pool.
Your audienceThis is the group of people who can potentially see your ads. You help influence this by adjusting age, gender, location, detailed targeting (interests and behaviors), custom audiences, and more. More would look like this…

Whether you refine the audience by page or alter the time window is up to you.
Watch Video
I recorded a quick video on this, too. Check it out…
Your Turn
Do you use custom events in this way? Are there any others that you create?
Let me know in the comments below!