I’m curious to know how people store extra data from 3rd party enrichment sources in Matomo. I’m aware of Matomo’s custom dimensions and variables but, for a few reasons, it’s not clear to me that it makes sense to store something like a social media links related to a visitor in a custom dimension because I’ll never actually filter for this URL within Matomo (a key reason for storing in a custom dimension) and if I end up programming my system to store data this way the database will swell in size at it continues to store the same long url to the same external social media site each time that same visitors visits — which could be thousands of times, instead of just mapping this extra data to an “enrichment” table.
As I see it, there are actually three ways I could do this and below are the pros and cons of each. I’d love some feedback before pulling the trigger on one.
- Everything in one Custom “Enrichment” Table:
- What: Just create a custom table called “enrich” (or something) and then just insert a key to proper enrichment data for a visitor based on their IP address
- Cons: Slower to have to lookup this data for each visit, instead of just having it handy inside the row for that visit in a custom dimension
- Pros: Database size remains small as extra meta information is centralized for visitors in one table and not repeated. .
- Everything in Custom Dimensions:
- What: Every extra piece of data gets a unique custom dimension and is inserted here
- Con: Database size becomes large which lots of repeated enrichment data (i.e. a visitor may visit thousands of times and each time their data storage swells because the enrichment data is repeated each time instead of just using the
- Pro 1: Can filter meta data by custom dimension inside Matomo.
- Pro 2: Possibly faster queries possible.
- Hybrid Approach
- What: Some in Custom Dimension + Some in Enrichment Table
- Con: Complexity
- Pro: Ability to filter some important data inside Matomo we would like to be able to filter by and then offload the rest to a lookup table (the stuff we won’t want to filter by, like social media link urls) into a lookup table to keep total data storage size smaller.