Skill 104 · Resolving Ingestion Warnings
Subchapter 104.5
references/fixing-event-dropped-by-transformation.mdMarkdown3 KBView on GitHub
A transformation configured by the team (Data pipelines → Transformations) processed the event and dropped it.
Category transformation, severity info: PostHog did exactly what the team’s own configuration asked — the question is whether that configuration matches intent.
Transformations drop events on purpose all the time — bot filtering, internal-traffic exclusion, PII scrubbing gone nuclear. The warning exists to make that visible, because from the SDK’s side dropped events look identical to delivered ones.
It becomes a problem when:
posthog:execute-sql: SELECT timestamp, details FROM system.ingestion_warnings WHERE type = 'event_dropped_by_transformation' AND timestamp > now() - INTERVAL 7 DAY ORDER BY timestamp DESC LIMIT 20. The details JSON names the exact transformationId and transformationName plus the dropped event and distinctId — no guessing which transformation did it. Warnings are debounced per transformation, so each entry represents a stream of drops, not one.posthog:cdp-functions-list to find it by the name in the details, or Data pipelines → Transformations in the UI) and read its filters and source; posthog:cdp-functions-logs-retrieve shows its recent execution logs. Ask “should a <event name> from <this kind of user> match this?”posthog:advanced-activity-logs-list scoped to the transformation shows who changed what, when).The transformation is team-owned configuration — propose the change and let the user decide, since edits affect all matching ingestion from that point on:
Dropped events are gone — fixing the filter restores the flow from now on, it doesn’t recover history.
Re-run the affected flow, re-query system.ingestion_warnings with posthog:execute-sql (filter type = 'event_dropped_by_transformation', timestamp after your fix) — the drop count for that transformation should fall to just the intended matches — and confirm the previously-missing events arrive while known-junk (bots, internal traffic) is still dropped.