Problem
A podcast feed uses one episode GUID while the republished media file receives a new identifier, causing some podcast apps to treat the update as a duplicate episode.
Solution
Root Cause / Diagnostic:
Podcast clients (Apple Podcasts, Pocket Casts, Overcast) identify unique episodes strictly through the <guid isPermaLink="false"> tag rather than media URLs or titles. Generating a new GUID during a media file re-upload or metadata refresh forces aggregator databases to index the payload as an entirely new release, triggering re-downloads and duplicate push notifications.
Actionable Fix:
1. Lock the <guid> field in your CMS database so re-encoding, media file re-uploads, or title adjustments never generate an automated UUID regeneration.
2. Ensure your podcast hosting platform is configured with isPermaLink="false" on the GUID and maintain legacy GUID strings when migrating between podcast hosting providers.
3. Verify RSS XML output prior to publishing updates by running diff or inspecting the <item> node to confirm the <guid> string matches the original broadcast string exactly.
Pro Tip:
If an audio patch is mandatory post-release, replace only the enclosure URL (<enclosure url="..." length="..." type="audio/mpeg"/>) while leaving GUID and pubDate completely static to force cache invalidation without duplicate indexing.
Podcast clients (Apple Podcasts, Pocket Casts, Overcast) identify unique episodes strictly through the <guid isPermaLink="false"> tag rather than media URLs or titles. Generating a new GUID during a media file re-upload or metadata refresh forces aggregator databases to index the payload as an entirely new release, triggering re-downloads and duplicate push notifications.
Actionable Fix:
1. Lock the <guid> field in your CMS database so re-encoding, media file re-uploads, or title adjustments never generate an automated UUID regeneration.
2. Ensure your podcast hosting platform is configured with isPermaLink="false" on the GUID and maintain legacy GUID strings when migrating between podcast hosting providers.
3. Verify RSS XML output prior to publishing updates by running diff or inspecting the <item> node to confirm the <guid> string matches the original broadcast string exactly.
Pro Tip:
If an audio patch is mandatory post-release, replace only the enclosure URL (<enclosure url="..." length="..." type="audio/mpeg"/>) while leaving GUID and pubDate completely static to force cache invalidation without duplicate indexing.