Analytics counts off for past 2 weeks

I was just checking on my download statistics and for the past 2 weeks they have fallen off by approximately half. When I look in Google Analytics at the episode files being registered there the numbers are in line with what I would expect. Is this another instance of miscounted analytics? Has anyone else run into this?

I am just wondering if a recent release has a regression along the lines of what happened last year when the IP addresses were being masked and misrepresenting the number of unique downloads. I’m happy to provide whatever diagnostic information would be helpful.

I am running Podlove 2.9.2 on the latest release of Wordpress and PHP 7.x. The sties in question are dataengineeringpodcast.com and pythonpodcast.com

Thank you for your help!

Possibly an issue in this commit https://github.com/podlove/podlove-publisher/commit/0461215d5e674eba23209bf216838ba9b5ea1e7a, which was released in 2.9.2, 11 days ago. I will take a closer look.

/e: can’t see an issue in the commit though, in fact getenv() supposedly is the better/safer way to access these values

Thank you for pointing that out, it’s definitely a possibility. I will try to find some time this weekend to dig into that.

Anecdotally, looking at the downloadintent records it seems that they are no longer receiving the geo information, which may be playing into an incorrect aggregation during the cleanup step.

MariaDB [dataengineering]> select * from wp_podlove_downloadintent ORDER BY accessed_at DESC LIMIT 10;
+--------+---------------+---------------+----------------------------------+---------------------+--------+---------+-------------+------+------+-------------------------+
| id     | user_agent_id | media_file_id | request_id                       | accessed_at         | source | context | geo_area_id | lat  | lng  | httprange               |
+--------+---------------+---------------+----------------------------------+---------------------+--------+---------+-------------+------+------+-------------------------+
| 643008 |         15660 |           467 | 32bd0f4e4b80dc917396ebc70534160a | 2019-09-06 18:40:30 | feed   | mp3     |        NULL | NULL | NULL | bytes=11008-32767999    |
| 643007 |         15660 |           467 | 32bd0f4e4b80dc917396ebc70534160a | 2019-09-06 18:40:29 | feed   | mp3     |        NULL | NULL | NULL | bytes=32768000-32908855 |
| 643006 |         15660 |           467 | 32bd0f4e4b80dc917396ebc70534160a | 2019-09-06 18:40:28 | feed   | mp3     |        NULL | NULL | NULL | bytes=0-1               |
| 643005 |         14025 |           473 | 11fecc1076b29ded0c57accb1699feca | 2019-09-06 18:40:03 | feed   | mp3     |        NULL | NULL | NULL | NULL                    |
| 643004 |         15798 |           460 | 3f030784611d35e98cad348babe3f92d | 2019-09-06 18:36:52 | feed   | mp3     |        NULL | NULL | NULL | bytes=2452534-49993651  |
| 643001 |          7763 |           477 | 3d67e85b4a73604154c39af6c7283ce4 | 2019-09-06 18:33:22 | feed   | mp3     |        NULL | NULL | NULL | bytes=0-1               |
| 643002 |          7763 |           475 | 3d67e85b4a73604154c39af6c7283ce4 | 2019-09-06 18:33:22 | feed   | mp3     |        NULL | NULL | NULL | bytes=0-1               |
| 643003 |          7763 |           473 | 3d67e85b4a73604154c39af6c7283ce4 | 2019-09-06 18:33:22 | feed   | mp3     |        NULL | NULL | NULL | bytes=0-1               |
| 643000 |          7763 |           477 | 3d67e85b4a73604154c39af6c7283ce4 | 2019-09-06 18:33:14 | feed   | mp3     |        NULL | NULL | NULL | bytes=0-1               |
| 642999 |         15363 |           469 | 691c850c2bdc3c08c922e22759a5e1a3 | 2019-09-06 18:30:40 | feed   | mp3     |        NULL | NULL | NULL | bytes=0-                |
+--------+---------------+---------------+----------------------------------+---------------------+--------+---------+-------------+------+------+-------------------------+
10 rows in set (0.62 sec)

