NEWASK is live: the AI brain that answers anything about your business.Meet ASK →
Blog/Conversion Upload Windows
Attribution

Conversion Upload Windows Compared: Meta, Google Ads and TikTok

7 day free trialNo credit card requiredSet up in 5 minutes
Direct answer

Meta rejects any Conversions API request containing an event_time more than seven days old, and rejects the whole request rather than the offending event. Google Ads retains a click identifier for 90 days, or 63 days for uploads matched on customer data. TikTok gives offline events 28 days. The tightest of those limits governs your funnel design.

Two different clocks get confused constantly. An attribution window is how long after a click a platform will credit a conversion. An upload window is how long you have to physically deliver the event before the API refuses it. You can have a 30 day attribution window and a 7 day upload window at the same time, and if you do, the upload window is what actually breaks. This page documents both, per platform, with the vendor's own wording.

Upload windows matter most for funnels that leave the browser, because those are the funnels where the conversion happens days later and somewhere the pixel cannot see. If that is unfamiliar territory, start with why the Meta pixel cannot follow a user into a messaging app, then come back here for the deadlines.

How long can a conversion wait before Meta will not accept it?

Seven days, and Meta rejects the entire request if any single event breaches it. This is the tightest published limit of the three platforms and the most operationally dangerous, because the failure is all-or-nothing.

"The event_time can be up to 7 days before you send an event to Facebook. If any event_time in data is greater than 7 days in the past, we return an error for the entire request and process no events."

Meta, Server Event Parameters. developers.facebook.com/documentation/ads-commerce/conversions-api/parameters/server-event. Page shows "Updated: Feb 12, 2026". Checked 14 August 2026.

Read the second sentence twice. One stale row in a batch of five hundred takes the other four hundred and ninety-nine down with it. If you batch nightly and a single retry queue holds an event from eight days ago, you lose the night. Filter before you send, and log what you filtered rather than discarding it silently.

Meta also states that event_time is a Unix timestamp in seconds and that "You must send this date in GMT time zone". Sending milliseconds is a common bug: the value lands far in the future, so it is not caught by the seven day rule and instead produces events that never reconcile.

How does Meta deduplicate, and for how long?

By matching event_name and event_id across the browser and server paths, within a 48 hour horizon, with a 5 minute tiebreak that favours the browser.

"For the same customer action, event from the browser or app event matches event_name from the server event. If we find a match between events sent within 48 hours of each other, we only consider the first one. If a server and browser/app event arrive at approximately the same time (that is, within 5 minutes of each other), we favor the browser/app event."

Meta, Server Event Parameters. developers.facebook.com/documentation/ads-commerce/conversions-api/parameters/server-event. Page shows "Updated: Feb 12, 2026". Checked 14 August 2026.

For messaging funnels this mostly does not apply, because there is no browser event to deduplicate against. It applies with force to hybrid funnels where a chat conversation ends at a web checkout that also fires the pixel. In that case the same purchase can legitimately produce two events, and only a shared event_id stops it being counted twice.

Note also that on the business messaging path Meta explicitly does not do this for you, stating that it "does not assist with deduplicating events for Conversions API for Business Messaging". Details are in the ctwa_clid reference.

How long does Google Ads accept an offline conversion?

Ninety days for a click identifier, and sixty-three days when the match is made on hashed customer data instead. Google states both numbers in the same answer.

"You can upload any conversion with GCLID so long as it's no longer than 90 days. You can upload any conversion with personally identifiable information for enhanced conversions so long as it's no longer than 63 days."

Google Ads Help, Offline conversion imports FAQs. support.google.com/google-ads/answer/10029210. Google Ads Help articles display no update date; read 14 August 2026.

Google frames the 90 day figure as a retention limit rather than a policy: "We retain the GCLID for only 90 days. You'll need to upload more frequently, or if your conversion happens after 90 days, upload an offline conversion event that happens within 90 days." That is a useful distinction. There is no appeal, because after 90 days there is nothing left on Google's side to match against.

There is also a floor, which surprises people who upload immediately. Google's error guidance reads: "We are still processing this click's information, please re-upload this conversion in 12 hours" with the fix "Our system has not processed the click yet. It is recommended that you wait 6 hours if using scheduled upload." And on new conversion actions: "After creating a new conversion action, wait 4-6 hours before uploading conversions for that conversion action."

Changed in 2026, and easy to miss

Google has moved offline conversion uploads off the Google Ads API. Its documentation states: "Starting June 15, 2026, offline conversions import and enhanced conversions for leads uploads will be migrated to the Data Manager API and blocked in the Google Ads API. Developer tokens that haven't sent a request between January 2026 through June 2026 will not be allowlisted for legacy access." That date has passed. If you built against the Google Ads API endpoint and have not migrated, check that your uploads are still landing.

