If the conversion your Meta campaign optimizes for happens a handful of times a week, the algorithm has almost nothing to learn from and delivery gets expensive. Optimize for the step people reliably reach, such as the form submit, and count the last step (the confirmed sign-up, the paid order) in your own tools.
On a mentoring call, the marketing manager of a newsletter walked us through two Meta campaigns. The sign-up used double opt-in: enter an email, tick a terms box, then click a confirmation link in the inbox. The first campaign optimized for Meta's Lead event on the form submit. The second optimized for a custom conversion on the page people only reach after confirming. The second ran for about twice as long and did far worse.
What the two campaigns produced
- Form submit as the goal. About $59 of spend, 4 confirmed subscribers and a batch of form fills that never confirmed. That works out to about $14.75 per confirmed subscriber.
- Confirmation page as the goal. $115 for one confirmed sign-up. Meta recorded impressions but no results at all. The sign-up only showed up in the email platform.
The team switched because they worried bots were filling in the form and that they were paying for every bot. On Meta you're usually charged for the impressions your ad receives, unless you chose otherwise when creating the ad. Moving the optimization event doesn't change what you are billed for. It changes who Meta goes looking for.
Why the last step starves delivery
Meta says an ad set becomes learning limited when it is unlikely to get about 50 optimization events in the week after its last significant edit. One of the causes it lists is an infrequent optimization event, and its suggested fix is to choose an event that happens more often, such as moving from purchases to add to cart.
Every step between the click and the conversion shrinks the count: the form, the checkbox, the inbox, the link. Our point on the call was that making the journey harder can remove bots, but it can also remove people who wanted to subscribe and found it tedious. The confirmed step is the one you value most and the one Meta sees least.
There is a second possibility here: the custom conversion may never have fired. A custom conversion built on All URL traffic is based on Page view events, so the confirmation page needs your Meta pixel base code with the page view event on it. A URL equals rule also misses any visit with extra text, such as UTM parameters or a trailing slash, which is why Meta suggests URL contains. Either way, the second campaign gave Meta close to zero events to learn from. To check, visit the page yourself and look for an Active status in the Custom conversions tab of Events Manager, or use the Test Events check.
What to do instead
- Optimize for the form submit. That was our advice on the call: if it brings more sign-ups and they're real people, keep it.
- Check the unconfirmed emails before calling them bots. Run the addresses that never confirmed through an email verification or bounce check. If they're valid, they're people who dropped out of the journey.
- Count the last step yourself. Divide spend by confirmed subscribers from your email platform. That's your real cost per subscriber.
- Move down the funnel once volume supports it. When confirmations get close to 50 a week per ad set, switch. Changing the optimization event restarts learning, as covered in why purchase optimization blinds a new account.
The takeaways
- Optimize Meta for a step people reach every week, not the rarest step in the funnel.
- Meta flags an ad set as learning limited when it is unlikely to get about 50 optimization events a week.
- Meta usually bills by impressions, so a later optimization event doesn't stop you paying for bot traffic.
- If Meta shows no results, check the custom conversion fires: the page needs the pixel's page view event.
- Count confirmed sign-ups in your own tools and divide by spend.
Common questions
Should I optimize Meta ads for the form submit or the confirmed sign-up?
If confirmed sign-ups are rare, optimize for the form submit and track confirmations yourself. Meta says an ad set becomes learning limited when it is unlikely to get about 50 optimization events in the week after the last significant edit, and one fix it lists is choosing an event that occurs more frequently.
Does optimizing for a later step stop me paying for bot sign-ups?
Not directly. Meta says you are usually charged based on the impressions your ad receives unless you specified otherwise when creating the ad, so changing the optimization event changes who Meta looks for, not what you are billed for.
Why does my Meta campaign show no results when I know people signed up?
The conversion may never have fired. A custom conversion built on All URL traffic is based on Page view events, so the page it points to needs the Meta pixel base code with the page view event. A URL equals rule also misses visits with extra text such as UTM parameters or a trailing slash.
How do I check that a Meta custom conversion is working?
Meta suggests visiting the page your custom conversion references, then checking the Custom conversions tab in Events Manager. If it is working, its status shows as Active.
When should I switch to optimizing for the final step?
When it happens often enough to get close to about 50 times a week per ad set. Changing the optimization event restarts learning, so make the move once, when the volume is there.