ToolsTemplate Library · Meta Ads · Import

Meta Offline Conversions Upload template.

Bring CRM outcomes back to Meta — offline event columns per the documented format, with lead and purchase event rows.

Download the CSV Free · 7 columns · 2 pre-filled rows · updated July 2026

What's inside — the exact file

This is the complete template, not a sample. The rows are worked examples — replace them with your data (and delete them before any platform import).

emailphoneevent_nameevent_timevaluecurrencyorder_id
jane@example.com15550100Purchase2026-07-15T14:30:005000USDCRM-1043
sam@example.comLead2026-07-16T09:05:000USDCRM-1044

What this template is for

Meta optimizes toward the events it can see — and for lead-gen businesses, the events that matter (qualified leads, closed deals) happen in your CRM, invisible to the pixel. Offline conversion uploads feed those outcomes back, so campaigns optimize toward revenue instead of form fills. This template follows the documented offline-event columns as of July 2026, with lead and purchase example rows.

Use it if your sales cycle finishes off-platform: B2B lead gen, high-ticket services, anything with a human between click and cash. Signal quality is the modern Meta game, and CRM outcomes are the highest-quality signal you own.

How to use it, step by step

  1. Decide which CRM events to send. Two or three tiers work well: a qualified-lead event (value 0 or a modeled value) and a closed-won event with real revenue. More granularity than your volume supports just dilutes the learning.
  2. Set up the receiving side in Events Manager. Create or designate an offline event set (or send the same events via the Conversions API, which is where Meta has been consolidating offline signals — pick one path and stay consistent).
  3. Export with identifiers and honest timestamps. Each row needs match keys (email, phone — same normalization rules as customer lists) plus event_name, event_time (when it actually happened), value, and currency. order_id deduplicates repeat uploads.
  4. Upload on a weekly rhythm. Fresh signal beats bulk signal — weekly uploads keep attribution windows workable and bidding informed. Automate the export if your CRM allows; consistency matters more than volume.
  5. Verify match rates and attribution in Events Manager. Meta reports matched events and attributed campaigns. Low matches mean formatting or identifier gaps; zero attribution can just mean your window and lag don't overlap — check both before concluding it 'doesn't work'.
  6. Reconcile monthly against the CRM. Platform-attributed conversions and CRM reality will disagree — that's normal. Our attribution reconciliation template is built to make that disagreement visible and manageable.

What each column means

emailLowercase, trimmed — primary match key.
phoneCountry code plus digits only — secondary match key; more keys, better matching.
event_nameYour event label (Lead Qualified, Purchase) — consistent across every upload.
event_timeWhen the conversion actually occurred, not when you exported it.
valueRevenue or modeled value; 0 is valid for stage events.
currencyThree-letter code matching the value.
order_idUnique per event — Meta's deduplication key across repeated uploads.

Common mistakes to avoid

  • Sending events with export-day timestamps instead of occurrence timestamps, which scrambles attribution windows.
  • Omitting order_id and double-counting every conversion that appears in two weekly exports.
  • Uploading only closed-won for a long sales cycle — by the time deals close, the attribution window has often lapsed; the mid-funnel qualified-lead event is what bidding can actually learn from.
  • Running offline uploads and pixel purchase events for the same outcomes without deduplication, inflating results.

Questions, answered

Offline uploads vs. Conversions API — which should we use?

Meta has been steering server-side signals toward the Conversions API, which handles both online and offline events — as of July 2026 it's the more future-proof path, and CRM integrations (including HubSpot's) increasingly use it natively. The CSV upload remains the accessible manual route; this file's structure maps to either.

Will this improve performance or just reporting?

Both, and the order matters: first your reporting gets honest (campaigns judged by SQLs, not form fills), then optimization improves as Meta's bidding learns which clicks produce the events you actually value. The reporting benefit is immediate; the optimization benefit compounds over weeks.

What if our match rates are low?

Check normalization first (formatting kills more matches than missing data), then add identifiers — email plus phone beats either alone. Structurally low matches usually mean your forms collect too little; that's a form problem worth fixing for a dozen reasons beyond ads.

This is a Market Disrupt worksheet, not a vendor file. Import-format templates follow each platform's documented layout as of July 2026 — platforms evolve, so validate against current documentation before a large import.

Want the account run, not just audited?

Paid social measured against pipeline, not platform dashboards — with the CRM wiring that makes the numbers honest.

Talk through your ad account