Skip to main content
Conversions tracked in DATALYR but not showing in ad platforms? This guide explains common causes and solutions.

Understanding Conversion Flow

How Conversions Work:
  1. User clicks ad (stores click ID: gclid, fbclid, ttclid)
  2. User visits site (DATALYR captures click ID)
  3. User converts (purchase, signup, etc.)
  4. DATALYR tracks conversion event
  5. Conversion Rule sends to ad platform
  6. Platform matches click ID to conversion
Any break in this chain causes missing conversions.

Quick Diagnostic

Check Event Stream:
  1. Go to Dashboard → Event Stream
  2. Filter by conversion event name (e.g., “purchase”)
  3. Verify event appears with revenue/properties
If Event in Stream: Tracking works. Issue is attribution or postback. If No Event: See Tracking Not Working.

Conversion Rule Not Configured

Symptoms:
  • Events tracked in DATALYR
  • Zero conversions in ad platforms
Check Conversion Rules:
  1. Go to Integrations → Conversion Rules
  2. Verify rule exists for your event
  3. Check rule is enabled (toggle on)
Fix: Create Conversion Rule:
  1. Click “Create Rule”
  2. Select event name (e.g., “purchase”)
  3. Select platforms (Meta, Google, TikTok)
  4. Map value field to revenue or similar
  5. Enable rule
See Conversion Rules.

Ad Platform Not Connected

Symptoms:
  • Conversion Rules configured
  • Still no conversions in platforms
Check Integrations:
  1. Go to Integrations → Overview
  2. Verify platform shows “Connected”
  3. Check “Last Sync” timestamp is recent
If Disconnected:
  1. Click “Connect” next to platform
  2. Authorize DATALYR access
  3. Complete OAuth flow
Connection Expired: Platforms expire connections after 60-90 days. Fix: Reconnect integration following same steps. See integration guides:

No Click ID Captured

Symptoms:
  • Conversions tracked
  • Attribution shows “Direct” or “Unknown”
  • Not appearing in ad platform
Why It Happens: Without click ID (gclid, fbclid, ttclid), DATALYR cannot attribute conversion to specific ad click. Common Causes: 1. User Clicked Ad Long Ago: Click IDs stored for limited time:
  • Meta: 7 days
  • Google: 90 days
  • TikTok: 28 days
Fix: Can’t retroactively fix. Ensure tracking installed before running ads. 2. Click ID Stripped from URL: Some redirects or landing page builders strip URL parameters. Check URL: When user clicks ad, URL should contain:
https://yoursite.com/?gclid=abc123xyz     (Google)
https://yoursite.com/?fbclid=abc123xyz    (Meta)
https://yoursite.com/?ttclid=abc123xyz    (TikTok)
Fix:
  • Test ad click yourself, verify click ID in URL
  • If missing, check ad settings (tracking template, URL parameters)
  • Ensure landing page preserves URL parameters
3. Cross-Domain Tracking Issue: User clicks ad → lands on domain1.com → converts on domain2.com. Click ID lost during domain switch. Fix: Enable cross-domain tracking in Settings → Advanced. See Cross-Domain Tracking. 4. Cookie Blocked: Browser blocks cookies, can’t store click ID. Fix: Use server-side tracking or first-party proxy.

Attribution Window Expired

Symptoms:
  • Click ID captured
  • Conversion happened later
  • Not attributed
Why It Happens: Each platform has attribution window (time between click and conversion). Attribution Windows:
  • Meta: 7-day click, 1-day view
  • Google: 90-day click, 1-day view
  • TikTok: 28-day click, 1-day view
Example: User clicks Google ad on January 1, converts on April 1 (91 days later). Outside 90-day window, so not attributed. Fix: Can’t retroactively fix. Understand attribution windows when analyzing performance.

Event Value Missing or Incorrect

Symptoms:
  • Conversions appearing in platform
  • Revenue showing as $0 or wrong amount
