Bruin CLI Step 2 of 7

PostHog Product Analytics Pipeline with BigQuery

1) Know the one limit that matters

PostHog's /events REST API - the endpoint ingestr reads - does not return a complete history for a multi-day window, and gives no indication that anything is missing. Measured against one project, --full-refresh each time, three repeats per window, with deterministic results:

WindowDaysEvents in PostHogEvents loadedDays actually covered
3 days31,6795451
7 days73,0902,6197, but 15% short
31 days3116,9256731
95 days9542,3541,5514
205 days, sparse205141141all - complete
one day1exactexact93 days tested, all exact

The loss is not a function of how wide the window is. A three-day window returned a single day while a seven-day window spanned all seven, and a 205-day window over sparse data returned everything - so the limit tracks the volume of events in the window, not its width. There is no usable rule to exploit, because the seven-day case looks complete and is 15% short.

Warning

A single day is the only window that is reliably exact. Backfill events a day at a time, always. This is not a performance tip - a wider window on a busy project silently drops most of your history with no error and no warning in the run output.

Sign up to our newsletter

Practical updates on open-source data pipelines, AI analysts, governance, and what we are shipping at Bruin.

The signup form is hosted by Brevo. Accept cookies to load it.