It’s more likely that GA would be blocked by adblocks. But it doesn’t explain the big difference on direct. Do you have maybe server access logs that you could compare for a given day? Let’s start with page views for particular URLs. It should be fairly easy to get a no. of access logs containing given URL and a report showing no. of events for given URL.
In general, we should first get to the point where we have the right numbers and in this case your server / backend would be the way to go. Based on that we can start searching what might be wrong with the implementation.
I’d also try to compare specific segments. Maybe there’s one configuration / some bot, that inflates the results. In Piwik PRO you can check also session logs to see all the details.
It might be caused by a different approach to traffic classification. Google takes into account previous sessions. If the session is from a direct entry but there was a previous session within a timeout period then the traffic source from the previous session is assigned to the current session.
What is your current consent / cookies / session id configuration? You can check it in the website settings. Are you using both cookie id as well as session id? Based on your screenshot it looks like some of the heartbeats created new sessions.
I’m trying to check if, for some reason, heartbeat requests are sent after the session timeout. I’d create such a segment to check if there are many sessions without even a single page view (for the specified date range including time before and after disabling the heartbeat):
Ok, I’d also try with different thresholds, e.g. less than 1, less than 3, etc. Such big difference in no. of sessions should be clearly visible in the session log. I assume that there are plenty of sessions with just a few events.
Nevertheless, I created a new GA4 property few days ago.
And, I’m observing better results…
Maybe it is linked to the fact that my first property is using user_id tracking (badly implemented?)…
But, I’m also thinking that when I created my first property, at the begining of GA4, the gtag code was not working properly…
So, Piwik Pro stays my source of truth.
GA4 is a backup (in progress).