How WebSub works: and why it's good for your podcast
March 22, 2019 · Updated December 10, 2019 · By James Cridland · 5.1 minutes to read
WebSub makes your new podcasts 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.
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 - if there are over 750,000 podcasts out there, then 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 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 was hit 38,243 times in the last seven days alone. 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 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 and Swoot support WebSub, so you’ll notice they instantly know of new podcast episodes from supporting hosts.
Captivate, Simplecast, Buzzsprout, PowerPress, ZenCast and many other podcast hosts support WebSub, so as soon as you hit 'publish’, they should appear on the above podcast apps.
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.
So why doesn’t everyone support it?
That’s a great question. In fact, we don’t know who does support it, and who doesn’t.
Google Podcasts specifically recommends it, and supports it. Given that - and the ease of implementing it - you might think that it’s worth every single podcast host supporting this service. But that’s not, yet, happening.
Our podcast pages show who supports it as a podcast publisher. Captivate, Simplecast, Zencast, Transistor and Buzzsprout do; as do many PowerPress installations (you need to turn it on here).
It’s harder to check which podcast apps support it: we can see some of our data from our secondary hub, and know that Inoreader, Feedly and other RSS readers are using it.
If more podcast publishers supported WebSub, it would significantly reduce support queries (“why isn’t my latest episode showing in XXXX app?”), and has no negative effects. It’s a tiny amount of work, for potentially great benefit.
If you’ve comments on this: please, use our comments box below.
—James is the Editor of Podnews, and was first involved in podcasting in January 2005.