•December 16th 2019
My comparison of the top chat services and their pricing structures - Pubnub vs Pusher vs Layer vs Sendbird vs Stream
Full disclosure: I’m the head of sales at Stream, and we recently removed the beta tag from our new chat API. After 4 years of providing highly stable, fast and scalable activity and notification feeds, we’re excited to have entered this space. Unlike feeds, chat/messaging has a large number of competitors. In order to not only be competitive in the space but to also offer our customers a fresh take on an already booming market, I began a quest to research the larger companies and understand as much as possible how they price and at what levels.
UPDATED: December 13, 2019 with more data reported from prospects.
This post covers what I’ve gleaned so far and how Stream’s offering compares, but I'd love to hear more about your experiences in the comments, especially if they’re counter to what I found. I’ve sorted this list of chat providers based on how much work is required to build a complete chat solution from hardest to easiest.
PubNub offers you a lower level building block for creating real-time apps. They recently "launched" Pubnub Chat. When I went to update my Stream vs. Pubnub post I realized that they didn't add any new features. They don’t provide a chat API or the frontend for chat; they only take care of the real-time portion. While real-time is an essential building block for chat, having it be the only offering of your “chat product” requires you to build both your frontend and your chat server infrastructure on your own.
They did add a React SDK, but it's woefully lacking. The extent of it is an unstyled square with a text input and a button. Don't be fooled thinking you'll get a fully featured component like Stream provides (not just for React, but also React Native, iOS native and Android native).
Even with that being the case, PubNub is the most enterprise-level chat provider in the market and they have an excellent track record in terms of performance, scalability, and reliability. Customers such as HubSpot, Yelp, and eBay rely on their real-time API for chat.
So far, they don’t seem popular amongst smaller companies and startups, which, in many cases, value time to market over performance and reliability.
PubNub’s pricing is very different from that of the other chat providers I’ve looked into. They price based on “Replicated Transactions”, “Edge Transactions”, “Functions Execution” and “Data Persistence”. To get a better understanding of what, exactly, that means, here is the example they give on their pricing page:
Case: A chat application that serves 100,000 customers per month, each of whom, on average, use two ten-minute chat sessions, which include 20 messages, averaging 1KB in payload, in each direction between customer and operator.
For each session:
- 1 Edge Transaction to open the session between the client and PubNub
- 20 Edge Transactions for receiving 20 messages (subscribing to messages)
- 20 Replicated Transactions for 20 messages (publishing messages)
- 40KB of Data Persistence for the 40 messages (persisting the data)
- 1 Edge transaction to close the session
Total: 22 Edge Transactions; 20 Replicated Transactions; 40KB written to Storage & Playback (Data Persistence)
- 100,000 users with two session per month = 200,000 sessions
- Total: 4.4M Edge Transactions, 4M Replicated Transactions, 8GB written to Storage & Playback
- Total Cost:
- Edge: 4.4M * $0.000020 = $88
- Replicated: 4M * $0.000075 = $300
- Data Persistence: 8GB * $8 = $64
- Grand total: $452/month
From what I gathered, in this example, they have 100,000 MAU, are doing 2 million messages and are retaining the full 2 million messages. There’s another caveat though – the number of sessions is a factor. So if your 100k MAU talk every day (with 2 sessions per day, per the above example), then the cost is 15x right? That’s how I read it, which brings the total to $6,780. This pricing model could, undoubtedly, be tricky to predict...
Additionally, it’s not clear how features such as typing indicators, user presence and read status indicators would impact pricing.
Pusher ChatKit Pricing
Pusher goes a step further than PubNub in that it provides real-time infrastructure, as well as a relatively barebones chat API. From our perspective, Pusher is much closer to providing a full chat solution than PubNub and, thus is a “friendlier” solution, especially if you don’t have a dedicated dev team at your disposal to help you implement your chat product. You probably still need to do some heavy lifting to extend their chat API and would still need to build your own frontend, but it’s less work than doing so with PubNub.
As an example of some of the in house efforts still required, at the time of writing this post (even updated in December), you can’t edit messages, add reactions or start a thread. There is also no built-in support for moderation on the chat.
Pusher is the only other company (aside from Stream) that I researched that publishes pricing for a standard plan. They have a free plan that allows you to test things out and gives you 1k MAU (it was 3k MAU back in April), which makes it into a sandbox tier. Pusher added a Startup tier since April, which is $99 a month and gives you 2500 MAU (still below their previous free plan). Pusher’s next tier, a “Growth” plan (used to be called Business), is priced the same as Stream’s “Standard” plan ($499/month). Here’s a more in-depth comparison:
|Stream Standard||Pusher Growth|
|Retention||7 million messages||60 days (used to be 90)|
|Messages Per Month||3 million||3 million|
You can see it’s a bit like comparing apples and oranges. The now 60-day retention policy, for instance, won’t work for many apps (even if you don’t have a large number of messages you’ll often want to retain them for more than 60 days). On the surface looking at MAU alone, it seems that Pusher is roughly 66% more expensive than Stream (and as touched on previously has far fewer features).
As an added bonus from us here at Stream, our product allows you to expire messages as a way to reduce cost. The only scenario in which Pusher is cheaper is if all of your users connect at the same time and do nothing during the rest of the month (resulting in high peak connection, but low MAU).
Layer shut down all operations in Q4 of 2019. I am removing my previous comparison as it's no longer relevant.
SendBird recently closed a $102m funding round, and their YC connections have landed them a few famous names as early customers such as Reddit. In polling customers of SendBird, they’ve generally had good things to say about the product. Some developers complained about breaking changes to their API though.
The common negative theme was about their sales process. Customers felt like the pricing was made up based on what they thought they could get them to pay. One customer said, “It was like buying a used car”. They also complained of last-minute add-ons that weren’t included in the initial pricing discussion that then felt like they were being nickeled and dimed. On the SendBird website, they only list Free and Custom, which backs up the idea of making up pricing for each prospect. (BTW, the Free tier allows a max of 25 peak connections, so this is more so a test/sandbox plan as very few apps will have less than 25 concurrent users).
I won’t list out specific numbers I’ve been told, but SendBird is usually the most expensive solution in the market (at least from the data I’ve collected). In some cases, PubNub might be more expensive, but that is hard to estimate (see their pricing model above) and depends on the specific chat features you implement. Also, you might want to take a look at who is first in Product Hunt's Sendbird reviews/alternatives list here... Spoiler alert... It's us.
Some updates (Dec, 2019). We've gained more information from prospects in the last 6 months. One key thing to look at with Sendbird is their MAU to concurrent connection ratio. Stream's is 20:1, while we've seen 40:1 or 50:1 for Sendbird. If your peak concurrent connections is your driving factor in pricing, Stream is instantly 50% or more cost effective. We've also seen quotes that have a plan, and then overage. One quote listed each concurrent connection over your limit at 55 cents. Imagine if you have a fantastic media mention or something that spikes your concurrent connections. Adding only 1k concurrent is $550. Imagine if you added 100k...$55,000. Stream's pricing allows you to take advantage of volume discounts as your usage goes up.
After focusing on powering the feed technology for over 500 million users, Stream has recently (early-2019) announced an offering for chat. Stream provides a scalable API and infrastructure accompanied by an expanding list of SDKs, a CLI, React Components, and a beautiful UI kit.
Advanced AI based moderation, reactions, and threads are built into the API. Compared to the other chat providers we believe we offer a complete solution and give you a substantial advantage in terms of time to market. We’ve added React Native, Android (Jave/Kotlin), iOS (Swift) as pre-built components to dramatically speed integration. Angular, Xamarin, Ionic and Unity are planned for Q1/Q2 of 2020.) We of course also have backend SDKs for all commonly used languages.
The tech stack of Go, RocksDB, and Raft also enables Stream to offer a level of performance and reliability that’s suitable for enterprise clients. This is the reason why many enterprise customers mainly look at Stream or PubNub.
As you’ve seen in the above comparisons, we’re roughly 70-40% more cost effective than the other chat providers such as SendBird. I’m excited to have a product that has superior features, easier integration, rock solid stability and performance, and is the most cost-effective available. For someone in sales, that’s a win-win-win-win-win.
Don’t take my word for it though; get in touch. Our pricing is standard and doesn’t change from customer to customer, so you can make your own comparisons. You can also check out our 5/5 star rating on Product Hunt here.