Amazon Advertising Event Tracking | OpsBlu Docs

Amazon Advertising Event Tracking

Conversion event taxonomy, parameter requirements, and implementation patterns for Amazon Ads pixels.

Event Model

Amazon Advertising uses an event-based tracking model where specific user actions trigger conversion events. Events are categorized by funnel stage and business objective, enabling optimization algorithms to prioritize high-value conversions.

Event Types

  • Page View Events: Track user navigation and content engagement
  • Product Events: Capture product discovery and consideration behaviors
  • Shopping Cart Events: Monitor cart interactions and checkout progression
  • Conversion Events: Record completed transactions and lead submissions
  • Custom Events: Track business-specific actions aligned with campaign goals

Core Events to Ship

Essential E-commerce Events

Product View

Fires when user views a product detail page.

aw('event', 'view_product', {
  product_id: 'ASIN-12345',
  product_name: 'Example Product',
  category: 'Electronics',
  price: 29.99,
  currency: 'USD'
});

When to Fire: Product detail page load

Required Parameters:

  • product_id: Amazon ASIN or SKU
  • price: Product price
  • currency: ISO 4217 currency code

Add to Cart

Triggers when user adds item to shopping cart.

aw('event', 'add_to_cart', {
  product_id: 'ASIN-12345',
  product_name: 'Example Product',
  quantity: 1,
  price: 29.99,
  currency: 'USD'
});

When to Fire: "Add to Cart" button click

Required Parameters:

  • product_id: Unique product identifier
  • quantity: Number of items added
  • price: Unit price (not total)

Begin Checkout

Tracks checkout initiation.

aw('event', 'begin_checkout', {
  cart_value: 89.97,
  currency: 'USD',
  num_items: 3
});

When to Fire: First step of checkout process

Required Parameters:

  • cart_value: Total cart value before shipping/tax
  • num_items: Total quantity of items

Purchase

Captures completed transactions.

aw('conversion', {
  transactionId: 'ORDER-67890',
  value: 94.97,
  currency: 'USD',
  products: [
    {
      id: 'ASIN-12345',
      name: 'Example Product',
      quantity: 2,
      price: 29.99
    },
    {
      id: 'ASIN-67890',
      name: 'Another Product',
      quantity: 1,
      price: 34.99
    }
  ]
});

When to Fire: Order confirmation page load

Required Parameters:

  • transactionId: Unique order identifier (for deduplication)
  • value: Total order value including tax/shipping
  • currency: Transaction currency
  • products: Array of purchased items with details

Lead Generation Events

Lead Submission

For non-transactional conversion goals.

aw('conversion', {
  conversionType: 'lead',
  value: 25.00, // Estimated lead value
  currency: 'USD',
  leadType: 'contact_form'
});

When to Fire: Form submission confirmation

Use Cases:

  • Contact form submissions
  • Quote requests
  • Newsletter signups
  • Webinar registrations

Account Creation

Tracks new user registrations.

aw('event', 'sign_up', {
  method: 'email', // or 'social', 'phone'
  value: 10.00 // Optional lifetime value estimate
});

When to Fire: Account creation success

Engagement Events

Captures on-site search behavior.

aw('event', 'search', {
  search_term: 'wireless headphones',
  num_results: 24
});

When to Fire: Search results page load

Video Interaction

Tracks video engagement for content-heavy sites.

aw('event', 'video_complete', {
  video_id: 'product-demo-123',
  video_duration: 120, // seconds
  completion_rate: 100 // percentage
});

When to Fire: Video playback milestones (25%, 50%, 75%, 100%)

Payload Rules

Required Fields for Conversion Events

Every conversion event must include:

{
  transactionId: 'UNIQUE-ID',      // Required: Prevents duplicate tracking
  value: 49.99,                     // Required: Numeric value
  currency: 'USD',                  // Required: ISO 4217 code
  timestamp: 1703419800             // Optional but recommended: Unix timestamp
}

Product Array Schema

When tracking product-level data:

products: [
  {
    id: 'SKU-123',                  // Required: Must match Amazon catalog
    name: 'Product Name',           // Required: For reporting
    category: 'Category/Subcategory', // Recommended: For segmentation
    price: 29.99,                   // Required: Unit price
    quantity: 1,                    // Required: Number of units
    brand: 'Brand Name',            // Optional: For brand reporting
    variant: 'Color: Blue'          // Optional: For variant tracking
  }
]

Dynamic Parameter Mapping

Use data layer or DOM scraping to populate parameters dynamically:

aw('conversion', {
  transactionId: dataLayer.orderId,
  value: dataLayer.orderTotal,
  currency: dataLayer.currency,
  products: dataLayer.products.map(function(product) {
    return {
      id: product.sku,
      name: product.name,
      price: product.price,
      quantity: product.quantity
    };
  })
});

Naming & Conventions

