Standard event names

Each platform uses slightly different vocabulary (Meta says Purchase, TikTok says CompletePayment, Google Ads has custom action IDs). AdsPing normalizes the differences — you fire one canonical name, AdsPing maps to each destination's preferred form.

Naming convention

AdsPing follows Meta's naming for standard events (PascalCase, no spaces). When you fire Purchase via pbq() or push purchase via dataLayer, the backend translates to each destination's preferred form:

  • Meta → keeps as Purchase (their canonical name)
  • TikTok → translates to CompletePayment (TikTok's canonical)
  • Google Ads → uses the Conversion Action ID configured on the pipeline (no name mapping; the action ID is what counts)
  • GA4 → translates to lowercase purchase (GA4's convention)

Full mapping table

AdsPing nameMeta eventTikTok eventGA4 eventWhen to fire
PurchasePurchaseCompletePaymentpurchaseOrder completion
LeadLeadSubmitFormgenerate_leadLead form submit
ViewContentViewContentViewContentview_itemProduct detail page
AddToCartAddToCartAddToCartadd_to_cartItem added to cart
InitiateCheckoutInitiateCheckoutInitiateCheckoutbegin_checkoutCheckout page load
AddPaymentInfoAddPaymentInfoAddPaymentInfoadd_payment_infoPayment method entered
AddToWishlistAddToWishlistAddToWishlistadd_to_wishlistWishlist save
CompleteRegistrationCompleteRegistrationCompleteRegistrationsign_upAccount/email signup
SearchSearchSearchsearchSearch query submit
SubscribeSubscribeSubscribeNewsletter / paid sub
ScheduleScheduleAppointment booking
ContactContactContactContact form / chat open
StartTrialStartTrialTrial sign-up
AppointmentRequestLead (custom)Leadgenerate_leadHealthcare/services booking
WhatsAppClickCustomClickButtonWhatsApp button click
Custom events still work everywhere. Fire any name you want via pbq("track", "FooBar"). Meta and TikTok forward unknown names as custom events; Google Ads forwards if a pipeline filter matches; GA4 logs as a custom event type.

Purchase

The most important event — order completion. Fire on the thank-you page or after the checkout webhook completes.

javascript
pbq("track", "Purchase", {
  value: 129.99,
  currency: "USD",
  content_ids: ["SKU-42", "SKU-99"],
  content_type: "product",
  num_items: 3,
  order_id: "ORD-12345",
  // Optional Advanced Matching:
  email: "[email protected]",
  phone: "+15551234567",
});

Required for proper attribution:

  • value — order total in major units (29.99, not 2999). Critical for ROAS reporting.
  • currency — ISO 4217 code (USD, TRY, EUR…). Must match the conversion action's currency in Google Ads.
  • order_id — used for dedup. Required if you also send purchase events from a Shopify webhook so the same order isn't counted twice.

Lead

Form submission for non-ecommerce sites (consultations, quote requests, demo bookings).

javascript
pbq("track", "Lead", {
  value: 0,                  // optional estimated value
  currency: "USD",
  content_name: "Hair Transplant Consultation",
  email: "[email protected]",
  phone: "+905321234567",
  firstName: "Jane",
  lastName: "Doe",
});
Auto-capture is on by default. pb.js captures<form> submits automatically and fires Lead with all email/phone/name fields detected. Don't fire Lead manually on the same form — disable auto-capture per-form with data-pb-no-capture attribute, or skip the manual call.

ViewContent

Product detail page load. Important for retargeting audiences.

javascript
pbq("track", "ViewContent", {
  content_ids: ["SKU-42"],
  content_name: "Wireless Headphones",
  content_type: "product",
  content_category: "Electronics",
  value: 99.99,
  currency: "USD",
});

AddToCart

javascript
pbq("track", "AddToCart", {
  content_ids: ["SKU-42"],
  content_name: "Wireless Headphones",
  content_type: "product",
  value: 99.99,
  currency: "USD",
  num_items: 1,
});

InitiateCheckout

javascript
pbq("track", "InitiateCheckout", {
  content_ids: ["SKU-42", "SKU-99"],
  content_type: "product",
  value: 129.99,
  currency: "USD",
  num_items: 3,
});

CompleteRegistration

Account creation, email signup, free tier sign-up.

javascript
pbq("track", "CompleteRegistration", {
  content_name: "Free trial",
  status: "completed",
  email: "[email protected]",
});

Common parameters

Across all events, these params are recognized + auto-mapped to each destination:

ParamTypeUsed byNotes
valuenumberAllMajor units (29.99 not 2999)
currencystringAllISO 4217 (USD, EUR, TRY)
content_idsstring[]Meta, TikTokProduct/SKU IDs
content_namestringMeta, TikTokProduct name
content_typestringMeta, TikTokUsually 'product' or 'product_group'
content_categorystringMeta, TikTokCategory path
num_itemsnumberMeta, TikTokTotal quantity
order_idstringMeta, Google AdsDedup key — important for purchase
search_stringstringMetaFor Search events
emailstringAllSHA-256 hashed client-side
phonestringAllE.164 format, hashed
firstNamestringMeta, TikTokHashed
lastNamestringMeta, TikTokHashed
eventIdstringAllAuto-generated UUID — used for browser/server dedup
The more params you provide, the higher match quality. Meta's Event Match Quality (EMQ) scoring is sensitive to completeness — a Purchase with just value + currency typically scores 4-5; one with full user_data + content details scores 8-9.

Next