Check Event Properties:
  1. Go to Event Stream
  2. Click on conversion event
  3. Verify revenue or value property exists
  4. Check amount is correct
Common Issues: No Value Field: Event tracked without revenue:
datalyr.track('purchase');  // No value
Fix:
datalyr.track('purchase', {
  revenue: 99.99,
  currency: 'USD'
});
Wrong Field Name: Using price instead of revenue:
datalyr.track('purchase', {
  price: 99.99  // Wrong field
});
Fix: Update Conversion Rule to map correct field, or use revenue in event. Value Not a Number:
datalyr.track('purchase', {
  revenue: '$99.99'  // String, not number
});
Fix:
datalyr.track('purchase', {
  revenue: 99.99  // Number
});

Deduplication Removing Conversions

Symptoms:
  • Conversions in Event Stream
  • Fewer conversions in ad platforms
Why It Happens: DATALYR deduplicates conversions sent within 7 days to prevent double-counting. Example:
  • User converts on January 1
  • Shopify webhook fires on January 2 (duplicate)
  • Second conversion deduplicated
Check Deduplication:
  1. Event Stream → Click event
  2. Check “Deduplication Status”
  3. If “Deduplicated”, conversion blocked
Fix: Deduplication is correct behavior. Adjust if needed:
  1. Integrations → Conversion Rules
  2. Edit rule → Deduplication settings
  3. Adjust window or disable (not recommended)

Test Mode Enabled

Symptoms:
  • Conversions configured correctly
  • Not appearing in ad platform reporting
Check Test Mode:
  1. Go to Integrations → Conversion Rules
  2. Check rule settings
  3. Look for “Test Mode” toggle
If Enabled: Conversions sent to platform’s test mode, not counted in reporting. Fix: Disable test mode once testing complete. Important: Test mode conversions don’t appear in ad platform reports but visible in Events Manager/Conversion Tracking tools.

Platform-Specific Issues

Meta (Facebook/Instagram)

Conversions Not Matching: 1. Event Name Mismatch: Meta expects specific event names: Purchase, Lead, AddToCart. Fix: Use standard event names in Conversion Rules or map custom events. 2. Pixel Also Installed: Both DATALYR CAPI and Meta Pixel installed. Issue: Double-counting (DATALYR deduplicates, but platform may show inflated numbers). Fix: Keep both (DATALYR automatically deduplicates). Or remove Meta Pixel, use DATALYR only. 3. Conversions in Events Manager but Not Ads: Conversions tracked but not attributed to ads. Cause: No fbclid in original click. Fix: Verify Meta ads include click ID parameter. Conversions Not Importing: 1. Wrong Conversion Action: Conversion Rule sends to wrong Google Ads conversion action. Fix:
  1. Google Ads → Tools → Conversions
  2. Find conversion action name
  3. Update DATALYR Conversion Rule to match exact name
2. Enhanced Conversions Not Enabled: Google Ads account doesn’t have Enhanced Conversions enabled. Fix:
  1. Google Ads → Tools → Conversions
  2. Select conversion action
  3. Enable “Enhanced conversions”
3. Customer Match List: For offline conversions, customer list must be uploaded first. Fix: Ensure email/phone provided in conversion event:
datalyr.track('purchase', {
  revenue: 99.99,
  email: '[email protected]'  // Required for Google
});

TikTok Ads

Conversions Not Appearing: 1. Pixel Conflict: TikTok Pixel also installed causing duplicate tracking. Fix: Remove TikTok Pixel, use DATALYR only. 2. Event Name Mismatch: TikTok expects specific event names: CompletePayment, SubmitForm. Fix: Map custom events to TikTok standard events in Conversion Rule. 3. Missing Required Fields: TikTok requires contents array for product data. Fix:
datalyr.track('purchase', {
  revenue: 99.99,
  currency: 'USD',
  contents: [
    { content_id: 'prod_123', quantity: 1, price: 99.99 }
  ]
});

Shopify Integration Issues