Can you correct a conversion after the fact?

On Google, yes, for 55 days. Google states: "it is possible to adjust conversions and/or restate conversion values using conversion adjustments, up to 55 days from when the conversion was first recorded."

This matters more than it sounds for funnels with refunds, chargebacks or qualification steps. A deposit that reverses in week three can be restated on Google. On Meta, the equivalent mechanism is sending a corrected event, which brings you straight back into the seven day event_time window.

How long does TikTok accept events?

For offline events, 28 days to upload, with events older than 90 days rejected outright. For web events, TikTok publishes no maximum event_time age at all, which is a genuine documentation gap rather than an unlimited allowance.

"No, TikTok will not match and report on offline events that occurred 90 days ago. For offline events, you have 28 days to upload your Offline Event Set data. The maximum attribution window for click-through attribution (CTA) is 28 days, while the maximum attribution window for view-through attribution (VTA) is 7 days. This means that offline events beyond these attribution windows will not be matched to ads or displayed in the reporting."

TikTok, Events API 2.0 Offline FAQs. business-api.tiktok.com/portal/docs/events-api-v2-offline-faqs/v1.3. TikTok's developer portal displays no update date; read 14 August 2026.

For CRM events the defaults are narrower: TikTok states "the default attribution window for click-through attribution (CTA) is 7 days, while the default attribution window for view-through attribution (VTA) is 1 day."

TikTok's own advice is to stop batching altogether: "Although you can send a batch of events, it is highly recommended to send a single event at a time, as soon as the event is received on the advertiser's server." The Events API 2.0 endpoint accepts at most 1,000 events per request and is rate limited to 1,000 queries per second per advertiser account.

How long does a ttclid last?

TikTok ties it to your own setting rather than publishing a number: "The ttclid valid period is the same as your CTA window setting in Attribution Manager." Its help centre repeats the same framing: "Each Click ID is unique and adheres to the same CTA window configured in Attribution Manager."

The commonly repeated figure of seven days does not appear in any TikTok primary source we could reach, and the Attribution Manager article TikTok's own docs link to no longer exists. So the honest answer is: it depends on your ad group's click-through attribution window, which is selectable at 1, 7, 14 or 28 days. TikTok does give one concrete storage instruction: "The recommended storage TTL (time-to-live) is 28 days or more", and warns that ttclid "can be up to 1,000 characters long, so you need to ensure that you don't truncate it on your server."

The three platforms side by side

 Meta Conversions APIGoogle AdsTikTok Events API 2.0
Maximum event age on upload7 days, whole request rejected90 days with gclid, 63 days with customer data28 days for offline. Not published for web
Minimum delay before uploadNone statedWait 6 hours; 4 to 6 hours after creating a new conversion actionNone stated; TikTok recommends sending immediately
Retrospective correctionSend a corrected event, still inside 7 daysConversion adjustments, up to 55 daysNot documented
Deduplication supportevent_id plus event_name, 48 hour horizon. Not provided for business messagingOrder ID on the uploadEvent ID on the payload
Click identifierfbclid via _fbc; ctwa_clid for WhatsAppgclid, plus gbraid and wbraid on iOSttclid, up to 1,000 characters
Batch limitNot stated on the parameters pageGoverned by the upload API1,000 events per request, 1,000 QPS

Every cell above is sourced in the list at the foot of this page. Where a vendor publishes nothing, the cell says so rather than carrying an industry estimate.

Events that arrive inside the window

FlowTracker queues, filters and retries server-side conversions per platform, so a stale event never takes a whole batch down with it. Meta, Google Ads and TikTok, from one matched record.

Start 7 day free trial

Upload window versus attribution window

They are different clocks and they are set in different places. The upload window is enforced by the API. The attribution window is a setting on the campaign that decides whether a delivered conversion is credited. Both terms, and the click identifiers they apply to, are defined in the messaging ad attribution glossary.

PlatformClick-throughView-throughOther
Meta1 day or 7 day after a link click1 day after an impressionEngage-through: 1 day after a non-link click action
Google AdsDefault 30 days, settable 1 to 90 days depending on conversion sourceDefault 1 day, settable 1 to 30 daysEngaged-view: default 3 days, settable 1 to 30 days
TikTok1, 7, 14 or 28 days at ad group levelOff, 1 day or 7 daysSettings cannot be changed after the ad group is published

