How to Track Offline Conversions: A Platform-Agnostic Guide
Learn how to track offline conversions across Google Ads, Meta, Microsoft Ads, and TikTok. The Upload Offline Conversions App explains the universal workflow for connecting CRM revenue to your ad platforms.
Offline conversion tracking connects the revenue your ads generate to the clicks that produced them. Whether a customer called from a Google Ad, booked a $4,500 HVAC job, or signed a $25,000 contract, offline tracking ensures your ad platforms know about it and can optimize accordingly.
This guide from The Upload Offline Conversions App (TUOCA) covers the universal workflow that applies across all ad platforms — Google Ads, Meta, Microsoft Ads, and TikTok.
The Universal Offline Conversion Workflow
Regardless of the ad platform, offline conversion tracking follows the same five steps:
Step 1: Capture the Click Identifier
When someone clicks your ad, the platform appends a unique identifier to your URL:
| Platform | Identifier | Example |
|---|---|---|
| Google Ads | GCLID | ?gclid=EAIaIQob... |
| Meta | FBCLID | ?fbclid=IwAR3x7... |
| Microsoft | MSCLKID | ?msclkid=a1b2c3... |
| TikTok | TTCLID | ?ttclid=E.C.P... |
You must capture and store this identifier alongside the lead record. Methods:
- Call tracking tools — CallRail, CallTrackingMetrics automatically capture all click IDs
- Hidden form fields — JavaScript reads the URL parameter and stores it with the form submission
- CRM integrations — Some CRMs natively capture click IDs
- Cookies — Store the click ID in a first-party cookie for multi-page visits
Step 2: Wait for the Conversion
The lead progresses through your funnel offline:
Ad click → Phone call → Estimate → Job booked → Service completed → Invoice paid
This process takes hours (emergency plumbing) to months (commercial construction). The time between click and conversion is the conversion lag.
Step 3: Prepare the Data
Your conversion data needs three essential elements:
| Element | Source | Example |
|---|---|---|
| Click identifier | Call tracking, CRM, form data | GCLID: EAIaIQob... |
| Conversion timestamp | CRM, invoicing system | 2026-04-10 14:30:00 |
| Conversion value | CRM, invoicing system | $4,500.00 |
Additional helpful data:
- Conversion action name (which funnel stage)
- Hashed PII (email, phone) for Enhanced Conversions
- Order ID for deduplication
Step 4: Upload to Your Ad Platform
Send the prepared data to the ad platform via CSV upload or API:
| Platform | Upload Method | API |
|---|---|---|
| Google Ads | CSV in the interface, or the Data Manager API | Data Manager API for new offline and enhanced-conversion uploads |
| Meta | API only | Conversions API (CAPI) |
| Microsoft | CSV or API | Bing Ads API |
| TikTok | API only | Events API |
Step 5: Verify and Monitor
After uploading, verify conversions appear in your reports:
- Check the click dates (not the upload date)
- Review error reports for rejected records
- Monitor match rates for Enhanced Conversions
- Track ROAS as data accumulates
Choosing Your Data Source
For Phone-Based Businesses
If most leads come via phone calls:
Best option: CallRail or CallTrackingMetrics → TUOCA → Ad platforms
Call tracking tools automatically capture click IDs from the referring URL when a tracked call occurs. TUOCA pulls call data via API, transforms it, and uploads to your ad platforms.
For Form-Based Businesses
If most leads come via website forms:
Best option: CRM with GCLID capture → TUOCA → Ad platforms
Configure your forms to capture click IDs in hidden fields. Your CRM stores the lead with the click ID. TUOCA pulls CRM data and uploads conversions.
For Businesses That Need Revenue Attribution
If you need to send actual revenue values (not just “a conversion happened”):
Best option: Call tracking + CRM → TUOCA Fusion Relay → Ad platforms
Fusion Relays combine call tracking data (has the click ID) with CRM data (has the revenue) by matching on phone number. The result: click ID + revenue value uploaded together.
Platform-Specific Considerations
Google Ads
- Window: Google keeps a GCLID for 90 days after the click, so a job closed on day 75 can still be uploaded and the same job closed on day 91 cannot.
- Processing delay: After a successful upload, imported conversions usually show in reports in about 3 hours. Processing is typically under 12 hours, and a row keyed by a GBRAID or WBRAID can take up to 72 hours. Wait 6 hours after the click before you upload it: a click at 9:00 a.m. is too recent at noon and is ready at 3:00 p.m., and if you upload sooner the error asks you to try again in 12 hours.
- Attribution: Click date (not upload date)
- Enhanced Conversions: A hashed email or phone matches for 63 days after the click, and from day 64 through day 90 only the GCLID still matches.
- Guide: Google Ads Offline Conversions: Complete Guide
Meta (Facebook/Instagram)
- Window: Meta rejects a Conversions API request when the event happened more than 7 days before you send it, so a booking from Monday has to be uploaded by the next Monday, unless it is a physical-store sale, which Meta asks you to send within 62 days.
- Upload method: Conversions API only (no CSV)
- Matching: Email/phone-based (FBCLID is supplementary)
- Guide: Meta/Facebook Offline Conversions Guide
Microsoft Ads
- Window: Microsoft Advertising rejects an offline conversion whose time is more than 90 days before the upload and will not count one more than 90 days after the click, so keep the MSCLKID for those 90 days: a sale on August 1 can be uploaded on October 20, and a job that closes 100 days after the click cannot be counted even if you upload it that day.
- Key difference: Auto-tagging OFF by default — must enable
- Date format: MM/dd/yyyy (not yyyy-MM-dd like Google)
- Guide: Microsoft Ads Offline Conversions Guide
TikTok
- Window: TikTok asks you to keep the click ID for at least 28 days and expires it on the attribution window you set, so keep the ID from a March 1 click through at least March 29 and send the job while that window is still open.
- Upload method: Events API only
- Minimum data: 50 events/week for stable optimization
- Guide: TikTok Offline Conversions Guide
The Three Levels of Offline Conversion Tracking
Level 1: Manual Upload (Testing)
Export data from your CRM, format as CSV, upload manually to each platform.
- Effort: 30-60 minutes per client per platform per upload
- Frequency: Weekly or monthly
- Scalability: Breaks at 5+ clients
- Best for: Proving the concept, one-time backfills
Level 2: Automated Relays (Scaling)
Use TUOCA to automatically fetch, transform, and upload conversions on a schedule.
- Effort: 5-minute setup, then zero ongoing effort
- Frequency: Hourly, daily, or weekly (automated)
- Scalability: Handles 200+ clients
- Best for: Ongoing production tracking
Level 3: Fusion Relays (Revenue Attribution)
Combine call tracking + CRM data for complete revenue-attributed conversions.
- Effort: 10-minute setup per client
- Frequency: Automated
- Scalability: Unlimited
- Best for: Value-Based Bidding, proving ROI
Getting Started Checklist
- ✅ Choose your primary platform — Start with Google Ads (highest impact)
- ✅ Enable auto-tagging on all platforms
- ✅ Set up click ID capture (call tracking or hidden form fields)
- ✅ Create Import conversion actions on each platform
- ✅ Do a manual test upload to verify the pipeline works
- ✅ Set up TUOCA for automated uploads
- ✅ Add Fusion Relays for revenue attribution
- ✅ Judge Smart Bidding on enough conversions — Google’s Smart Bidding help says you can turn it on with no conversion history, and that you should judge results over a period with at least 30 conversions, such as a month, and over 50 conversions before you judge Target ROAS.
- ✅ Switch to Value-Based Bidding once you have enough data