Standard events are actions Meta predefines, such as Lead or Schedule, that your Meta Pixel and Conversions API report by name. Custom conversions are rules you create in Events Manager to filter events Meta already receives, by URL or parameter. For lead generation, optimize for the standard Lead event and use custom conversions to isolate a subset of leads.
Meta’s conversion tracking docs describe three ways to track conversions with the Pixel: standard events, custom events and custom conversions. Side by side:
| Standard event | Custom event | Custom conversion | |
|---|---|---|---|
| What it is | an action Meta defines | an action you name | a rule on events Meta already receives |
| How you create it | fbq('track', 'Lead') in the browser, event_name on the server | fbq('trackCustom', 'QuoteStart'); names up to 50 characters | in Events Manager, without code |
| As an optimization goal | directly | through a custom conversion built on it, with a standard event category | yes, as a performance goal |
| Where it lives | your dataset (the Pixel) | your dataset | the ad account or business portfolio that created it; 100 per ad account |
| Changing it later | change the code | change the code | name, description and value only; the rules are fixed |
| From the server | same name through the Conversions API | same name through the Conversions API | nothing to send: it filters events that arrive |
What are Meta’s standard events?
Meta calls standard events actions “predefined by Meta for logging conversions, optimizing for conversions, and building audiences”. There are 17 of them, plus the PageView the Pixel base code sends every time it loads. Meta’s Pixel reference describes each one. These are the candidates for a lead gen form:
| Standard event | How Meta describes it | Use it for |
|---|---|---|
| Lead | a submission of information “with the understanding that they may be contacted at a later date by your business” | quote, callback, consultation and contact forms |
| CompleteRegistration | “When a registration form is completed” | webinar or event sign-ups, account creation |
| Schedule | “When a person books an appointment to visit one of your locations” | a booking made inside the form flow |
| SubmitApplication | “When a person applies for a product, service, or program you offer” | applications for a course, a job or a credit product |
| Contact | “When a person initiates contact with your business via telephone, SMS, email, chat, etc.” | call or chat clicks, when contact is the conversion |
| StartTrial | “When a person starts a free trial of a product or service you offer” | SaaS trials |
The other eleven are mostly commerce and site actions: AddPaymentInfo, AddToCart, AddToWishlist, CustomizeProduct, Donate, FindLocation, InitiateCheckout, Purchase, Search, Subscribe and ViewContent. ViewContent records a visit to a URL you care about, such as a landing page, without saying what the visitor did there. Fine for audiences, useless as a lead.
Pick one event per form and spell it exactly as Meta does, in the browser and on the server. Meta Pixel setup covers firing it after a successful submission rather than on a click.
What are Meta custom conversions?
A custom conversion is a rule. In Meta’s words, custom conversions let you create rules for events, so you can measure more specific actions and use them as performance goals. They aren’t available for app events, and you create them in Events Manager without touching the site’s code. They come in two kinds that behave very differently.
URL rules on All URL traffic. These are built from PageView events, “which are automatically included in your Meta Pixel base code”. You tell Meta which URLs mean a conversion, for example a thank-you URL containing /thank-you, and choose a standard event category for optimization. Meta pitches this as a way to log standard events without code.
Rules on an event you already send. You pick a standard or custom event and filter it by URL or by parameters. Meta’s example takes Purchase and adds two rules, a URL containing “mens” and a value over $50, to count men’s clothing purchases above $50. In lead gen the same move turns Lead into “Lead from the boiler service landing page” or “Lead where the project type is renovation”.
Inside one parameter rule, several values work as OR; separate rules work as AND (Meta). If the parameter you want to filter on isn’t there, Meta’s advice is to update your Pixel or Conversions API setup so the event carries it.
How to create a custom conversion
- In Events Manager, open Custom conversions and click Create custom conversion.
- Name it and pick the data source, your Pixel.
- Choose the conversion event: a standard event, a custom event or All URL traffic.
- For All URL traffic or a custom event, choose a standard event for optimization. For a lead form, that’s Lead.
- Add rules on the URL or on event parameters.
- Leave the value empty unless your events carry no value of their own.
- Click Create, then trigger it once by visiting the URL it refers to. Its status should turn Active.
On URL rules, Meta’s best practices are blunt: URL equals only counts an exact match, so a visit with UTM parameters, http instead of https, or an extra ”/” at the end isn’t counted. Meta suggests URL contains, with the shortest part of the URL that identifies the step.
Example: the thank-you URL is https://quote.example.com/boiler/thank-you. A URL equals rule misses https://quote.example.com/boiler/thank-you?utm_source=facebook; a URL contains rule on /boiler/thank-you catches both.
Custom conversion limits Meta documents
| Limit | What Meta says | What to do |
|---|---|---|
| 100 per ad account | the maximum; delete unwanted ones to create new ones | name them by offer and landing page so dead ones are easy to spot |
| Rules are fixed | you can edit the name, description and conversion value, not the rules | a wrong rule means a new custom conversion |
| Deleting one in use | ad sets optimized for it keep delivering but may perform poorly | switch the ad set’s optimization first |
| Two years without data | archived automatically; recreate it with the same rules | nothing, unless you need it again |
| Sensitive information | since September 2, 2025, custom conversions suggesting health conditions or financial status are flagged and can’t be used in new campaigns | keep conditions, credit scores and income out of names, URLs and rules |
| Published campaigns | Meta’s guidance on flagged custom conversions notes that once a campaign is published, you can’t remove or select a different custom conversion | duplicate the campaign, which is Meta’s fix for a flagged one |
| API reporting | the Insights API returns no unique action counts and no product ID breakdowns for custom conversions | count unique leads in your own data |
| Sharing | a partner can use a shared custom conversion only with access to its dataset | keep the dataset in the client’s portfolio and share access |
One limit has disappeared. Older guides warn about prioritizing 8 conversion events per domain for Aggregated Event Measurement; Meta’s AEM article says you no longer need to. What changed, and what domain verification still does, is in the Facebook domain verification guide.
Lead event vs custom conversion: what should a lead gen campaign optimize for?
Optimize for the standard Lead event, fired once per real submission and sent from both the Pixel and the Conversions API with a shared event_id. A thank-you URL rule is the usual alternative, and it loses on almost every count:
| Lead standard event | Custom conversion on a thank-you URL | |
|---|---|---|
| Fires on | what you decide: a submission your server accepted | every load of that URL, since the base code sends PageView each time the Pixel loads |
| Server copy | yes, through the Conversions API, deduplicated by event_id | none: All URL traffic is built from the Pixel’s PageView |
| Changing it | edit your code | create a new custom conversion |
| Ad account cap | doesn’t apply | one of the 100 allowed per ad account |
| Breaks when | your code breaks | the URL changes, the Pixel doesn’t load, or a URL equals rule meets a UTM parameter |
The server copy matters most. Meta says All URL traffic is determined using PageView events from the base code, so a visitor whose browser blocks the Pixel never produces the PageView the rule needs. A Lead sent by your server doesn’t depend on the browser at all; the Conversions API setup guide walks through the payload.
DropCPL sends the standard Lead event to Meta through the Conversions API, with an event_id for deduplication plus fbc and fbp. Your CPL per creative and per landing page is then computed from the leads your forms actually received, not from Meta’s modelled count. Start free →
Custom conversions still earn their place in a few situations:
- You can’t touch the code yet. A URL contains rule on the thank-you URL, with Lead as the standard event category, beats optimizing for traffic. Treat it as a stopgap.
- You need a subset of leads. Several offers or forms share one dataset and an ad set should optimize for one of them. Build the custom conversion on the Lead event with a URL or parameter rule, not on All URL traffic.
- You’re sharing with a partner. Meta lets you share individual custom conversions instead of the whole data source.
Mind the volume. Every rule shrinks the count of events the delivery system learns from, and Meta’s best practices say to use the minimum number of rules, because fewer rules mean a larger audience and more conversions. Meta recommends an optimization event that happens about 50 times per week at a minimum. Example: an ad set brings 120 Leads a week, and 30 of them ask for a full renovation. Optimized for “Lead where project type is renovation”, it has 30 events a week to learn from, below Meta’s 50; optimized for Lead, it has 120. Optimize on the subset only when it clears that bar, and report on it either way. The learning phase guide has the budget maths.
Keep event names identical in the Pixel and the Conversions API
A custom conversion filters whatever arrives under the event it’s built on, so that event has to carry the same name from both sources. Meta’s deduplication guide pairs a browser event with a server event only when the Pixel’s event matches the server’s event_name and the Pixel’s eventID matches the server’s event_id, sent to the same Pixel within 48 hours. The server’s event_name accepts any standard or custom event name, so nothing but your own discipline prevents a mismatch.
| Browser (Pixel) | Server (Conversions API) | What Meta sees |
|---|---|---|
Lead, eventID lead_8c1f | Lead, event_id lead_8c1f | one Lead |
Lead | CompleteRegistration | two different events for one submission; an ad set optimized for Lead only sees the browser copy |
trackCustom('QuoteRequest') | quote_request | two custom events that never pair |
Lead without an eventID | Lead with an event_id | no ID to pair on; Meta’s fallback on fbp or external_id generally works only when the browser event arrives first |
Rules that keep the names straight:
- Define each event name once, and have the landing page and the server read it from the same place.
- Prefer a standard event to a custom one. A custom event needs a custom conversion and a standard event category before it can be a goal.
- Name custom conversions after the funnel step, such as “Lead: boiler service”, never after a condition or a credit score.
- After any change, compare the Lead count in Events Manager with the submissions your forms received.
The two counts won’t match exactly, and real CPL vs platform CPL explains why; Meta Pixel and CAPI deduplication shows how to read the Event Deduplication tab when the gap looks wrong.