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 name | Meta event | TikTok event | GA4 event | When to fire |
|---|---|---|---|---|
| Purchase | Purchase | CompletePayment | purchase | Order completion |
| Lead | Lead | SubmitForm | generate_lead | Lead form submit |
| ViewContent | ViewContent | ViewContent | view_item | Product detail page |
| AddToCart | AddToCart | AddToCart | add_to_cart | Item added to cart |
| InitiateCheckout | InitiateCheckout | InitiateCheckout | begin_checkout | Checkout page load |
| AddPaymentInfo | AddPaymentInfo | AddPaymentInfo | add_payment_info | Payment method entered |
| AddToWishlist | AddToWishlist | AddToWishlist | add_to_wishlist | Wishlist save |
| CompleteRegistration | CompleteRegistration | CompleteRegistration | sign_up | Account/email signup |
| Search | Search | Search | search | Search query submit |
| Subscribe | Subscribe | Subscribe | — | Newsletter / paid sub |
| Schedule | Schedule | — | — | Appointment booking |
| Contact | Contact | Contact | — | Contact form / chat open |
| StartTrial | StartTrial | — | — | Trial sign-up |
| AppointmentRequest | Lead (custom) | Lead | generate_lead | Healthcare/services booking |
| WhatsAppClick | Custom | ClickButton | — | WhatsApp button click |
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.
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).
pbq("track", "Lead", {
value: 0, // optional estimated value
currency: "USD",
content_name: "Hair Transplant Consultation",
email: "[email protected]",
phone: "+905321234567",
firstName: "Jane",
lastName: "Doe",
});<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.
pbq("track", "ViewContent", {
content_ids: ["SKU-42"],
content_name: "Wireless Headphones",
content_type: "product",
content_category: "Electronics",
value: 99.99,
currency: "USD",
});AddToCart
pbq("track", "AddToCart", {
content_ids: ["SKU-42"],
content_name: "Wireless Headphones",
content_type: "product",
value: 99.99,
currency: "USD",
num_items: 1,
});InitiateCheckout
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.
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:
| Param | Type | Used by | Notes |
|---|---|---|---|
value | number | All | Major units (29.99 not 2999) |
currency | string | All | ISO 4217 (USD, EUR, TRY) |
content_ids | string[] | Meta, TikTok | Product/SKU IDs |
content_name | string | Meta, TikTok | Product name |
content_type | string | Meta, TikTok | Usually 'product' or 'product_group' |
content_category | string | Meta, TikTok | Category path |
num_items | number | Meta, TikTok | Total quantity |
order_id | string | Meta, Google Ads | Dedup key — important for purchase |
search_string | string | Meta | For Search events |
email | string | All | SHA-256 hashed client-side |
phone | string | All | E.164 format, hashed |
firstName | string | Meta, TikTok | Hashed |
lastName | string | Meta, TikTok | Hashed |
eventId | string | All | Auto-generated UUID — used for browser/server dedup |
value + currency typically scores 4-5; one with full user_data + content details scores 8-9.Next
- dataLayer integration — push GA4 EE events, AdsPing forwards automatically.
- Custom events — events that don't fit the standard list.