Symptoms:
  • Orders in Shopify
  • Not tracked in DATALYR
Check Shopify Integration:
  1. Go to Integrations → Shopify
  2. Verify “Connected”
  3. Check “Last Sync” timestamp
Common Causes: 1. Webhook Not Firing: Shopify webhook failed or disabled. Fix:
  1. Disconnect and reconnect Shopify integration
  2. Test with new order
2. Order Status: Only “paid” orders synced by default. Fix: Check order is paid, not pending/draft. 3. Script Not on Checkout: Tracking script not on Shopify checkout pages. Fix: See Shopify Checkout Tracking.

Stripe Integration Issues

Symptoms:
  • Payments in Stripe
  • Not tracked in DATALYR
Check Stripe Integration:
  1. Go to Integrations → Stripe
  2. Verify “Connected” with restricted API key
  3. Check “Last Sync” timestamp
Common Causes: 1. Wrong API Key: Using standard key instead of restricted key. Fix: Use restricted key with read-only Events access. See Stripe Integration. 2. Event Not Subscription: Only charge.succeeded and subscription events tracked. Fix: For invoices, use invoice.paid webhook. 3. No Customer Metadata: Can’t link payment to website visitor. Fix: Include visitor ID in Stripe customer metadata:
stripe.customers.create({
  email: '[email protected]',
  metadata: {
    datalyr_visitor_id: datalyr.getAnonymousId()
  }
});

Server-Side vs Client-Side Tracking

Issue: Tracking conversion from server (webhook) but attribution data stored client-side. Example:
  1. User clicks ad (client-side tracking captures fbclid)
  2. User purchases (server-side webhook fires)
  3. Webhook doesn’t include fbclid
Result: Conversion tracked but not attributed. Fix: Pass Identity Data to Server Client-side:
// Get anonymous ID and user ID
const anonymousId = datalyr.getAnonymousId();
const userId = datalyr.getUserId();

// Send to server on purchase
fetch('/api/purchase', {
  method: 'POST',
  body: JSON.stringify({
    anonymousId: anonymousId,
    userId: userId,
    // ... order data
  })
});
Server-side:
// Include anonymous ID in server-side tracking
await datalyr.track({
  userId: req.body.userId,
  anonymousId: req.body.anonymousId,  // Links to client-side session
  event: 'purchase',
  properties: { revenue: 99.99 }
});
See Identity Resolution.

Verify Postback Sent

Check Postback Status:
  1. Go to Event Stream
  2. Click on conversion event
  3. Check “Postbacks” section
  4. Verify platforms show “Sent” with timestamp
Postback Statuses:
  • Queued: Waiting to send
  • Sent: Successfully sent to platform
  • Failed: Platform rejected (see error message)
  • Skipped: Deduplication or rule condition not met
If Failed: Check error message for details. Common errors:
  • Invalid access token (reconnect integration)
  • Missing required fields
  • Platform API error (temporary)

Testing Conversions

Test Before Going Live: 1. Enable Test Mode: Integrations → Conversion Rules → Enable “Test Mode” 2. Make Test Purchase: Complete purchase on your site with small amount. 3. Check Event Stream: Verify conversion appears within seconds. 4. Check Platform:
  • Meta: Events Manager → Test Events
  • Google: Conversions → All Conversions (may take hours)
  • TikTok: Events Manager → Test Mode
5. Disable Test Mode: Once confirmed working, disable test mode in Conversion Rule.

Still Missing Conversions?

Debug Checklist:
  1. Event appears in Event Stream?
  2. Conversion Rule exists and enabled?
  3. Integration connected?
  4. Event has value/revenue field?
  5. Click ID captured (check attribution)?
  6. Within attribution window?
  7. Postback status shows “Sent”?
Contact Support: Email [email protected] with:
  • Event Stream screenshot
  • Conversion Rule settings
  • Integration connection status
  • Specific conversion example (order ID, timestamp)

Next Steps