RELIABLE PR
← Back to Journal
Meta Ads ·Paid Advertising ·Analytics ·Conversion · By Chris Harris

Complete Registration Event on Meta: Which Signup Step to Track

A software client's site fired Meta's Complete Registration event only after an emailed code. What that did to a signup campaign, and which event to choose.

A hand holding a smartphone that shows a loading screen

A software client’s Meta signup campaign went live at about 10:45 PM Pacific on September 21, 2026. At the day 7 read, covering spend through September 27, it had spent $379.21. Registrations credited to any ad: zero.

The product’s own records disagreed. Three new accounts that week, all created on September 23. The Meta pixel logged one of them, Meta credited it to no ad, and the other two never fired the event at all.

The reason was where the event fired. The site sent Meta’s CompleteRegistration event only after a new user typed a six digit code from a verification email, not when they submitted the signup form. Two of the three never typed the code. The campaign was optimizing on the last step of a two step signup, and that step happened once all week.

Here’s what that did to the campaign, and which conversion event we’d choose instead. The fix hasn’t been tested yet.

What the Complete Registration event on Meta is supposed to count

Meta’s pixel reference describes CompleteRegistration as “When a registration form is completed,” with the example “A person submits a completed subscription or signup form.” The code is one call, fbq('track', 'CompleteRegistration'), with optional currency and value parameters.

By Meta’s own definition, the event belongs on the form. Our client’s site fired it one step later, when the person typed in the emailed code.

Meta’s definitions overlap, too. The same reference describes Lead as “When a sign up is completed” and StartTrial as “When a person starts a free trial of a product or service you offer.” What matters most is the moment the event fires, because that decides who the campaign learns from.

The campaign, and the spend line we wrote first

The client isn’t named. Figures are from our build notes and daily tracker reads.

It was one Leads campaign: Advantage+ campaign budget at $60 a day, the Highest volume bid strategy, three ad sets. Two cold ad sets were built on job titles and employers. The warm one held video viewers, page engagers, an email list and site visitors who hadn’t registered. Every ad set used Maximize number of conversions with Complete registration as the conversion event, on 7 day click and 1 day view attribution.

Before launch we agreed the stop rule: $420 at day 7 with zero registrations means stop and take the signup form to the client instead of changing the ad structure. We wrote the same kind of line, while everyone was calm, when a jewelry brand’s ads filled carts and nobody paid.

We knew the signal was thin. Before launch, the pixel’s history showed CompleteRegistration firing about 8 times in 23 days, and our build notes said no ad set would leave the learning phase in two weeks. That was a known constraint. The plan was to judge registrations at a fixed spend.

Here’s how the week came in:

  • Day 7 read, through September 27: $379.21 spent, 90.3% of the line, zero registrations credited to any ad.
  • Morning of September 28: $407.05 lifetime, still zero.
  • The warm ad set held 75% to 86% of spend to date at every daily read. By the evening of September 27 it had reached 1,855 people at an average frequency of 5.3.

Zero in Ads Manager wasn’t zero signups

A zero on a dashboard fits three different stories: nobody signed up, the event is broken, or the event fires somewhere you didn’t expect. A counter isn’t a record, so on the evening of September 27 we opened the product’s admin panel.

It showed three customer registrations newer than our last read, taken the morning before launch. All three were created on September 23, and nobody signed up from September 24 through 27. One had verified its email. Two sat at pending verification.

Then we read the JavaScript the live site ships. Signup is two steps. The form creates the account and emails a six digit code. The account only turns active when the person types that code in, and that’s the only place CompleteRegistration fires.

The product’s email log filled in the rest. All three code emails went out on September 23, at 4:32 PM, 7:38 PM and 11:39 PM Pacific, each marked “success.” Only the 7:38 PM person entered the code, and that’s the one CompleteRegistration the pixel logged that day, in the 7 PM hour. As of the day 7 read, Meta hadn’t credited it to any ad. The log showed no reminder or resend to the other two through September 26, and “success” there only means the mail server accepted the message, not that it reached an inbox.

We can’t say the ads produced those three accounts. Nobody can, from this data. What we can say is that Ads Manager had no way to see two of them, and the product’s records did.

Why the last step of a two step signup starves the algorithm

Meta says an ad set leaves the learning phase once it can deliver stably, which “usually occurs after about 50 results in the week after the ad set’s last significant edit.” An ad set that’s unlikely to get there reads Learning limited, and Meta lists “an infrequent optimization event” among the causes.

Three ad sets need about 150 results between them in a week. The site had been producing 2 or 3 a week.

Firing the event after the code made that thin signal thinner. It fired for one of the three accounts created that week: the person who fetched the code from their inbox and typed it in. As far as the campaign’s goal was concerned, the two people who stalled at the code looked exactly like people who never signed up.

It affects audiences too. The warm ad set excluded a list built on CompleteRegistration, so anyone who stalls at the code is never excluded.

The budget split was the other symptom. Meta says Advantage+ campaign budget “might spend most of your budget on one ad set if that’s how we can get the overall best results.” It did, and on a goal that fired once in the campaign’s first week, that call rested on very little result data. Meanwhile the account’s opportunity score was 98 out of 100 at the day one read, and the same Meta page says that score “does not reflect your actual or future performance.”

Which conversion event should you choose for a signup campaign

With Leads as the objective and Website as the conversion location, Meta offers ten conversion events: Complete registration, Contact, Find location, Lead, Schedule, Search, Start trial, Submit application, Subscribe and View content. Custom conversions can be performance goals too.

