Validate Event Properties in PostHog
Inspect real event payloads before selecting breakdowns or filters. A property’s name does not establish its type, completeness or meaning at the moment the event happened.
Before you start: Have representative events, the instrumentation contract and a known test journey. Include both successful and failed actions in the validation sample.
Worked example: A report_saved event includes plan, project_id and save_source. Verify whether plan reflects the event-time account tier and whether save_source is present on both web and server events.
Step-by-step guide
Choose the decision fields
List the properties required for the report and what each means. Separate event context from mutable person properties.
Inspect actual events
Open representative event records and compare payloads across platforms. Note absent keys, null values and inconsistent spellings rather than reading only the most recent successful sample.
Check value types
Confirm whether each field is a string, number or boolean. Test how a chart filter treats missing values and numeric-looking strings.
Verify historical coverage
Find when the property began appearing and whether a deployment changed its meaning. Do not compare an old period without the field to a new fully instrumented period.
Build a diagnostic breakdown
Create a small trend or breakdown that exposes unexpected values. Reconcile a known journey against the report before using it for a consequential decision.
Document the contract
Save the field meaning, source and coverage date alongside the metric. Assign instrumentation fixes before publishing a misleading segment comparison.
Common mistakes
Latest sample equals full coverage
A property can work today and be missing historically. Check its start date.
Person state mistaken for event context
Current account details may not describe the original event. Choose the appropriate property.
Strings treated as numbers
Type mismatches distort filtering and aggregation. Validate raw values.
Tips
Include a missing-value bucket in diagnostic reviews.
Compare client and server payloads for the same action.
Record semantics changes even when property names stay unchanged.
Sources and verification
Based on product documentation checked on 2026-10-24. This is a documentation-based guide, not a hands-on benchmark. Features and availability can change.