MariaDB [dataengineering]> select * from wp_podlove_downloadintent WHERE accessed_at < '2018-08-10' ORDER BY accessed_at DESC LIMIT 10;
+--------+---------------+---------------+----------------------------------+---------------------+--------+---------+-------------+---------+----------+-------------------------+
| id     | user_agent_id | media_file_id | request_id                       | accessed_at         | source | context | geo_area_id | lat     | lng      | httprange               |
+--------+---------------+---------------+----------------------------------+---------------------+--------+---------+-------------+---------+----------+-------------------------+
| 145909 |          4188 |           209 | DSGVOaecf1edcbadd30d0c692305b582 | 2018-08-09 23:58:56 | feed   | mp3     |          10 | 34.0544 | -118.244 | bytes=10717-60971549    |
| 145908 |          4188 |           209 | DSGVO9c84e63e30dd9f303caa2c2f345 | 2018-08-09 23:58:54 | feed   | mp3     |          10 | 34.0544 | -118.244 | bytes=0-1               |
| 145907 |          4188 |           209 | DSGVO37dfb10c8fd79fa4bda0e051ccd | 2018-08-09 23:58:13 | feed   | mp3     |         108 | 37.3388 | -121.891 | bytes=0-1               |
| 145906 |          4491 |           209 | DSGVOa99ca51cde684bfb1b9baf64c51 | 2018-08-09 23:57:51 | feed   | mp3     |           6 | 41.8483 | -87.6517 | NULL                    |
| 145905 |          3719 |           179 | DSGVO9d348a74f97c399132ebd971032 | 2018-08-09 23:52:24 | feed   | mp3     |         108 | 37.3388 | -121.891 | bytes=14302622-34314476 |
| 145904 |           261 |           209 | DSGVO6a593b72914a4ccb2c6d52e8cc1 | 2018-08-09 23:52:22 | feed   | mp3     |         124 | 55.7522 |  37.6156 | NULL                    |
| 145903 |          3719 |           179 | DSGVO9d348a74f97c399132ebd971032 | 2018-08-09 23:52:21 | feed   | mp3     |         108 | 37.3388 | -121.891 | bytes=12762814-34314476 |
| 145902 |          3719 |           179 | DSGVO9d348a74f97c399132ebd971032 | 2018-08-09 23:52:14 | feed   | mp3     |         108 | 37.3388 | -121.891 | bytes=16347-34314476    |
| 145901 |          3719 |           179 | DSGVOf478181900ac8ba5ca2b2b61549 | 2018-08-09 23:52:12 | feed   | mp3     |         108 | 37.3388 | -121.891 | bytes=0-1               |
| 145900 |            50 |           209 | DSGVO709d0d78218001fb3eb6e4c2c36 | 2018-08-09 23:45:22 | feed   | mp3     |          54 | 39.7392 | -104.985 | NULL                    |
+--------+---------------+---------------+----------------------------------+---------------------+--------+---------+-------------+---------+----------+-------------------------+
10 rows in set (0.44 sec)

geo information is purely optional and has no effect on aggregation

I just updated my Nginx config to pass the real-ip header from Cloudflare to see if that fixes my issue. I will report back in a few days after letting that sit for a bit.

Thank you again for pointing me at the change in 2.9.2

So, I’m still seeing the low download counts after updating the headers from Nginx and passing them to the PHP layer. I’m not sure if it’s just that my previous counts were elevated, or if there’s still something wrong with my setup or with Podlove. I’ll hopefully have some time in the next week or so to dig a bit deeper, but if anyone has suggestions in the meantime I would appreciate it.

This might also be a good opportunity to bring up an earlier feature request to allow for incorporating other tracking platforms, such as Podtrac, alongside the Podlove analytics as a way of getting some confirmation of the analytics.

Since 2.9.0 there is support for Google Analytics (https://github.com/podlove/podlove-publisher/pull/1058)

Hi Eric,

I am currently using that feature and appreciate having it available. What I was referring to previously is having support for nested redirects to be able to use the builtin Podlove analytics in conjunction with systems such as Blubrry or Podtrac for download analytics. My assumption is that it should be possible, and I may take a look at adding it to the publisher if I can find the time, but if anyone else has taken a look at adding that feature it would be helpful to get some pointers.