Skill 103 · Querying PostHog Data
Subchapter 103.63
references/taxonomy-dynamic-properties.mdMarkdown3 KBView on GitHub
Some properties follow dynamic naming patterns with IDs or keys.
These are not returned by the read-data-schema tool because they are generated per survey, feature flag, or product tour.
If a user’s question involves these features, construct the property name using the patterns below.
Pattern | Type | Description
$survey_dismissed/{survey_id} | Boolean | Whether a person dismissed a specific survey
$survey_responded/{survey_id} | Boolean | Whether a person responded to a specific survey
$feature_enrollment/{flag_key} | Boolean | Whether a person opted into an early access feature
$feature_interaction/{feature_key} | Boolean | Whether a person interacted with a specific feature
$product_tour_dismissed/{tour_id} | Boolean | Whether a person dismissed a product tour
$product_tour_shown/{tour_id} | Boolean | Whether a person was shown a product tour
$product_tour_completed/{tour_id} | Boolean | Whether a person completed a product tour
Pattern | Type | Description
$feature/{flag_key} | String | The feature flag value for a specific flag
Because these properties are not discoverable via the read-data-schema tool, you must know the ID or key.
Use these queries to find the IDs, then construct the property name.
SELECT id, name, type
FROM system.surveys
ORDER BY created_at DESC
LIMIT 20Then query person properties like $survey_dismissed/{id} or $survey_responded/{id}.
SELECT id, key, name, rollout_percentage
FROM system.feature_flags
WHERE NOT deleted
ORDER BY created_at DESC
LIMIT 20Then query event properties like $feature/{key} or person properties like $feature_enrollment/{key}.
SELECT id, name, feature_flag_id
FROM system.early_access_features
ORDER BY created_at DESC
LIMIT 20Then look up the flag key and query $feature_enrollment/{flag_key}.
The read-data-schema tool’s event property results automatically filter out these dynamic patterns
(and other noisy properties) to keep results clean:
Pattern | Reason
$feature/{flag_key} | Feature flag values — one per flag, high cardinality
$feature_enrollment/{flag_key} | Early access enrollment — dynamic per flag
$feature_interaction/{feature_key} | Feature interaction tracking — dynamic per feature
$product_tour_* | Product tour lifecycle — dynamic per tour
survey_dismiss*, survey_responded* | Survey tracking — dynamic per survey
$set, $set_once | Person property setting, not analytics properties
$ip | Privacy-related
__* | Flatten-properties-plugin artifacts
phjs* | Internal SDK metadata