Meta Custom Events With Standard Alternatives
Your Meta Pixel is using custom event names for actions that map cleanly to Meta standard events. A custom event called `add_cart` or `complete_signup` works for tracking, but Meta's optimizer treats it as an unknown signal. Switching to the standard `AddToCart` or `CompleteRegistration` unlocks better delivery and audience tooling.
Why It Matters
Standard events (PageView, ViewContent, AddToCart, InitiateCheckout, AddPaymentInfo, Purchase, Lead, CompleteRegistration, Subscribe, AddToWishlist) are not just naming conventions. Meta's ad delivery system has years of cross-account training data tied to each standard event. When a campaign optimizes for AddToCart, Meta knows what behaviour, placements, and audiences correlate with that action across every advertiser using the pixel. A custom event named `cart_add` carries none of that prior. The optimizer has to learn from your account alone, which lengthens the learning phase and often never reaches stable performance on smaller budgets. The second cost is audience building. Lookalike sources built from standard Purchase or Lead events get processed through Meta's value-tier modeling. Custom events do not. You also lose access to Advantage+ Catalog Ads (which require ViewContent and AddToCart with proper content IDs) and to a handful of Events Manager diagnostics that only grade against standard event names. The usual root cause is a developer who tagged the site from scratch using internal naming conventions, or a GTM template that exposed a free-form event name field and was filled with whatever felt natural.
How To Fix It
- Pull the list of flagged custom events from AdLint.
- For each one, map to the closest standard event from Meta's reference: AddToCart, ViewContent, InitiateCheckout, AddPaymentInfo, Purchase, Lead, CompleteRegistration, Subscribe. Match on intent, not on string similarity.
- Update the `fbq("trackCustom", "...")` calls to `fbq("track", "<StandardName>", { ... })`. Standard event names are case-sensitive.
- Keep the legacy custom event firing in parallel for two to four weeks so any campaigns or audiences built against it do not break.
- Migrate campaigns and audiences to the standard event, then retire the custom event once the standard event shows stable volume in Events Manager.
Example
// Before
fbq('trackCustom', 'add_cart', { value: 49.99 });
// After
fbq('track', 'AddToCart', { value: 49.99, currency: 'USD', content_ids: ['sku-123'] });This Meta Pixel is using custom event names for user actions that map directly to Meta standard events (such as AddToCart, ViewContent, Lead, CompleteRegistration, or Purchase). Per Meta's standard events reference, standard events are pre-trained signals that the delivery system uses for optimization, lookalike seeding, Advantage+ Catalog Ads eligibility, and Events Manager diagnostics. Custom events bypass all of this and force the optimizer to learn from a single account's history, which extends learning phases and limits scale. The typical root cause is internal naming conventions applied during initial pixel setup, or a free-form event name field in a GTM template. Fix: map each flagged custom event to its standard equivalent, switch the `fbq("track", ...)` call to the standard name with the correct parameters (`value`, `currency`, `content_ids`), run both in parallel for two to four weeks, then migrate campaigns and audiences onto the standard event. Source: developers.facebook.com/docs/meta-pixel/reference.
Drop this paragraph into your client deliverable. Sources back to the canonical platform documentation linked below.
References
Audit your own files for this check
AdLint runs this check (and 177 others) against your GTM, Google Ads, Meta, TikTok, LinkedIn, Pinterest, Twitter/X, and Snapchat exports. Everything stays in your browser. No uploads, no accounts.
Run a free audit