Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

The podcast feed explained

What the Apple Podcasts export of Exponential writes, element by element - the channel from the export's podcast fields, one item per episode with its enclosure, guid, date and duration - and the rules that decide which…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/podcasters/the-podcast-feed-explained.md

On this page

The podcast feed explained

This page is for producers who want to understand the feed their show is published with, before they submit it to a directory or answer a question from one. Everything here is what eZRSSExport::generateITunes() and podcastItemList() in kernel/classes/ezrssexport.php do. The setup steps are on Building a podcast feed.

Contents

  1. The format
  2. The channel
  3. The episodes
  4. Which episodes appear
  5. Addresses in the feed
  6. When changes show

The format

The export format Apple Podcasts (RSS 2.0 + iTunes) (stored value ITUNES, listed in settings/site.ini [RSSSettings] AvailableVersionList[]) is RSS 2.0 with three namespaces: itunes (http://www.itunes.com/dtds/podcast-1.0.dtd), content and atom. Any podcast app that reads RSS can subscribe to it; Apple's elements are simply extra information for apps that understand them.

The channel

The channel is written from the export's own fields and its Apple Podcasts section:

ElementFrom
title, itunes:titlethe export's Name
linkthe site address (see Addresses in the feed)
descriptionthe export's Description
languageLanguage, or the site locale's HTTP code when empty
itunes:image href=...Artwork address
itunes:category (with a nested subcategory)Category, Subcategory
itunes:explicitContains explicit content, true or false
itunes:author, itunes:subtitle, itunes:summary, copyrightAuthor, Subtitle, Summary, Copyright
itunes:typeShow type: episodic or serial
itunes:owner with itunes:name, itunes:emailOwner name, Owner email
itunes:block, itunes:complete, itunes:new-feed-urlonly when set (Moving, pausing or ending a show)
atom:link rel="self"the feed's own address
lastBuildDate, generatorthe time of writing, the product edition

An element whose value is empty is left out (eZRSSExport::element()). Every field is described on Channel fields reference.

The episodes

Each episode becomes one item:

ElementFrom
title, itunes:titlethe field mapped as Title, or the item's name when that is empty
linkthe episode's page on the site
descriptionthe field mapped as Description, as text
pubDatethe item's published date
enclosure url length typethe field mapped as Enclosure (media): its download address, its size in bytes and its MIME type, read from the stored file
guid isPermaLink="false"the object's remote id
itunes:durationworked out from the file for a constant bitrate MP3, else left out
itunes:explicitthe channel's value
itunes:authorthe name of the user who created the item
categorythe field mapped as Category

The guid is the important one. It never changes while the object exists, even when the episode is renamed, moved or republished, so apps do not show an old episode as new. Fixing an episode means editing it, never deleting and recreating it. Details per mapping: Episode mapping reference.

Which episodes appear

  1. The export's sources are read: each source's location, class and Subnodes setting (How a show maps to content).
  2. Items are sorted by published date, newest first, and cut at Number of objects.
  3. A hidden item is skipped, unless the site is set to show hidden items.
  4. An item whose class has no mapping for that source is skipped.
  5. An item whose enclosure field is empty, or is not a media or file field, is skipped: "An episode with nothing to play is not an episode" (code comment).

Drafts and items waiting for a scheduled date are not published, so they are not in the feed either.

Addresses in the feed

Links and enclosure addresses are built from the export's Site URL. When it is empty, the public address of the export's siteaccess is used (publicSiteURL()), not the address of the administration you happen to be using. With URL translation on, link is the episode's nice URL; otherwise /content/view/full/<node id>. The enclosure is always /content/download/<object id>/<attribute id>/<file name>.

When changes show

The feed is cached for settings/site.ini [RSSSettings] CacheTime seconds, 1200 (20 minutes) as shipped; 0 writes it for every request. A new episode therefore appears in the feed at most 20 minutes after publishing, and podcast apps then fetch it on their own schedule. An administrator can clear the feed cache at once (php bin/php/ezcache.php --clear-id=rss_cache --allow-root-user, from RSS feeds).

If writing the feed fails, the address still answers with a valid, empty feed with the show's title (emptyPodcast()), and the error goes to the debug log.

Become an Exponential Partner

Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x