Event Naming Standards

  • Use lowercase snake_case for custom event names (e.g., download_guide, request_demo)
  • Match Amazon's standard event names when possible (purchase, add_to_cart, sign_up)
  • Avoid spaces, special characters, or overly long names
  • Document all custom events in tracking plan

Parameter Naming

  • Follow Amazon's reserved parameter names for standard fields
  • Use descriptive names for custom parameters (e.g., lead_source not ls)
  • Maintain consistency across all events (e.g., always use product_id, not mixing with productId or sku)

Value Formatting

  • Numeric values: Pass as numbers, not strings (value: 49.99 not value: "49.99")
  • Currency codes: Always uppercase ISO 4217 (USD, EUR, GBP)
  • Dates/Times: Use Unix timestamps or ISO 8601 format
  • Product IDs: Match format used in Amazon product catalog exactly

QA Notes

Testing Conversion Events

Browser Developer Tools

  1. Open DevTools Network tab and filter for "amazon-adsystem"
  2. Trigger conversion action (e.g., complete purchase)
  3. Verify pixel request fires with correct parameters
  4. Check response status (200 = success)
  5. Inspect payload to confirm all required fields present

Example network request verification:

Request URL: https://s.amazon-adsystem.com/iu3/conversion/12345.js
Status: 200 OK
Query Parameters:
  - tid: ORDER-67890
  - cv: 94.97
  - cc: USD
  - pr: [{"id":"ASIN-12345","qty":2,"pr":29.99}]

Amazon Ads Console Validation

  1. Navigate to Amazon Ads > Measurement & Reporting > Conversion Tracking
  2. Check "Recent Conversions" table (updates within 12-24 hours)
  3. Verify conversion count matches test transactions
  4. Review conversion value accuracy
  5. Check that product IDs match catalog entries

Tag Manager Preview Mode

For GTM implementations:

  1. Enable Preview Mode in GTM workspace
  2. Navigate site and trigger conversion events
  3. Verify tag fires in Preview pane
  4. Check "Variables" tab for correct parameter values
  5. Confirm no errors in "Errors" tab

Attribution Validation

When using Amazon Attribution tags:

  1. Append attribution parameters to test URLs (e.g., ?tag=test-campaign_123)
  2. Click through and complete conversion
  3. Wait 12-24 hours for attribution reporting
  4. Check Amazon Attribution dashboard for attributed conversion
  5. Verify campaign parameters captured correctly

Cross-Device Testing

  • Test conversion tracking on desktop, tablet, mobile web
  • Validate mobile app SDK event tracking
  • Verify events fire correctly on iOS and Android
  • Check that device-specific parameters populate (OS version, app version)

Edge Case Testing

  • Repeat purchases: Verify different transaction IDs for deduplication
  • Multiple currencies: Test conversion tracking with various currency codes
  • High-value orders: Validate large transaction values don't cause overflow errors
  • Product arrays: Test with 1, 5, 20+ products in single transaction
  • Special characters: Test product names with quotes, ampersands, unicode

Event Enrichment

User Context

Enhance events with user attributes when available:

aw('conversion', {
  transactionId: 'ORDER-123',
  value: 49.99,
  currency: 'USD',
  // User context
  userId: 'USER-456',              // For logged-in users
  customerType: 'returning',       // New vs. returning
  lifetimeValue: 249.95,           // Total customer value
  loyaltyTier: 'gold'              // Customer segment
});

Campaign Context

Include campaign parameters for attribution:

aw('conversion', {
  transactionId: 'ORDER-123',
  value: 49.99,
  currency: 'USD',
  // Campaign context from URL parameters
  campaignSource: getUrlParam('utm_source'),
  campaignMedium: getUrlParam('utm_medium'),
  campaignName: getUrlParam('utm_campaign')
});

Session Context

Capture session-level information:

aw('conversion', {
  transactionId: 'ORDER-123',
  value: 49.99,
  currency: 'USD',
  // Session context
  sessionDuration: 420,            // Seconds on site
  pageViews: 8,                    // Pages viewed in session
  referrer: document.referrer      // Entry point
});

Performance Optimization

Event Batching

For high-frequency events, batch to reduce network overhead:

var eventQueue = [];

function queueEvent(eventData) {
  eventQueue.push(eventData);

  if (eventQueue.length >= 5) {
    flushEvents();
  }
}

function flushEvents() {
  // Send batched events
  aw('events', eventQueue);
  eventQueue = [];
}

Conditional Event Firing

Only fire events when necessary:

// Only track product view if user spends >3 seconds on page
var viewStartTime = Date.now();

window.addEventListener('beforeunload', function() {
  var timeOnPage = (Date.now() - viewStartTime) / 1000;

  if (timeOnPage > 3) {
    aw('event', 'view_product', productData);
  }
});

Deferred Event Tracking

For non-critical events, defer until page is idle:

if ('requestIdleCallback' in window) {
  requestIdleCallback(function() {
    aw('event', 'page_engaged', engagementData);
  });
} else {
  setTimeout(function() {
    aw('event', 'page_engaged', engagementData);
  }, 1000);
}