Snapchat Ads Integrations Overview
Snapchat Ads offers robust integration options to connect your marketing stack, eCommerce platform, and analytics tools. These integrations enable seamless tracking, campaign optimization, and data synchronization across your digital ecosystem.
Snap Pixel
What is Snap Pixel?
The Snap Pixel is a JavaScript snippet that tracks user behavior on your website after viewing or engaging with Snapchat ads. It powers conversion tracking, audience building, and campaign optimization.
Key Capabilities
| Feature | Description |
|---|---|
| Conversion Tracking | Track purchases, signups, and custom events |
| Audience Building | Create retargeting and lookalike audiences |
| Campaign Optimization | Optimize delivery to users likely to convert |
| Attribution | Measure ad impact with configurable windows |
| Advanced Matching | Improve match rates with hashed user data |
Basic Pixel Implementation
<!-- Snap Pixel Base Code -->
<script type='text/javascript'>
(function(e,t,n){if(e.snaptr)return;var a=e.snaptr=function()
{a.handleRequest?a.handleRequest.apply(a,arguments):a.queue.push(arguments)};
a.queue=[];var s='script';var r=t.createElement(s);r.async=!0;
r.src=n;var u=t.getElementsByTagName(s)[0];
u.parentNode.insertBefore(r,u);})(window,document,
'https://sc-static.net/scevent.min.js');
snaptr('init', 'YOUR_PIXEL_ID', {
'user_email': '__INSERT_USER_EMAIL__'
});
snaptr('track', 'PAGE_VIEW');
</script>
Advanced Matching
Enhance match quality by passing hashed user identifiers:
// Hash user data before sending
function hashData(data) {
// Use SHA256 hashing
return sha256(data.toLowerCase().trim());
}
// Initialize pixel with user data
snaptr('init', 'YOUR_PIXEL_ID', {
'user_email': hashData('user@example.com'),
'user_phone_number': hashData('+15551234567'),
'user_hashed_email': hashData('user@example.com'),
'user_hashed_phone_number': hashData('+15551234567')
});
// Track event
snaptr('track', 'PURCHASE', {
'price': 99.99,
'currency': 'USD',
'transaction_id': 'ORDER_12345'
});
Standard Events
// Page View
snaptr('track', 'PAGE_VIEW');
// View Content
snaptr('track', 'VIEW_CONTENT', {
'item_ids': ['SKU_123'],
'item_category': 'Electronics',
'price': 99.99,
'currency': 'USD'
});
// Add to Cart
snaptr('track', 'ADD_CART', {
'item_ids': ['SKU_123'],
'price': 99.99,
'currency': 'USD'
});
// Purchase
snaptr('track', 'PURCHASE', {
'item_ids': ['SKU_123', 'SKU_456'],
'price': 199.98,
'currency': 'USD',
'transaction_id': 'ORDER_12345',
'number_items': 2
});
// Sign Up
snaptr('track', 'SIGN_UP', {
'sign_up_method': 'email'
});
// Start Checkout
snaptr('track', 'START_CHECKOUT', {
'item_ids': ['SKU_123'],
'price': 99.99,
'currency': 'USD'
});
Snapchat Conversions API (CAPI)
What is Conversions API?
The Snapchat Conversions API enables server-side event tracking, providing more reliable measurement than browser-based pixels, especially with ad blockers and privacy restrictions.
Benefits
- Browser-independent tracking - Not affected by ad blockers
- Improved data accuracy - Direct server-to-Snapchat connection
- Better attribution - Server-side data less prone to loss
- Enhanced privacy - Control what data is shared
- Event deduplication - Combine with Pixel for complete coverage
Conversions API Implementation
Node.js Example
const axios = require('axios');
const crypto = require('crypto');
function hashSHA256(data) {
return crypto.createHash('sha256')
.update(data.toLowerCase().trim())
.digest('hex');
}
async function sendSnapEvent(eventData) {
const payload = {
data: [{
event_type: 'PURCHASE',
event_conversion_type: 'WEB',
event_tag: 'event_tag',
timestamp: Math.floor(Date.now()),
hashed_email: hashSHA256(eventData.email),
hashed_phone_number: hashSHA256(eventData.phone),
user_agent: eventData.userAgent,
hashed_ip_address: hashSHA256(eventData.ipAddress),
uuid_c1: eventData.snapClickId, // From _scid cookie
item_ids: eventData.items.map(item => item.sku),
price: eventData.total.toString(),
currency: eventData.currency,
transaction_id: eventData.orderId,
number_items: eventData.items.length.toString(),
page_url: eventData.pageUrl
}]
};
const response = await axios.post(
`https://tr.snapchat.com/v2/conversion`,
payload,
{
headers: {
'Authorization': `Bearer ${process.env.SNAP_ACCESS_TOKEN}`,
'Content-Type': 'application/json'
}
}
);
return response.data;
}
// Usage
await sendSnapEvent({
email: 'user@example.com',
phone: '+15551234567',
userAgent: req.headers['user-agent'],
ipAddress: req.ip,
snapClickId: req.cookies._scid,
items: [
{ sku: 'SKU_123', price: 99.99, quantity: 1 }
],
total: 99.99,
currency: 'USD',
orderId: 'ORDER_12345',
pageUrl: 'https://example.com/confirmation'
});
Python Example
import requests
import hashlib
import time
import os
def hash_sha256(data):
return hashlib.sha256(data.lower().strip().encode()).hexdigest()
def send_snap_event(event_data):
url = 'https://tr.snapchat.com/v2/conversion'
headers = {
'Authorization': f"Bearer {os.environ['SNAP_ACCESS_TOKEN']}",
'Content-Type': 'application/json'
}
payload = {
'data': [{
'event_type': 'PURCHASE',
'event_conversion_type': 'WEB',
'event_tag': 'event_tag',
'timestamp': int(time.time() * 1000),
'hashed_email': hash_sha256(event_data['email']),
'hashed_phone_number': hash_sha256(event_data['phone']),
'user_agent': event_data['user_agent'],
'hashed_ip_address': hash_sha256(event_data['ip_address']),
'uuid_c1': event_data.get('snap_click_id', ''),
'item_ids': [item['sku'] for item in event_data['items']],
'price': str(event_data['total']),
'currency': event_data['currency'],
'transaction_id': event_data['order_id'],
'number_items': str(len(event_data['items'])),
'page_url': event_data['page_url']
}]
}
response = requests.post(url, json=payload, headers=headers)
return response.json()
Event Deduplication
Prevent duplicate counting when using both Pixel and CAPI:
// Browser-side (Pixel)
const clientEventId = `ORDER_${orderId}_${Date.now()}`;
snaptr('track', 'PURCHASE', {
'price': 99.99,
'currency': 'USD',
'transaction_id': orderId,
'client_dedup_id': clientEventId // Deduplication key
});
// Server-side (CAPI) - Use same client_dedup_id
const payload = {
data: [{
client_dedup_id: clientEventId, // Matches browser event
event_type: 'PURCHASE',
// ... rest of event data
}]
};
Partner Integrations
Shopify Integration
Snapchat offers native integration with Shopify for seamless eCommerce tracking.
Setup Steps
Install Snapchat App
- Go to Shopify App Store
- Search "Snapchat Ads"
- Click "Add app"
Connect Accounts
- Log in with Snapchat Business account
- Select or create Snapchat Ads account
- Authorize connection
Configure Pixel
- Pixel automatically installs on all pages
- Standard events auto-configured:
- PAGE_VIEW (All pages)
- VIEW_CONTENT (Product pages)
- ADD_CART
- START_CHECKOUT
- PURCHASE
Sync Product Catalog
- Products sync to Snapchat Catalog
- Enable dynamic product ads
- Configure catalog settings
Benefits
- Automatic pixel installation - No coding required
- Product catalog sync - Real-time inventory updates
- Order tracking - Automatic purchase events
- Dynamic ads - Retarget with product catalogs
- Advanced matching - Email and phone hashing
Advanced Configuration
// Add custom Shopify tracking
// theme.liquid or custom script
// Track product views with detailed data
{% if template contains 'product' %}
<script>
snaptr('track', 'VIEW_CONTENT', {
'item_ids': ['{{ product.id }}'],
'item_category': '{{ product.type }}',
'price': {{ product.price | money_without_currency }},
'currency': '{{ shop.currency }}',
'description': '{{ product.title | escape }}'
});
</script>
{% endif %}
// Track purchases with complete order data
{% if template contains 'thank_you' %}
<script>
snaptr('track', 'PURCHASE', {
'item_ids': [{% for line_item in order.line_items %}'{{ line_item.product_id }}'{% unless forloop.last %},{% endunless %}{% endfor %}],
'price': {{ order.total_price | money_without_currency }},
'currency': '{{ order.currency }}',
'transaction_id': '{{ order.order_number }}',
'number_items': {{ order.item_count }}
});
</script>
{% endif %}
WooCommerce Integration
Plugin Installation
- Install "PixelYourSite" or "Snap Pixel for WooCommerce" plugin
- Enter Snap Pixel ID in settings
- Configure event tracking options
- Enable enhanced eCommerce tracking
Manual Implementation
// functions.php
// Add Snap Pixel to header
add_action('wp_head', 'add_snap_pixel');
function add_snap_pixel() {
?>
<script type='text/javascript'>
(function(e,t,n){if(e.snaptr)return;var a=e.snaptr=function()
{a.handleRequest?a.handleRequest.apply(a,arguments):a.queue.push(arguments)};
a.queue=[];var s='script';var r=t.createElement(s);r.async=!0;
r.src=n;var u=t.getElementsByTagName(s)[0];
u.parentNode.insertBefore(r,u);})(window,document,
'https://sc-static.net/scevent.min.js');
snaptr('init', '<?php echo get_option('snap_pixel_id'); ?>');
snaptr('track', 'PAGE_VIEW');
</script>
<?php
}
// Track purchase on order received page
add_action('woocommerce_thankyou', 'snap_track_purchase');
function snap_track_purchase($order_id) {
$order = wc_get_order($order_id);
$item_ids = array();
foreach ($order->get_items() as $item) {
$product = $item->get_product();
$item_ids[] = $product->get_sku() ?: $product->get_id();
}
?>
<script>
snaptr('track', 'PURCHASE', {
'item_ids': <?php echo json_encode($item_ids); ?>,
'price': <?php echo $order->get_total(); ?>,
'currency': '<?php echo $order->get_currency(); ?>',
'transaction_id': '<?php echo $order_id; ?>',
'number_items': <?php echo $order->get_item_count(); ?>
});
</script>
<?php
}
// Track add to cart
add_action('woocommerce_add_to_cart', 'snap_track_add_to_cart', 10, 6);
function snap_track_add_to_cart($cart_item_key, $product_id, $quantity, $variation_id, $variation, $cart_item_data) {
$product = wc_get_product($product_id);
?>
<script>
snaptr('track', 'ADD_CART', {
'item_ids': ['<?php echo $product->get_sku() ?: $product_id; ?>'],
'price': <?php echo $product->get_price(); ?>,
'currency': '<?php echo get_woocommerce_currency(); ?>'
});
</script>
<?php
}
BigCommerce Integration
Setup Process
Install Snapchat App
- BigCommerce App Marketplace
- Install "Snapchat for BigCommerce"
Configure Integration
- Connect Snapchat Ads account
- Authorize data sharing
- Map product attributes
Enable Features
- Auto-install pixel
- Sync product catalog
- Enable order tracking
Catalog Mapping
| BigCommerce Field | Snapchat Field |
|---|---|
| Product ID | item_id |
| Product Name | description |
| Category | item_category |
| Price | price |
| Image URL | image_link |
| Product URL | link |
Magento Integration
Extension Installation
- Download Snapchat Pixel extension
- Upload to Magento installation
- Enable module:
bin/magento module:enable Snapchat_Pixel - Configure in Admin > Stores > Configuration > Snapchat
Event Tracking Configuration
- PAGE_VIEW - All pages
- VIEW_CONTENT - Product pages
- ADD_CART - Cart additions
- START_CHECKOUT - Checkout start
- PURCHASE - Order success
Snapchat Marketing API
API Overview
The Snapchat Marketing API enables programmatic campaign management, reporting, and audience management.
Authentication
Access Token Generation
- Create Snapchat Business account
- Navigate to Business Manager > API Setup
- Create OAuth app and generate access token
- Store token securely (refresh tokens expire every 6 months)
// API authentication example
const axios = require('axios');
const snapAPI = axios.create({
baseURL: 'https://adsapi.snapchat.com/v1/',
headers: {
'Authorization': `Bearer ${process.env.SNAP_ACCESS_TOKEN}`,
'Content-Type': 'application/json'
}
});
Campaign Management
Create Campaign
async function createCampaign(adAccountId) {
const response = await snapAPI.post(`adaccounts/${adAccountId}/campaigns`, {
campaigns: [{
name: 'Q1 Product Launch',
ad_account_id: adAccountId,
status: 'ACTIVE',
objective: 'WEBSITE_CONVERSIONS',
start_time: '2025-01-01T00:00:00.000-00:00',
daily_budget_micro: 10000000000 // $10,000 in micro currency
}]
});
return response.data;
}
Fetch Campaign Performance
async function getCampaignStats(campaignId) {
const response = await snapAPI.get(`campaigns/${campaignId}/stats`, {
params: {
granularity: 'DAY',
start_time: '2025-01-01T00:00:00.000-00:00',
end_time: '2025-01-31T23:59:59.999-00:00',
fields: [
'impressions',
'swipes',
'spend',
'conversion_purchases',
'conversion_purchases_value'
].join(',')
}
});
return response.data;
}
Audience Management
Create Segment (Custom Audience)
async function createCustomAudience(adAccountId, userList) {
const response = await snapAPI.post(`adaccounts/${adAccountId}/segments`, {
segments: [{
name: 'Email List - Q1 2025',
ad_account_id: adAccountId,
source_type: 'FIRST_PARTY',
retention_in_days: 180,
description: 'Customer email list uploaded Q1 2025'
}]
});
const segmentId = response.data.segments[0].segment.id;
// Upload users to segment
await uploadAudienceData(segmentId, userList);
return response.data;
}
Upload User Data
const crypto = require('crypto');
function hashEmail(email) {
return crypto.createHash('sha256')
.update(email.toLowerCase().trim())
.digest('hex');
}
async function uploadAudienceData(segmentId, emails) {
const hashedEmails = emails.map(email => ({
schema: ['EMAIL_SHA256'],
data: [[hashEmail(email)]]
}));
const response = await snapAPI.post(`segments/${segmentId}/users`, {
users: hashedEmails
});
return response.data;
}
Reporting API
Fetch Ad Performance
import requests
import os
from datetime import datetime
def get_ad_performance(ad_account_id, start_date, end_date):
url = f'https://adsapi.snapchat.com/v1/adaccounts/{ad_account_id}/stats'
headers = {
'Authorization': f"Bearer {os.environ['SNAP_ACCESS_TOKEN']}",
'Content-Type': 'application/json'
}
params = {
'granularity': 'DAY',
'start_time': start_date,
'end_time': end_date,
'fields': ','.join([
'impressions',
'swipes',
'spend',
'swipe_up_percent',
'conversion_purchases',
'conversion_purchases_value',
'conversion_add_cart',
'conversion_view_content'
])
}
response = requests.get(url, params=params, headers=headers)
return response.json()
# Example usage
performance = get_ad_performance(
ad_account_id='12345678-1234-1234-1234-123456789012',
start_date='2025-01-01T00:00:00.000-00:00',
end_date='2025-01-31T23:59:59.999-00:00'
)
Google Tag Manager Integration
Container Setup
Create Snap Pixel ID Variable
- Variables > New > Constant
- Name: "Snap Pixel ID"
- Value: Your pixel ID
Create Base Pixel Tag
Create Event Tags
- Tags > New > Custom HTML
- Add event tracking code
- Trigger: Based on page or dataLayer events
DataLayer Integration
// Push to dataLayer on purchase
window.dataLayer = window.dataLayer || [];
dataLayer.push({
'event': 'purchase',
'transactionId': 'ORDER_12345',
'transactionTotal': 199.98,
'transactionCurrency': 'USD',
'transactionProducts': [
{
'sku': 'SKU_123',
'name': 'Blue Widget',
'price': 99.99,
'quantity': 2
}
]
});
GTM Event Tag
<script>
snaptr('track', 'PURCHASE', {
'price': {{Transaction Total}},
'currency': {{Transaction Currency}},
'transaction_id': {{Transaction ID}},
'item_ids': {{Transaction Product SKUs}},
'number_items': {{Transaction Product Count}}
});
</script>
Best Practices
Integration Strategy
- Start with Snap Pixel for browser-based tracking
- Add CAPI for server-side backup
- Implement deduplication with client_dedup_id
- Use platform integrations where available
- Test thoroughly before going live
Data Quality
- Hash all PII before sending (email, phone)
- Pass complete event parameters for optimization
- Match item_ids to product catalog exactly
- Include currency for all monetary values
- Use transaction_id for order identification
Privacy & Compliance
- Implement consent management for GDPR/CCPA
- Update privacy policy to disclose Snapchat tracking
- Honor user opt-outs through platform controls
- Use hashing for all personally identifiable information
- Audit data sharing regularly
Performance Optimization
- Load pixel asynchronously to avoid blocking
- Minimize custom events (prefer standard events)
- Batch API calls when possible
- Monitor Event Quality in Events Manager
- Test integrations with Snap Pixel Helper
Troubleshooting
Pixel Not Loading
- Verify pixel ID is correct
- Check for JavaScript errors in console
- Ensure script loads before events fire
- Test without ad blockers
Events Not Tracking
- Wait 15-30 minutes for processing
- Verify event names match standard events
- Check Events Manager for errors
- Validate event parameters
API Errors
- Verify access token is valid (check expiration)
- Check request format against API docs
- Review rate limits
- Validate required fields included
Integration Issues
- Verify platform connection status
- Check catalog sync settings
- Review product mapping
- Test with single product first