Meta's current terminology is worth noting because a lot of material still uses the old phrasing. Meta's own wording is: "Click-through: Counts events that occurred within 1-day or 7-day after a link click on your ad", "View-through: Counts events that occurred within 1-day after an impression of your ad", and "Engage-through: Counts events that occurred within 1-day after a non-link click action on your ad."

Google recommends caution at the short end: "Note that windows of at least 7 days are recommended, because they provide a richer set of conversion data." TikTok is stricter about changes: "Attribution settings cannot be changed once the ad group has been published. You'll have to create a new ad group to use a new Attribution window and Event count."

What changed in 2026 that you may have missed

Two things, both of which invalidate widely circulated advice.

Meta also notes that Aggregated Event Measurement is not a web-only concern: "Events sent to Meta via the Conversions API may also be processed in accordance with limits set by Aggregated Event Measurement."

Designing a messaging funnel around the tightest window

Meta's seven days is the binding constraint for almost every chat funnel, because chat funnels routinely take longer than a week to produce revenue. The answer is not to send late events; it is to send the right event on time.

  1. Send the in-conversation milestone while it is fresh. A qualified lead or a checkout initiation that happens on day two is a real event with a real event_time. It is inside the window and it is the signal the optimiser can actually learn from.
  2. Send the revenue event when it happens, if it happens inside seven days. Do not hold events to batch them weekly. Batching is exactly what pushes events past the cutoff.
  3. Filter before you send, and keep what you filtered. An event older than seven days should never reach Meta's endpoint. It should reach your own reporting, where it still counts, because the sale still happened.
  4. Keep the full-lifetime picture in your own database. A customer who converts on day 40 is invisible to Meta's optimiser and entirely visible to you, because the campaign and ad set were stored at click time on a page you control. That is the number to run the business on.
  5. Use the longer windows where they exist. Google's 90 days and 55 day adjustment allowance are genuinely useful for funnels with delayed qualification, and they are frequently left unused.

The general principle: the ad platform gets the freshest honest signal it can act on, and your own records carry the complete story. That division is what FlowTracker's attribution layer is built around, and it is why the click record is written before the app switch rather than reconstructed afterwards. If you are not sure whether a given payload will be accepted, the Conversions API payload validator checks the seven day rule and the rest in your browser.

Sources

Every link below was fetched and read on 14 August 2026. Where a vendor does not document something, this article says so rather than filling the gap with an estimate.

Meta, Server Event ParametersSource for the seven day event_time limit and whole-request rejection, the GMT requirement, the 48 hour deduplication horizon and the 5 minute browser preference. Page shows "Updated: Feb 12, 2026". developers.facebook.com/documentation/ads-commerce/conversions-api/parameters/server-event. Checked 14 August 2026.
Meta Business Help Centre, About attribution models and attribution settingsSource for the click-through, view-through and engage-through window definitions. No update date is displayed on Business Help Centre articles. facebook.com/business/help/460276478298895. Read 14 August 2026.
Meta Business Help Centre, About Meta's Aggregated Event MeasurementSource for the removal of the eight event per domain requirement and for the note that Conversions API events may also be processed under Aggregated Event Measurement limits. facebook.com/business/help/721422165168355. Read 14 August 2026.
Google Ads Help, Offline conversion imports FAQsSource for the 90 day and 63 day upload limits, the 55 day conversion adjustment allowance, and the 12 hour re-upload guidance. Google Ads Help articles display no update date. support.google.com/google-ads/answer/10029210. Read 14 August 2026.
Google Ads Help, Set up offline conversions using Google Click IDSource for the 4 to 6 hour wait after creating a new conversion action. support.google.com/google-ads/answer/7012522. Read 14 August 2026.
Google Ads Help, About offline conversion importsSource for the 15 June 2026 migration of offline conversion imports to the Data Manager API. support.google.com/google-ads/answer/2998031. Read 14 August 2026.
Google Ads Help, About conversion windowsSource for the default and selectable click-through, view-through and engaged-view conversion windows, and for the recommendation to use windows of at least 7 days. support.google.com/google-ads/answer/3123169. Read 14 August 2026.
Google Ads API, Manage offline conversionsSource for the gclid, gbraid and wbraid parameter definitions and the SHA-256 normalisation requirements. Page shows "Last updated 2026-08-03 UTC". developers.google.com/google-ads/api/docs/conversions/upload-offline. Checked 14 August 2026.
TikTok, Events API 2.0 Offline FAQsSource for the 28 day offline upload allowance, the 90 day rejection, and the 28 day CTA and 7 day VTA maximums. TikTok's developer portal displays no update date. business-api.tiktok.com/portal/docs/events-api-v2-offline-faqs/v1.3. Read 14 August 2026.
TikTok, Events API for CRM FAQsSource for the 7 day CTA and 1 day VTA defaults on CRM events. business-api.tiktok.com/portal/docs/faqs/v1.3. Read 14 August 2026.
TikTok, Send TikTok Click ID (ttclid)Source for the 28 day recommended storage TTL and the 1,000 character length warning. business-api.tiktok.com/portal/docs/send-tiktok-click-id-ttclid/v1.3. Read 14 August 2026.
TikTok, Events API 2.0 overviewSource for the 1,000 events per request limit, the 1,000 QPS rate limit and the recommendation to send single events immediately. business-api.tiktok.com/portal/docs/events-api-2.0/v1.3. Read 14 August 2026.
TikTok Ads Help, Attribution settings at the ad group levelSource for the selectable 1, 7, 14 and 28 day click-through windows and the statement that settings cannot be changed after publication. Page shows "Last updated: November 2025". ads.tiktok.com/help/article/attribution-settings-at-the-ad-group-level. Read 14 August 2026.
TikTok Ads Help, TikTok Click IDSource for "Each Click ID is unique and adheres to the same CTA window configured in Attribution Manager." Page shows "Last updated: September 2025". ads.tiktok.com/help/article/tiktok-click-id. Read 14 August 2026.
Documented gapsTikTok publishes no maximum event_time age for web events, and no concrete number of days for ttclid validity beyond "the same as your CTA window setting". The frequently repeated figure of seven days for ttclid does not appear in any TikTok primary source we could reach, so it is not stated as fact anywhere on this page.

