Background
We have two custom .enrichment plugins added to the Analytics timeline:
ContextPlugin (conforms to Plugin) — modifies event context (adds device_id, OS name)
PropertyPlugin (conforms to EventPlugin) — reorganizes flat properties into categorized structure
Both plugins are added immediately after Analytics initialization.
In production, we observed a single event arriving at our server with raw (untransformed) properties and context, while events tracked before and after that event from the same user were correctly enriched.
This is not data loss (the event was delivered) and not corrupted JSON — it is a valid event payload, but the enrichment plugins appear to have been completely bypassed for that one event.
Expected Tracking
Raw input to Analytics:
{
"properties": {
"key_1": "value",
"key_2": "value"
}
}
Expected after enrichment:
{
"properties": {
"custom_category_1": {
"key_1": "value"
},
"custom_category_2": {
"key_2": "value"
}
}
}
What we actually got is the raw input instead of the enriched one.
Platform
- Library version: 1.5.11
- Platform: iOS (iPadOS 17.7.10 in the observed case)
- Device: iPad 7th gen
- Custom API host: Yes (custom apiHost and cdnHost)
- Integrations: None (custom destination)
Additional context
Background
We have two custom
.enrichmentplugins added to the Analytics timeline:ContextPlugin(conforms toPlugin) — modifies event context (adds device_id, OS name)PropertyPlugin(conforms toEventPlugin) — reorganizes flat properties into categorized structureBoth plugins are added immediately after
Analyticsinitialization.In production, we observed a single event arriving at our server with raw (untransformed) properties and context, while events tracked before and after that event from the same user were correctly enriched.
This is not data loss (the event was delivered) and not corrupted JSON — it is a valid event payload, but the enrichment plugins appear to have been completely bypassed for that one event.
Expected Tracking
Raw input to Analytics:
{ "properties": { "key_1": "value", "key_2": "value" } }Expected after enrichment:
{ "properties": { "custom_category_1": { "key_1": "value" }, "custom_category_2": { "key_2": "value" } } }What we actually got is the raw input instead of the enriched one.
Platform
Additional context