Foundations 3 min read

What Is Data Deduplication? Preventing Double-Counted Conversions

Last verified: 2026-11-05

Data deduplication is the process of ensuring each offline conversion is counted exactly once in your ad platform reports. Without deduplication, the same booked job, completed service, or closed deal could appear multiple times — inflating your conversion count, skewing your cost-per-acquisition, and misleading Smart Bidding.

For The Upload Offline Conversions App (TUOCA), deduplication is a critical pipeline stage that runs on every relay execution, preventing double-counting across scheduled uploads.

Why Duplicates Happen

Duplicate conversions are surprisingly common in offline conversion tracking:

CauseFrequencyExample
Same CSV uploaded twiceVery CommonAccidentally re-uploading last week’s file
CRM record in multiple exportsCommonLead appears in both “New this week” and “All qualified” exports
Retry after partial failureCommon80 of 100 records succeeded; retrying all 100 re-sends the 80
Multiple relays same destinationModerateTwo relays both uploading CallRail calls to Google Ads
Count = “Every” on conversion actionModerateSame GCLID counted each time it appears
Manual + automated overlapCommonManual CSV upload + TUOCA relay both running

Deduplication Methods

1. GCLID + Action + Timestamp (Google’s Default)

Google Ads automatically deduplicates based on three fields:

GCLID: EAIaIQobChMI8dml...
Conversion Name: Booked Job
Conversion Time: 2026-04-10 14:30:00-05:00

If all three match a previous upload, Google rejects the duplicate with DUPLICATE_CONVERSION. However, this is imperfect — if the timestamp differs by even one second, it’s treated as a new conversion.

The order_id field provides explicit, reliable deduplication:

Google Click ID,Conversion Name,Conversion Time,Conversion Value,Conversion Currency,Order ID
EAIaIQobChMI...,Booked Job,2026-04-10 14:30:00-05:00,4500.00,USD,JOB-2026-04-001

When an order_id is included, Google uses it as the primary deduplication key. Any subsequent upload with the same order_id is rejected, regardless of other field values.

Benefits:

  • Idempotent uploads — re-upload the same batch safely
  • Reliable across time zones and timestamp formats
  • Works even when GCLID or timestamps vary slightly

See What Is Order ID Deduplication? for details.

3. Event ID (Meta CAPI)

Meta’s Conversions API uses event_id for deduplication — both between Pixel and CAPI events, and between duplicate CAPI events:

{
  "event_name": "Purchase",
  "event_id": "job-2026-04-001",
  "event_time": 1714502400
}

4. Platform-Specific Methods

PlatformDeduplication KeyBehavior
Google Adsorder_id or GCLID+Action+TimeRejects duplicates with error
Metaevent_idSilently deduplicates
Microsoft Adsorder_idRejects duplicates
TikTokevent_idSilently deduplicates

The Cost of Duplicate Conversions

Duplicates don’t just inflate numbers — they actively harm your campaigns:

1. Inflated Conversion Count

Reality: 45 booked jobs
With duplicates: 63 "conversions"
Error: +40% inflation

2. Deflated CPA

Actual CPA: $222 per booked job
Reported CPA: $159 per "conversion"
Error: CPA appears 28% lower than reality

3. Misleading ROAS

Actual revenue: $157,500
Duplicated revenue: $220,500 (same jobs counted twice)
Reported ROAS: 7.35x vs. actual 5.25x

4. Smart Bidding Corruption

Smart Bidding learns from your conversion data. If duplicates create the illusion of more conversions than reality, the algorithm will bid more aggressively — increasing spend without increasing actual revenue.

How TUOCA Deduplicates

TUOCA implements multi-layer deduplication:

Layer 1: Internal Upload Tracking

TUOCA maintains a record of every successfully uploaded conversion:

  • GCLID / click identifier
  • Conversion action name
  • Timestamp
  • Generated order_id

Before uploading, each record is checked against this history. Already-uploaded records are skipped.

Layer 2: Order ID Generation

TUOCA generates a unique order_id for each conversion based on:

  • Source system record ID (e.g., CallRail call ID, ServiceTitan job ID)
  • Destination platform
  • Conversion action

This means re-running the same relay with the same data produces the same order_ids, making uploads idempotent.

Layer 3: API Error Handling

If a duplicate does reach the API (e.g., manual upload + relay overlap), TUOCA catches the DUPLICATE_CONVERSION error, logs it as “expected duplicate,” and continues processing the remaining records.

Layer 4: Cross-Relay Awareness

When multiple relays target the same destination account, TUOCA’s deduplication spans across all relays — preventing a record uploaded by Relay A from being re-uploaded by Relay B.

Best Practices

  1. Always include order_id — It’s the most reliable deduplication method
  2. Set Count to “One” on your conversion action — Prevents per-GCLID duplicates
  3. Don’t mix manual and automated uploads — Use one method per conversion action
  4. Use TUOCA’s Activity Logs — Review upload history to spot duplication patterns
  5. Check your CRM exports — Ensure export filters don’t overlap between batches

Frequently Asked Questions

Common causes: uploading the same CSV file twice, multiple relays targeting the same conversion action, CRM records appearing in multiple export batches, retry logic re-sending already-accepted records, and using Count = 'Every' instead of 'One' on the conversion action. TUOCA prevents duplicates by tracking which records have been successfully uploaded.

Google Ads deduplicates using the combination of GCLID + conversion action + conversion time. If you upload the exact same GCLID, conversion name, and timestamp twice, Google rejects the second upload with a DUPLICATE_CONVERSION error. You can also use the order_id field for explicit deduplication — Google will reject any upload with an order_id that's already been recorded.

The order_id is an optional field in offline conversion uploads that serves as a unique transaction identifier. When included, Google uses it for deduplication — if you upload two conversions with the same order_id, the second is rejected. This is useful for idempotent retries: you can safely re-upload a batch without risking double-counting.

TUOCA uses a multi-layer deduplication strategy: (1) Internal tracking — each uploaded record's GCLID + conversion action + timestamp is stored; (2) Order ID generation — TUOCA generates unique order_ids for each conversion; (3) Time-window checks — records already uploaded within the current window are skipped; (4) API error handling — DUPLICATE_CONVERSION errors are logged but don't halt the pipeline.

Stop Guessing. Start Proving ROI.

TUOCA connects your CRM and call tracking data directly to your ad platforms. Set up in minutes.