How WebSub works: and why it's good for your podcast

How WebSub works: and why it's good for your podcast

· First published · By James Cridland · 5.1 minutes to read

WebSub makes your new episodes appear faster.

WebSub - once known as PubSubHubbub until someone realised it sounded too stupid - fixes one of the main problems for podcasting. It fixes it in an elegant manner that’s backwards-compatible with every single podcast app out there.

The Problem

Podcasting works using an RSS feed, which is essentially a list of your episodes. A podcast app will, every so often, pull down a new copy of your RSS feed - and see if there’s a new episode of your podcast in there.

Podcasting is PULL, not PUSH. When you upload a new episode of your podcast, you need to wait for the various podcast apps out there to pull your RSS feed. And that’s fine, most of the time. Usually, podcast apps (or the servers they’re connected to) will check your podcast RSS feed every few hours, and everyone’s happy.

But this causes a few issues:

  • This is very inefficient - there are more than four million podcasts out there, and podcast directories may need to check all of those RSS feeds every few hours. Most of them haven’t updated. So that’s lots of bandwidth and server time doing absolutely nothing useful.

  • It causes headaches for app developers - The Daily (or, for that matter, The Podnews Daily) is one obvious example of a podcast that is updated every single morning and has to be ready in your podcast app when you wake up. Checking “every few hours” isn’t good enough for The Daily; so some podcast apps have algorithms that know to check feeds like this more often. Developers spend way too much time on this, instead of making decent apps that work well.

  • It chews a lot of server resources - the RSS feed for Podnews’s podcast gets more than 130,000 hits a week, but it has only changed five times.

  • Support desks are swamped with questions like “Why hasn’t Apple/Spotify/Overcast seen my latest episode, I uploaded it two hours ago”. You’ll see many well-meaning podcast consultants reminding people about how podcasting works as a result (“PULL, not PUSH”).

  • It’s no good for some podcast categories - it doesn’t much matter if the new episode of Serial takes an hour to appear in your podcast app. But it really does matter if it’s breaking news, or even daily news bulletins. They need to be there almost instantly: and that’s very hard with PULL, not PUSH.

What’s needed

What we need is some way for a podcast app to know when a podcast has been updated.

Wouldn’t it be great if you could upload a podcast, and somehow every single podcast directory out there knows that your podcast has been updated, and instantly tells podcast apps? PUSH not PULL?

And wouldn’t it be good if it was free to use, and really easy to implement?

That’s what WebSub does.

How WebSub works.

It’s just like a WhatsApp group. I post a text message to WhatsApp, and WhatsApp sends that text message automatically to everyone wants to be a part of that group.

A publisher of a podcast lets apps subscribe to get told about new events, like a podcast being uploaded, using a hub (run by the publisher or run by someone else).

I publish a new podcast, and my podcast host automatically tells the hub that I’ve published it. The hub has lots of servers subscribed to it, and it tells all of them to look at my RSS feed again because it’s changed.

(This is why it was called “pubsubhubbub” in the first place.)

Some podcast hosts and apps already support it

When Podnews publishes a new episode of our podcast, our podcast host notifies our hub that we’ve done so. The system that runs Google Podcasts is subscribed to our hub: and less than a minute later, an Android phone will show that there’s a new episode available.

  • Google Podcasts, Podhero and PodcastIndex support WebSub, so you’ll notice they instantly know of new podcast episodes from supporting hosts.

  • Captivate, Simplecast, Buzzsprout, PowerPress, Transistor, ZenCast and many other podcast hosts support WebSub, so as soon as you hit 'publish’, they should appear on the above podcast apps.

  • In October 2020, PodcastIndex said that 262,000 different podcast feeds were WebSub-enabled.

So if your podcast is time-sensitive, look for a podcast host that supports WebSub.

A more technical run through for a publisher

Our RSS feed has a line right at the beginning of it that says which hub we use. It looks like this:

<link rel="hub"
 href="https://pubsubhubbub.appspot.com/"
 xmlns="http://www.w3.org/2005/Atom" />

As you can see, it just points to a server at pubsubhubbub.appspot.com. That’s a free one, run by Google (though you can build your own if you want - it’s decentralised and free, just like podcasting is).

When we publish a new episode, we then run this PHP code.

//Update Google PubSubHubbub
$data = array(
 'hub.mode' => 'publish',
 'hub.url' => 'https://podnews.net/rss'
 );
$handle2 = curl_init('https://pubsubhubbub.appspot.com/');
curl_setopt($handle2, CURLOPT_POST, true);
curl_setopt($handle2, CURLOPT_POSTFIELDS, $data);
curl_setopt($handle2, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle2, CURLOPT_HTTPHEADER,
 array('Content-Type: application/x-www-form-urlencoded'));
$result = curl_exec($handle2);
curl_close($handle2);

This tells the hub that we’ve published something. The hub then goes off and tells everyone to go and take a look at our RSS feed because it’s changed.

That’s literally it, there are no more steps.

Here’s the full specification. It isn’t new: it’s been a “thing” for over ten years now.

If a podcast directory or app doesn’t support it, it ignores the line in your RSS. And if it does support it, it means almost instant updates for your podcast.

As a podcast app, how should we implement it?

We’d recommend adding a subscription endpoint in addition to your existing RSS polling service. That way, you’ll get instant updates to WebSub-compatible podcasts, but your existing systems will automatically keep updated.

While you’re at it: support podping, too

Websub is a great tool; but Podping works in a similar way for a publisher as well; you just need to ping a specific page.

This document goes into how Podping works - it’s fearesomely complicated, using a blockchain and all kinds of things; but for a podcast publisher, it’s doing another simple call just like the one above.

You need to email podping@podcastindex.org to ask for a bearer auth code; and then make a simple GET call, with your bearer code in the authorisation header, that looks like this:

GET https://podping.cloud/?url=https://feeds.example.org/rss

It requires no additional support than websub; so if you’re working on websub support, you might also want to build Podping support directly into your publishing process too. (We have).

James Cridland
James Cridland is the Editor of Podnews, a keynote speaker and consultant. He wrote his first podcast RSS feed in January 2005; and also launched the first live radio streaming app for mobile phones in the same year. He's worked in the audio industry since 1989.

Readers and supporters

Gold supporters

Silver supporters

Readers and supporters

Get a global view on podcasting and on-demand with our daily news briefing