Last reviewed 14 August 2026

Server-Side Attribution

Send every conversion inside the window

FlowTracker matches the conversion, picks the right action source and delivers it to Meta, Google Ads and TikTok while each platform will still accept it.

FAQ

Server-Side Attribution, answered

How old can an event be when you send it to the Meta Conversions API?

At most 7 days. Meta states: "The event_time can be up to 7 days before you send an event to Facebook. If any event_time in data is greater than 7 days in the past, we return an error for the entire request and process no events." One stale event fails the whole batch, so filter before you send.

How far back can you upload an offline conversion to Google Ads?

Ninety days with a click identifier, or 63 days when matching on hashed customer data. Google states: "You can upload any conversion with GCLID so long as it's no longer than 90 days. You can upload any conversion with personally identifiable information for enhanced conversions so long as it's no longer than 63 days." Google frames the 90 days as a retention limit on the click identifier itself.

Is there a minimum wait before uploading a Google Ads conversion?

Yes. Google's guidance is to wait 6 hours if using scheduled upload, because its system may not have processed the click yet, and to wait 4 to 6 hours after creating a new conversion action before uploading conversions against it.

How long does TikTok accept events?

For offline events, 28 days to upload, and TikTok states it will not match events that occurred 90 days ago. For CRM events the default click-through window is 7 days. For web events TikTok publishes no maximum event_time age at all, which is a documentation gap rather than an unlimited allowance.

How long is a ttclid valid?

TikTok does not publish a number of days. It states "The ttclid valid period is the same as your CTA window setting in Attribution Manager", and the ad group click-through window is selectable at 1, 7, 14 or 28 days. TikTok separately recommends a storage TTL of 28 days or more, and warns that ttclid can be up to 1,000 characters.

What is the difference between an upload window and an attribution window?

An upload window is how long you have to physically deliver the event before the API refuses it. An attribution window is how long after a click the platform will credit a conversion. They are set in different places and they can differ widely: Google's default click-through attribution window is 30 days while Meta's upload window is 7 days.

Can you correct a conversion after uploading it?

On Google Ads, yes: "it is possible to adjust conversions and/or restate conversion values using conversion adjustments, up to 55 days from when the conversion was first recorded." On Meta the equivalent is sending a corrected event, which puts you back inside the 7 day event_time window. TikTok does not document a correction mechanism for this.

Do I still need to prioritise 8 conversion events per domain on Meta?

No. Meta's Aggregated Event Measurement page states: "You no longer need to prioritize 8 conversion events per domain for web conversion optimization, and you don't need to turn on value sets in order to use value optimization." The Aggregated Event Measurement tab has been removed from Events Manager.

How should a chat funnel be designed around a 7 day upload window?

Send the in-conversation milestone while it is fresh rather than waiting for revenue, send the revenue event immediately if it lands inside 7 days, filter older events out before they reach the endpoint so they cannot fail a whole batch, and keep the full-lifetime picture in your own database where no upload window applies.

Keep reading