This guide covers how to configure and use all available analytics pixels on the Web2Wave platform, including event mappings, data transmission, and testing recommendations.
📊 Analytics Pixels Integration Guide
This guide covers how to configure and use all available analytics pixels on the Web2Wave platform, including event mappings, data transmission, and testing recommendations.
🎯 Available Analytics Pixels
The platform supports the following analytics and advertising pixels:
- Facebook Pixel (Meta Pixel) - For Facebook/Instagram advertising
- TikTok Pixel - For TikTok advertising campaigns
- Snapchat Pixel - For Snapchat advertising
- Pinterest Tag - For Pinterest advertising
- AppLovin AXON - For mobile advertising attribution
- Google Analytics & Google Ads - For web analytics and Google advertising
🔧 How to Add Pixels to the Platform
General Setup Process
- Navigate to Project Settings → Analytics Tab
- Enable the desired pixel by checking the checkbox
- Configure required fields (Pixel ID, Access Tokens, etc.)
- Test configuration using the "Check token" buttons where available
- Save settings - The pixel will automatically load on your pages
Configuration Fields by Platform
| Platform | Required Fields | Optional Fields | Server Events |
|---|---|---|---|
| • Pixel ID • Access Token | • Test Event Code • Server Events Only | ✅ Full Support | |
| TikTok | • Pixel ID • Access Token | • Server Events Only | ✅ Full Support |
| Snapchat | • Pixel ID | None | ❌ Browser Only |
| • Tag ID | None | ❌ Browser Only | |
| AppLovin | • Event Key | None | ❌ Browser Only |
| • Analytics ID • Tag Manager ID | • AdWords Tag ID | ✅ Full Support |
Note: Snapchat and Pinterest currently support browser tracking only. Server-side event fields are commented out in the current implementation.
📈 Event Mappings by Platform
Facebook Pixel Events
| Internal Event | Facebook Event | Event Type |
|---|---|---|
Purchase | Purchase | Standard |
Subscribe | Subscribe | Standard |
InitiateCheckout | InitiateCheckout | Standard |
CompleteRegistration | CompleteRegistration | Standard |
AddPaymentInfo | AddPaymentInfo | Standard |
StartTrial | StartTrial | Standard |
PageView | ViewContent | Standard |
Paywall Prices visible | ViewContent | Standard |
Paywall click price | ViewContent | Standard |
| Other events | Custom Events | Custom |
Special Features:
- ✅ Enhanced matching with hashed email and user_id (SHA-256)
- ✅ Event deduplication using
eventID - ✅ Facebook Click ID (
fbclid) and Browser ID (fbp) tracking - ✅ Automatic cookie management (
_fbc,_fbp)
TikTok Pixel Events
| Internal Event | TikTok Event | Notes |
|---|---|---|
Purchase | Purchase | With transaction data |
Subscribe | Subscribe | With subscription data |
InitiateCheckout | InitiateCheckout | With cart data |
CompleteRegistration | CompleteRegistration | User signup |
AddPaymentInfo | AddPaymentInfo | Payment info added |
StartTrial | StartTrial | Trial started |
PageView | ViewContent | Page view |
| All events | Forwarded | All events sent |
Special Features:
- ✅ Enhanced matching with email and external_id
- ✅ TikTok Click ID (
ttclid) tracking - ✅ Automatic user identification
- ✅ Full event forwarding with currency/value data
Snapchat Pixel Events
| Internal Event | Snapchat Event | Notes |
|---|---|---|
Purchase | PURCHASE | With price/currency |
Subscribe | PURCHASE | Subscription purchase |
InitiateCheckout | START_CHECKOUT | Checkout initiated |
CompleteRegistration | SIGN_UP | User registration |
AddPaymentInfo | ADD_BILLING | Payment info |
StartTrial | PURCHASE | Trial signup |
PageView | PAGE_VIEW | Page view |
Paywall Prices visible | VIEW_CONTENT | Content view |
AddToCart | ADD_TO_CART | Cart addition |
Search | SEARCH | Search performed |
Special Features:
- ✅ Client deduplication ID (
client_dedup_id) prevents duplicate events - ✅ Snapchat Click ID (
sccid,ScCid) tracking - ✅ Enhanced user matching with email
- ✅ Only sends mapped standard events (filters irrelevant events)
Pinterest Tag Events
| Internal Event | Pinterest Event | Notes |
|---|---|---|
Purchase | checkout | With transaction data |
Subscribe | signup | User signup |
InitiateCheckout | addtocart | Checkout process |
CompleteRegistration | signup | User registration |
AddPaymentInfo | addtocart | Payment process |
StartTrial | checkout | Trial conversion |
PageView | pagevisit | Page view |
Paywall Prices visible | viewcategory | Category view |
AddToCart | addtocart | Cart addition |
Search | search | Search performed |
Special Features:
- ✅ Enhanced match with email and external_id
- ✅ Pinterest Click ID (
pinclid) tracking - ✅ Automatic email hashing for privacy
- ✅ Cross-device checkout tracking
AppLovin AXON Events
| Internal Event | AXON Event | Category |
|---|---|---|
Purchase | purchase | Required |
Subscribe | purchase | Required |
InitiateCheckout | begin_checkout | Required |
CompleteRegistration | sign_up | Recommended |
AddPaymentInfo | add_payment_info | Recommended |
PageView | page_view | Required |
Paywall Prices visible | view_item | Required |
AddToCart | add_to_cart | Required |
Search | search | Recommended |
Special Features:
- ✅ Rich ecommerce data with items array
- ✅ Product categorization (
item_category_id: 317) - ✅ Automatic additional events (
landon page_view,add_to_carton checkout) - ✅ Mobile-optimized attribution
Google Analytics Events
| Internal Event | Google Event | Notes |
|---|---|---|
Purchase | purchase | Enhanced ecommerce |
Subscribe | conversion | Goal conversion |
InitiateCheckout | begin_checkout | Ecommerce funnel |
CompleteRegistration | sign_up | User action |
AddPaymentInfo | add_payment_info | Checkout step |
PageView | page_view | Standard tracking |
Paywall Prices visible | view_item | Product view |
Special Features:
- ✅ Enhanced ecommerce tracking
- ✅ Multiple tag support (Analytics + Tag Manager + Ads)
- ✅ Data Layer and gtag support
- ✅ Custom send_to targeting
📊 Data Transmitted with Events
Common Data Sent to All Platforms
{
user_id: "unique_user_identifier",
email: "[email protected]", // when available
value: 29.99, // transaction value
currency: "USD",
subscription_id: "sub_123456",
price_id: "price_123",
external_price_id: "stripe_price_123",
quiz_id: "quiz_123",
paywall_id: "paywall_123",
app_version: "1.0.0"
}Platform-Specific Data
Facebook Pixel
{
eventID: "user123_Purchase", // Deduplication
fbc: "fb.1.1703123456000.abc123", // Facebook Click ID
fbp: "fb.1.1703123456000.xyz789", // Facebook Browser ID
external_id: "hashed_user_id", // SHA-256 hashed
em: "hashed_email" // SHA-256 hashed email
}TikTok Pixel
{
external_id: "user_123",
email: "[email protected]",
// Full event properties forwarded
}Snapchat Pixel
{
client_dedup_id: "user123_Purchase", // Deduplication
user_id: "user_123",
user_email: "[email protected]",
price: 29.99,
currency: "USD",
transaction_id: "subscription_123"
}Pinterest Tag
{
external_id: "user_123",
em: "[email protected]", // Auto-hashed
value: 29.99,
currency: "USD",
order_id: "subscription_123"
}AppLovin AXON
{
items: [{
item_id: "price_123",
item_name: "Subscription",
quantity: 1,
price: 29.99,
currency: "USD",
item_category_id: 317
}],
value: 29.99,
currency: "USD",
transaction_id: "subscription_123"
}Notes:
- The function is executed per system. Returning
falseblocks sending only for that specific system. - If the function throws an error, the event will be sent (errors are swallowed to avoid losing analytics).
- Keep logic simple and fast; the function runs for every event.
🔍 Testing Pixels with Browser Extensions
Facebook Pixel Helper
- Extension: Facebook Pixel Helper
- Features: Real-time event monitoring, error detection, parameter validation
- Testing: Shows all fired events, parameters, and errors
- What to Check: Event names, parameters, enhanced matching data
- Recommendation: ⭐⭐⭐⭐⭐ Essential for Facebook debugging
TikTok Pixel Helper
- Extension: TikTok Pixel Helper
- Features: Event tracking, parameter validation, data quality monitoring
- Testing: Monitors TikTok events and enhanced matching
- What to Check: Event firing, user identification, currency data
- Recommendation: ⭐⭐⭐⭐ Very useful for TikTok campaigns
Snapchat Pixel Helper
- Extension: Snap Pixel Helper
- Features: Event validation, test events, deduplication monitoring
- Testing: Real-time Snapchat event monitoring
- What to Check: Event mapping, deduplication IDs, user matching
- Recommendation: ⭐⭐⭐⭐ Important for Snapchat attribution
Pinterest Tag Helper
- Extension: Pinterest Tag Helper
- Features: Tag verification, event tracking, enhanced match validation
- Testing: Monitors Pinterest events and data quality
- What to Check: Event firing, enhanced match data, conversion tracking
- Recommendation: ⭐⭐⭐ Useful for Pinterest campaigns
Google Tag Assistant
- Extension: Google Tag Assistant
- Features: Google Analytics, GTM, Google Ads tracking validation
- Testing: Comprehensive Google ecosystem debugging
- What to Check: Enhanced ecommerce, goal tracking, conversion data
- Recommendation: ⭐⭐⭐⭐⭐ Essential for Google properties
Generic Analytics Debuggers
- Extension: Analytics Debugger
- Features: Multi-platform analytics debugging
- Testing: Supports multiple analytics platforms simultaneously
- What to Check: Cross-platform event consistency
- Recommendation: ⭐⭐⭐ Good for cross-platform testing
🛠️ Advanced Configuration
Server-Side Events
Currently supported platforms for server-side events:
- Facebook: ✅ Full server events support with Conversions API
- TikTok: ✅ Full server events support with Events API
- Google: ✅ Enhanced conversions and server-side tracking
- Snapchat: ❌ Browser-only (server configuration hidden)
- Pinterest: ❌ Browser-only (server configuration hidden)
- AppLovin: ❌ Browser-only (no server events available)
To Enable: Check "Use [Platform] for server events only" (where available)
Click ID Parameters
The platform automatically tracks and forwards click IDs:
| Platform | Click ID Parameter | Cookie Created | Purpose |
|---|---|---|---|
fbclid | _fbc | Attribution tracking | |
| TikTok | ttclid | _ttp | Campaign attribution |
| Snapchat | sccid, ScCid | None | Click tracking |
pinclid | Platform-managed | Attribution | |
gclid, gbraid | Platform-managed | Ads attribution |
Enhanced Matching Configuration
Platforms that support enhanced matching automatically use:
- Email addresses (hashed when required)
- User IDs as external identifiers
- Phone numbers (when available)
- First-party data for better attribution
Event filter function (per system)
You can define an optional JavaScript filter function for each analytics system. This function allows you to:
- Skip events by returning
false - Override event name by returning
{ event_name: "NewEventName" } - Override event properties by returning
{ event_properties: {...} } - Override both by returning
{ event_name: "...", event_properties: {...} }
How to configure
In the admin UI (Project → Analytics tab), each supported system includes a field named "Event filter function (JS)". Paste a function into that field. The function receives two parameters:
event_name- The name of the event being sentevent_properties- An object containing all event properties
Example Use Cases
1. Filtering Events by Name
Skip all events that start with "Step ":
function(event_name, event_properties) {
if (event_name.indexOf('Step ') === 0) {
return false; // Skip this event
}
}Skip events containing specific keywords:
function(event_name, event_properties) {
if (event_name.indexOf('Step') > -1 || event_name.indexOf('Scroll') > -1) {
return false;
}
}2. Modifying Event Properties
Multiply value by 3 for Meta/TikTok:
function(event_name, event_properties) {
if (event_properties.value) {
event_properties.value = event_properties.value * 3;
}
return { event_properties: event_properties };
}Adjust value based on price_id_internal:
function(event_name, event_properties) {
// Apply different multipliers based on internal price ID
if (event_properties.price_id_internal === 'premium') {
event_properties.value = event_properties.value * 1.5;
} else if (event_properties.price_id_internal === 'basic') {
event_properties.value = event_properties.value * 0.8;
}
return { event_properties: event_properties };
}3. Conditional Event Filtering
Skip events for specific user segments:
function(event_name, event_properties) {
// Skip events for users in test group
if (event_properties.user_segment === 'test' || event_properties.user_segment === 'beta') {
return false;
}
}Only send purchase events above a certain value:
function(event_name, event_properties) {
if (event_name === 'Purchase' || event_name === 'Subscribe') {
if (!event_properties.value || event_properties.value < 10) {
return false; // Skip low-value purchases
}
}
}4. Renaming Events
Rename events for better tracking:
function(event_name, event_properties) {
if (event_name === 'Paywall click price') {
return { event_name: 'ProductView' };
}
if (event_name === 'Paywall Prices visible') {
return { event_name: 'CatalogView' };
}
}5. Adding Custom Properties
Add custom properties to all events:
function(event_name, event_properties) {
// Add custom tracking properties
event_properties.custom_source = 'web2wave';
event_properties.timestamp = new Date().toISOString();
event_properties.platform_version = '2.0';
return { event_properties: event_properties };
}6. Currency Conversion
Convert values to a specific currency:
function(event_name, event_properties) {
const exchangeRates = {
'EUR': 0.85,
'GBP': 0.73,
'JPY': 110
};
if (event_properties.value && event_properties.currency === 'USD') {
const targetCurrency = 'EUR'; // Target currency
const rate = exchangeRates[targetCurrency];
if (rate) {
event_properties.value = event_properties.value * rate;
event_properties.currency = targetCurrency;
}
}
return { event_properties: event_properties };
}7. Complex Conditional Logic
Different rules for different event types:
function(event_name, event_properties) {
// For purchase events, ensure minimum value
if (event_name === 'Purchase' || event_name === 'Subscribe') {
if (event_properties.value < 5) {
return false; // Skip low-value conversions
}
// Add conversion source
event_properties.conversion_source = 'web';
}
// For page views, add viewport info
if (event_name === 'PageView') {
event_properties.viewport_width = window.innerWidth;
event_properties.viewport_height = window.innerHeight;
}
// Skip test events
if (event_properties.is_test === true) {
return false;
}
return { event_properties: event_properties };
}8. Filtering by Subscription Status
Only send events for active subscribers:
function(event_name, event_properties) {
// Skip events if user doesn't have active subscription
if (event_properties.subscription_status !== 'active' &&
event_properties.subscription_status !== 'trialing') {
return false;
}
}Important Notes
- Return
falseto skip sending the event to that specific system - Return an object with
event_nameand/orevent_propertiesto override values - Return nothing or
trueto send the event as-is - The function is executed per system - each analytics platform can have its own filter
- If the function throws an error, the event will be sent (errors are caught to prevent data loss)
- Keep logic simple and fast - the function runs for every event
- Don't modify the original
event_propertiesobject directly - create a copy or return a new object