Skip to main content

Download Tracking

What Download Tracking Does

Benecaster’s download proxy gives you per-episode download counts, a breakdown of which podcast apps your listeners use, and — when GeoIP is enabled — the countries and regions your audience is coming from. It does this without Benecaster ever touching your audio files: the proxy issues a 302 redirect to your existing hosting URL and counts the hit on the way through.

This feature is available on every plan, including Free. You do not need a license key to use it.

How the 302 Proxy Works

When the download proxy is enabled, Benecaster rewrites episode enclosure URLs in authenticated subscriber feeds. Instead of pointing directly to your audio host, those URLs become:

/benecaster-download/{episode_id}/?token=...

When a podcast app fetches that URL, Benecaster:

  1. Validates the token and identifies the subscriber and their tier
  2. Logs the download: episode, show, token, subscriber, tier, hashed IP address, and byte-range (from the HTTP Range header, so individual chapter scrubs count separately from full plays)
  3. Issues a 302 Found redirect to the original audio URL on your host

Your audio host serves the file. Benecaster never touches the audio bytes. Your CDN bandwidth costs, delivery SLAs, and hosting setup are completely unchanged.

Public feeds are not affected. The public RSS feed (for non-subscribers, podcast directories) continues to use your original audio URL. Download counts from public feed listeners are only captured when they happen to pass through the proxy — which they won’t, because public feed URLs are never rewritten. If you want counts from public listeners, there is no workaround beyond using a podcast hosting platform that provides its own analytics.

Why Use the Download Proxy

The download proxy is for podcasters who want to understand their audience beyond raw subscriber counts.

What you get:

  • Per-episode download counts — see which episodes perform best
  • Podcast app breakdown — know whether your audience is on Apple Podcasts, Overcast, Pocket Casts, or something else
  • Country and region data — understand where your listeners are (requires GeoIP setup, see below)
  • Tier-level data — see download patterns broken down by membership tier

Without the proxy, you have no visibility into download activity. Your audio host may provide aggregate download counts, but Benecaster won’t know which subscribers are actively listening, which episodes get replayed, or how listening patterns vary across tiers.

When to Skip It

The proxy is opt-in for a reason. Before enabling it, consider:

Server load. Every episode download becomes a WordPress request. For a show with frequent releases and a large active subscriber base, this adds meaningful load. See Will Benecaster put extra load on my server? →

Disk space. The download log grows with subscriber count and episode frequency — from a few megabytes per year for a small show to over 100MB per year at 5,000+ subscribers. See How much disk space does Benecaster need? →

You already have hosting analytics. If your audio host provides download stats that meet your needs, the proxy may not add enough to justify the overhead.

The proxy is most valuable when you want per-subscriber or per-tier insight — your audio host can tell you how many downloads an episode got, but not which membership tier those listeners are on.

Enabling the Download Proxy

  1. Go to Settings → Tools.
  2. Find the Download Proxy section.
  3. Toggle Enable download proxy on.
  4. Save settings.

From this point forward, authenticated subscriber feeds will use proxy URLs. Existing cached feed copies in your subscribers’ podcast apps will refresh on their next sync cycle (typically within 24 hours).

There is no subscriber-visible change. The redirect is transparent — podcast apps follow 302s automatically, and playback is unaffected.

What Gets Logged

Each download records: which episode was downloaded, which show it belongs to, which subscriber triggered the request, their membership tier at the time, and whether it was a partial download (a chapter scrub) or a full play.

IP addresses are never stored in readable form. Benecaster stores a one-way fingerprint of the address — enough to detect duplicate requests within the same session, but not enough to identify or trace the listener. The fingerprint is unique to your installation, so it can’t be matched against external data.

Podcast App Detection

Benecaster identifies the podcast app from the User-Agent header of each request. Recognized apps:

Apple Podcasts, Overcast, Pocket Casts, Spotify, Castro, Castbox, Podcast Addict, Podverse, AntennaPod, Breaker, Stitcher, TuneIn, Amazon Music, Audible, iHeartRadio, Google Podcasts, YouTube, curl, wget, and a generic Browser bucket.

Any user-agent that does not match a known pattern appears as Other in the dashboard.

GeoIP: Country and Region Data

GeoIP enrichment is a separate opt-in feature that adds country and region data to each download log row. It uses a local copy of the MaxMind GeoLite2-City database — lookups happen on your server, not against an external API.

What gets stored: Country and region only — no city, no postal code, no coordinates.

When a subscriber polls their feed for the first time after GeoIP is enabled, their country and region are recorded against their subscription. This happens once per subscriber — it captures where they were when they first connected, not an ongoing location trail.

Setting up GeoIP

Step 1 — Create a MaxMind account

GeoLite2 is free, but MaxMind requires a (also free) account to download the database. Go to maxmind.com and create an account.

Once registered, go to My Account → Manage License Keys and generate a new license key. Copy it — you’ll paste it into Benecaster next.

Step 2 — Add your license key in Benecaster

  1. Go to Settings → Tools → GeoIP Database.
  2. Paste your MaxMind license key into the License Key field.
  3. Click Save, then click Update now.

Benecaster downloads the GeoLite2-City database file to your server and activates GeoIP enrichment immediately. The initial download is roughly 60–70 MB and extracts to around 150–200 MB on disk.

Step 3 — Automatic updates

MaxMind updates GeoLite2 databases on the first Tuesday of each month. Benecaster schedules a monthly WordPress cron job to download and replace the database automatically. You do not need to do anything to keep it current.

To force an immediate refresh at any time, click Update now in Settings → Tools → GeoIP Database.

Privacy Guarantee

Raw IP addresses are never stored at any point in the GeoIP lookup process. The address is used in memory to perform the lookup, the country and region are recorded, and the address is immediately discarded. The session fingerprint described in the What Gets Logged section is generated separately and cannot be used to reconstruct the original address.

See also: GDPR and Privacy.

Dashboard

Download data surfaces in the Downloads — last 30 days panel on your Benecaster dashboard. See Dashboard Overview for a description of what the panel shows and when.