So you have shipped your first SaaS and customers are beating down your door to sign up and hand you buckets of money. Your code is tight. Your servers are humming. The venture capitalists are talking IPO. Everything's coming up roses.
Then it starts; Some customers want complex data flow logic added, others want instant notifications via SMS for each order placed, and then there is a host of other SaaS systems they all want you to integrate with.
How do you handle these requirements? You obviously can't do them all, so you have to choose, meaning some customers will be left unsatisfied and possibly move off your product. Beyond that, there is a different problem. Any work that you decide to do for these one-offs takes away from focusing on your core value proposition, and adds additional maintenance and supports costs.
This problem is, of course, nothing new. Every successful internet service has experienced it in some form since long before web 2.0 was a thing.
Webhooks Are the Answer!
A common solution is to introduce Webhooks into your platform. They are relatively straightforward to implement; identify the critical extension points of your platform, craft the perfect payload at each point, wire up a subscription administration interface and release it to your customers.
You don't have to build the customizations. Your engineering team can stay focused on solving the core business for your SaaS.
- You don't have to build the customizations. Your platform can stay tight and focused on solving the business problem it was intended to address.
- You don't have to host the custom logic anymore. The code triggered by the webhook runs completely isolated and secure from your platform and your other customers, dramatically reducing the resources needed to keep your SasS up and running.
- Customers are free to choose any language or technology stack they prefer to process the Webhook payloads.
- You enable other SaaS providers and partners to build integrations with your product to satisfy their customers.
The Flip Side of Webhooks
Webhooks have effectively allowed you to externalize the customization overload on your platform. What you may not realize is that you have effectively placed that burden directly on your customers.
Mary, who heads IT at one of your customers, a 20 person law firm in Atlanta, did not sign up for this. Your Webhook strategy created a bunch of ongoing work for her and her team.
- She has to figure out how to build the service the Webhook is calling. It needs to be robust and resilient under load.
- She has to find hosting for this service. Heroku and AWS may be great options for this, but Mary may be completely unfamiliar with them.
- She needs to consider security concerns with exposing the service to the internet. Setting up HTTPS is no cakewalk.
- On top of all this, she needs to find a monitoring solution that will alert her to outages or problems, not to mention dealing with being on call to address them.
In a big company, this is even more of a challenge. Budgets need to be considered and appropriated. Coordinating between different departments deciding who is going to build it, deploy it and pay for it can become an impediment. Large SaaS products like Salesforce may require engaging an integration team.
All of this contributes to taking longer to deliver the value the customer wanted in the first place.
“Webhooks are deceptively simple on the surface.”
Tweet This
Webhooks are deceptively simple on the surface. Many platforms offer Webhooks, but consuming them has a high barrier to entry. Your customers need to think carefully about pursuing them. They are committing to the maintenance of that infrastructure for a very long time. All of this contributes to taking longer to deliver the value the customer wanted in the first place.
Serverless Extensibility, Going Beyond Webhooks
A new approach is starting to emerge in the industry, one that we call Serverless Extensibility. Instead of placing the burden on customers, SaaS products can leverage a Serverless platform to allow users to author and execute extensions directly in the product.
Users can now create custom extensions within the product using an inline code editor, choosing from a pre-defined selection. At runtime, The SaaS calls out to a Serverless provider to securely execute the code.
Serverless Extensibility makes it much easier and faster to customize your product and get the value to your users. Not only that, but it saves your customers money as they substantially reduce up-front development cost, and they no longer have to deal with ongoing hosting and maintenance. Removing that friction and cost means higher user retention, which our data shows can be as high as 10x.
Serverless Extensibility in the Wild
Auth0
Here at Auth0, we have been working on extensibility for a while. We are known for offering the simplest set of tools to solve the most complex identity use cases. With Auth0 Identity, you can easily authenticate and authorize apps and APIs with any identity provider running on any stack, device, or cloud.
For several years customers have been able to execute arbitrary Node.js code during the authorization process using Rules. Several templates are available or they can create an empty Rule to customize right in the management dashboard.
Recently, we added Hooks, allowing users to customize the behavior of Auth0 at credential exchange, or at pre and post user registration extension points.
Using Auth0's extensibility has enabled our customers to easily customize the product to handle custom business logic and integrate with a variety of 3rd party services.
Twilio
Twilio is a cloud communications platform that provides building blocks to add messaging, voice, and video to your web and mobile applications.
With Twilio, you can provision a phone number that accepts calls, faxes, MMS or SMS messages. You can quickly respond to the incoming events using TwiML, an XML based message format that allows you to define simple non-interactive responses. For interactivity, you need to configure a Webhook processor that interacts with the Twilio API.
Twilio recently augmented their Webhook based extensibility with Twilio Functions. In the introduction presentation at Signal 2017, Carter Rabasa explained the reasoning this way.
"The first thing that Twilio tells you to do is download a web application. And then we ask you to go deploy that web application to some server, somewhere."
Carter Rabasa - Product Manager @ Twilio
Now you can easily create a function that handles incoming voice calls or messages right in the Twilio console. When saved, the function is deployed to a serverless environment and can now be attached to incoming events.
Using Twilio Functions enables customers to now on board much more quickly to using Twilio's platform, than was previously possible.
Stamplay
Stamplay is a business automation platform that provides the ability to connect any application, database or service regardless of if data is sitting in the cloud or on-premises.
With Stamplay, you can plug in a large and growing list of integrations and use them to orchestrate communication between systems based on event triggers. It offers a beautiful point-and-click task editor that allows any business professional to wire together interactions.
In January of 2016, Stamplay released Code Blocks, a built-in extensibility point that solved a specific need in their product. Giuliano Lacobelli introduced it this way.
"Sometimes you cannot get around the need for some custom code."
Giuliano Lacobelli - Co-Founder @ Stamplay
Now Stamplay customers can create custom integrations within the inline editor, and use them directly on Stamplay's drag and drop environment.
Using Stamplay Blocks allows customers to go well beyond the out-of-the-box integrations, providing a stickier experience.
Summary
Webhooks are a clean and easy way for you to add extensibility points into your SaaS, but they can put an extra ongoing burden on your customers.
Serverless Extensibility removes as much friction as possible, allowing customers to customize the usage of your platform in a secure, scalable, and reliable way that is offered directly in the product.
Removing this friction makes customers stickier to your product, allowing them to focus on their core business and more quickly to deliver value to the market.
About the author
Bobby Johnson
Developer Advocate Engineer