I installed Matomo to try and get some better insight into clicks on my outbound email campaign. I am using unique utm tags, but can’t separate bot clicks from human ones. My built in (non-matomo) website analytics show some interesting stats on page dwell time, but won’t let me drill down and see individual requests. I installed some bot filtering plugins in Matomo which hopefully will help but don’t see any reports on page dwell time. I’m not really sure how to go about getting the data i want. I would ideally like some kind of report that shows “inbound link contained utm code” + “bot filtering”. Is there a way to do this?
Bots are becoming increasingly sophisticated, particularly with advances in AI and browser automation. Some automated visitors can execute JavaScript and behave in ways that make them difficult to distinguish from genuine visitors.
One pattern we sometimes see with automated traffic is actions occurring within milliseconds of arriving on a page, which would be unusual for a genuine visitor. However, more sophisticated bots can also introduce delays and remain on a page longer to appear more human.
The Tracking Spam Prevention plugin is the recommended first line of defence, and we’re continuing to improve its ability to identify and exclude this type of traffic.
As an additional measure, you could implement some JavaScript on your website that sets an Action Custom Dimension after a visitor has remained on the page for a certain period, for example three seconds. You could then use this Custom Dimension within a Segment to analyse traffic that passed this additional check.
I wouldn’t consider the three-second threshold definitive proof that a visitor is human, as a sophisticated bot could also pass it. However, it can provide another useful signal when combined with other characteristics such as unusually fast interactions, user agents, IP addresses, locations and browsing patterns.
Matomo can handle this by using UTM parameters to segment your email traffic and the Visits Log to inspect individual visits. Enable the heartbeat timer for more accurate dwell-time data, and exclude identified bots from your segment. For anything missed by bot filtering, server logs can provide a useful comparison.
@cartergray24 @Jason_1282 Thank you for your suggestions. I ended up creating a custom dimension and defining events for page interactions and visibility time. So far this seems to be working well.
Good approach. Combining interaction events with visibility time should give you a much cleaner signal than relying on dwell time alone. It would be interesting to see how well the custom dimension filters the automated clicks over a larger campaign.