> ## Documentation Index
> Fetch the complete documentation index at: https://docs.datalyr.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Missing Conversions

> Troubleshoot why conversions are not being tracked or attributed

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](/troubleshooting/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](/integrations/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:

* [Meta Ads](/integrations/meta-ads)
* [Google Ads](/integrations/google-ads)
* [TikTok Ads](/integrations/tiktok-ads)

## 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](/understanding-data/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:

```javascript theme={null}
datalyr.track('purchase');  // No value
```

**Fix:**

```javascript theme={null}
datalyr.track('purchase', {
  revenue: 99.99,
  currency: 'USD'
});
```

**Wrong Field Name:**
Using `price` instead of `revenue`:

```javascript theme={null}
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:**

```javascript theme={null}
datalyr.track('purchase', {
  revenue: '$99.99'  // String, not number
});
```

**Fix:**

```javascript theme={null}
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.

### Google Ads

**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:

```javascript theme={null}
datalyr.track('purchase', {
  revenue: 99.99,
  email: 'user@example.com'  // 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:**

```javascript theme={null}
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](/getting-started/installation/platforms/shopify-manual#checkout-tracking).

## Stripe Integration Issues

**Symptoms:**

* Payments in Stripe
* Not tracked in DATALYR

**Check Stripe Integration:**

1. Go to **Integrations → Stripe**
2. Verify the connection shows "Connected"
3. Check "Last Sync" timestamp

**Common Causes:**

**1. Connection Not Authorized:**
Stripe OAuth connection may have expired or been revoked.

**Fix:** Disconnect and reconnect Stripe via Settings → Integrations.

See [Stripe Integration](/integrations/stripe).

**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:

```javascript theme={null}
stripe.customers.create({
  email: 'user@example.com',
  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:**

```javascript theme={null}
// 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:**

```javascript theme={null}
// 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](/sdks/advanced#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 [hello@datalyr.com](mailto:hello@datalyr.com) with:

* Event Stream screenshot
* Conversion Rule settings
* Integration connection status
* Specific conversion example (order ID, timestamp)

## Next Steps

<CardGroup cols={2}>
  <Card title="Integration Errors" icon="plug" href="/troubleshooting/integration-errors">
    Fix integration issues
  </Card>

  <Card title="Postback Debugging" icon="bug" href="/troubleshooting/postback-debugging">
    Debug postback failures
  </Card>

  <Card title="Conversion Rules" icon="arrows-turn-to-dots" href="/integrations/conversion-rules">
    Configure conversion rules
  </Card>

  <Card title="Attribution Models" icon="chart-network" href="/understanding-data/attribution-models">
    Understand attribution
  </Card>
</CardGroup>
