Skill 104 · Resolving Ingestion Warnings
Subchapter 104.6
references/fixing-event-dropped-too-old.mdMarkdown3 KBView on GitHub
An event was dropped by policy: its timestamp is valid but older than the team’s configured drop_events_older_than threshold.
Category event, severity info: this is an intentional, team-configured drop — the question is whether the configuration matches reality.
The threshold exists to keep stale or replayed data from skewing analytics. The drop is correct when what’s arriving really is junk (replayed traffic, a runaway retry loop resending week-old batches).
It’s silent data loss when legitimate late data hits a too-tight threshold:
posthog:execute-sql: SELECT timestamp, details FROM system.ingestion_warnings WHERE type = 'event_dropped_too_old' AND timestamp > now() - INTERVAL 7 DAY ORDER BY timestamp DESC LIMIT 20. The details JSON carries the event name, distinctId, eventTimestamp, ageInSeconds, and dropThresholdSeconds — so you can see exactly how late the data was and what the bar is.$lib on the affected persons’ other events) → offline queues being deleted.The threshold is a team-wide setting (drop_events_older_than, minimum 1 hour, empty = no restriction — read the current value with posthog:project-get, change it via posthog:project-settings-update or project settings in the UI). Changing it affects all ingestion for the project — propose the change to the user and let them decide, don’t adjust it on your own:
Dropped events are gone — an import that ran into the threshold must be re-run after the setting change.
Re-run the flow or import, then re-query system.ingestion_warnings with posthog:execute-sql (filter type = 'event_dropped_too_old', timestamp after your fix) — no new occurrences (for mobile, judge over several days, since offline flushes are sporadic) — and confirm the late events now appear with their original timestamps.