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."
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."
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."
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 API | Google Ads | TikTok Events API 2.0 | |
|---|---|---|---|
| Maximum event age on upload | 7 days, whole request rejected | 90 days with gclid, 63 days with customer data | 28 days for offline. Not published for web |
| Minimum delay before upload | None stated | Wait 6 hours; 4 to 6 hours after creating a new conversion action | None stated; TikTok recommends sending immediately |
| Retrospective correction | Send a corrected event, still inside 7 days | Conversion adjustments, up to 55 days | Not documented |
| Deduplication support | event_id plus event_name, 48 hour horizon. Not provided for business messaging | Order ID on the upload | Event ID on the payload |
| Click identifier | fbclid via _fbc; ctwa_clid for WhatsApp | gclid, plus gbraid and wbraid on iOS | ttclid, up to 1,000 characters |
| Batch limit | Not stated on the parameters page | Governed by the upload API | 1,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.
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.
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.
| Platform | Click-through | View-through | Other |
|---|---|---|---|
| Meta | 1 day or 7 day after a link click | 1 day after an impression | Engage-through: 1 day after a non-link click action |
| Google Ads | Default 30 days, settable 1 to 90 days depending on conversion source | Default 1 day, settable 1 to 30 days | Engaged-view: default 3 days, settable 1 to 30 days |
| TikTok | 1, 7, 14 or 28 days at ad group level | Off, 1 day or 7 days | Settings 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 removed the eight event per domain prioritisation. Meta's Aggregated Event Measurement page now 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." It adds that "The Aggregated Event Measurement tab in Meta Events Manager has been removed because you no longer need to configure your web events."
- Google moved offline uploads to the Data Manager API. The migration date of 15 June 2026 has passed, and Google states the legacy path is "blocked in the Google Ads API".
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.
- 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. - 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.
- 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.
- 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.
- 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.
Last reviewed 14 August 2026