Here’s the rule we’d use:

  1. Start from the result you actually want and walk backward. For a free signup, that’s a verified account.
  2. Stop at the last step that happens on your site before the person has to leave it. In a two step signup, that’s the form submit. The code means a trip to the inbox.
  3. Check the volume. If that step can’t realistically reach about 50 per ad set per week at your budget, Meta’s advice is to consider “an optimization event that occurs more frequently. For example, move from purchases to add to cart.” Combining ad sets is first on the same list of fixes.
  4. Don’t overshoot. Before this campaign, the same client ran a weekend of video ads optimized for landing page views. They bought 1,709 arrivals at about 7 cents each, and in Analytics the homepage sessions from that weekend averaged about two seconds of engagement. An event that’s easy to trigger by accident is easy to buy by accident.

Optimize on the step closest to that result that fires often enough to learn from. Report on the result itself.

Be honest about the math, too. Moving the event to the form would have given Meta three events that first week instead of one, assuming the pixel caught all three. Three is still nowhere near 50. When no honest event can feed the learning phase at your budget, the event stops being the fix and the flow becomes it. That’s what the spend line was for.

How to set up the conversion event in Meta Ads

If you control the site’s code, the change is two calls:

  • Fire fbq('track', 'CompleteRegistration') when the server confirms the account exists, the moment the confirmation screen appears. Not on the button click, which can still fail validation.
  • Fire a custom event such as fbq('trackCustom', 'EmailVerified') when the code is accepted. Meta’s conversion tracking docs cap custom event names at 50 characters.

The ad set’s settings don’t change, and the event finally matches Meta’s definition. If you’d rather not change what an existing event means, fire a new custom event at the form, build a custom conversion on it and select that. Meta counts “Any change to optimization event” as a significant edit that sends the ad set back into learning, so make that switch once.

No developer? If the confirmation step has its own URL, a custom conversion with a URL rule can log it without new code. Meta’s docs tell you to make sure you can define the action “exclusively based on unique strings in your website URLs.” If the page doesn’t change address, the rule has nothing to match.

Before the ads depend on it, submit a real test signup and confirm the event arrives.

What we’d change, and what hasn’t been tested

None of this has run yet. In order, we’d:

  1. Move CompleteRegistration to the form and add the custom event at the code.
  2. Send a reminder to accounts sitting at pending verification. The log showed none went to either person who stalled.
  3. Report verified accounts from the admin panel, and watch the share of new accounts that verify. If it drops once the ads optimize on form submits, the ads are finding form fillers.
  4. Keep the spend line. It pointed us at the signup flow instead of another rebuild of the ads.

It’s how we run paid advertising: agree what counts before the money moves, then check the ad account against the product’s records.

What this doesn’t mean

It doesn’t mean email verification is bad. A code step proves the person owns the inbox, so mistyped and fake addresses never become active accounts. Keep it. Just don’t make the ad account wait for it.

It doesn’t mean these ads can’t produce signups. We don’t know yet, because this campaign never optimized on an event that fired often enough to learn from.

And two of three isn’t a rate. It’s three people on one day, enough to find where the event fires and nowhere near enough to put a number on email verification drop off.

FAQ

What’s the Complete Registration event on Facebook?

It’s one of Meta’s standard pixel events. Meta’s reference defines it as “When a registration form is completed,” with the example “A person submits a completed subscription or signup form.” You fire it with fbq('track', 'CompleteRegistration'), and it accepts optional currency and value parameters.

Should Complete Registration fire at sign up or after email verification?

At sign up, when the form is accepted and the account is created, which matches Meta’s own definition. If it fires after an emailed code, anyone who doesn’t enter the code never fires the event, so Meta can’t count them or learn from them. Track verification as a separate custom event and report verified accounts from your own records.

Which conversion event should I choose in Meta Ads?

Choose the step closest to revenue that can realistically reach about 50 results per ad set in the week after launch or a significant edit, roughly what Meta says an ad set needs to exit the learning phase. If your final step can’t get there, Meta suggests an event that occurs more frequently, such as add to cart instead of purchase. Just don’t go so far up the funnel that people trigger it by accident.

Why do my Facebook ads get clicks but no conversions?

Check the measurement before you change the ads. Find where in the flow your conversion event fires, then compare Ads Manager with your own records. In our case Ads Manager showed zero registrations in a week when the product created three new accounts, two of which never reached the step where the event fired.

How many conversions does Meta need to exit the learning phase?

Meta says ad sets usually exit learning “after about 50 results in the week after the ad set’s last significant edit.” An ad set that’s unlikely to get there shows Learning limited in the Delivery column. Changing the optimization event is a significant edit, so it restarts the count.

Optimize on the form. Report on the account.

The campaign did what it was told: find people who’d finish a two step signup, on an event that fired once all week. It’s the same lesson as the Google Ads account that counted 444 conversions and no signups. A platform chases exactly the moment you count, so put that moment where the decision happens. Then count the verified user in your own records.

Want a second opinion on a campaign that isn’t producing signups? Book a 15-minute call. No deck, no fluff. Strategy first. Tactics second. The work works.

Reliable PR & Marketing is a strategy-first marketing agency in Bakersfield, California. We run integrated SEO, PR, web, and content for founder-led companies across Kern County and nationwide. Strategy first. Execution always.

Like what you read?

Let's make it
work for you.

Get a free 15-min strategy call. No pitch deck. No sales script. Just useful.

Book free 15-min call →