In today’s digital age, effective communication has become a cornerstone of customer engagement and user experience.
If you opened this blog, you would already understand the significance of timely notifications in enhancing user interaction and driving business growth. Whether it's alerting users about a new message, an upcoming event, or simply status update, a reliable notification service is crucial.
However, building a notification infrastructure in-house is not an easy task. It requires careful planning, development, and maintenance. In this blog, we will take a closer look at all the different components of a notification infrastructure. By the end, you'll have a comprehensive understanding of what it takes to build an in-house notification service, which challenges to anticipate, and what strategy is right for your company.
The Building Blocks: Functional Components
A notification infrastructure has to have several components working together to deliver the right notification experience. Diving deep into some of the functional components:
1. Delivery Channels & Vendor Integrations:
Delivery channels form the backbone of how messages reach users. And with users present on many different types of channels, it becomes imperative to reach users on multiple channels to maximize engagement. Hence, the notification service must be integrated to various channels like email, SMS, in-app (bell icon), push notifications, whatsapp, slack/ teams, automated calls and more. Integrating with providers for each channel can be complex, involving vendor evaluation, multiple API integrations, quality of service, testing & monitoring, and fallback strategies.
2. Templating Engine:
At the heart of any notification service lies the ability to craft messages that resonate with users. At the same time, with multi-channel notifications, you can tailor your content to match the strengths of each channel. For instance, emails can accommodate longer and more detailed information, while text notifications are ideal for short and attention-grabbing messages, whereas push supports multi-media and action buttons.
Templates probably take the most time and engineering resources from ownership perspective, as they demand constant changes for copy writing, personalization, unified branding, adding variables dynamically, rendering the message correctly across different channels and devices, accommodating multi-lingual support, error handling, managing conditional statements, testing & deploying to name a few. It is best to give an interface with visual editors for all channels, so non-engineers can build and experiment with notifications.
3. User Preferences:
Accurate targeting is key to avoiding notification fatigue and being user centric. Typically marketing notifications provide a simple opt-out option, but the same cannot be extended to product notifications. Your users would definitely want to receive some notifications, whereas they would want flexibility on other types of notifications. A robust user preference management system ensures users receive messages of the right kind, on the right channel and at the right frequency.
It involves creating an intuitive user interface where businesses and users can define their notification experience, which involves selecting notification types, preferred communication channels, frequency (instant alerts, or hourly / daily / weekly summary), and timing (allowing quiet hours). Offering opt-in/opt-out choices are crucial otherwise users tend to block all communications when they are bombarded by irrelevant or too many alerts.
4. Batching / Digest:
For certain types of notifications, it is expected to group multiple actions into a single notification, instead of sending separate notifications for each and every alert. For instance, if your product supports comments, an ideal experience would be to define a batch window and then combine all comments within that batch window and send them in a single notification.There is also a need to send summary digests to users, and send it at the time and frequency preferred by the user (eg. send updates in hourly, daily, weekly summary). Depending on type of notification, both batching and digest are needed for a good notification experience.
5. Multi-tenancy for customers:
If your product supports multiple tenants or customers and triggers notifications to their users, you would most likely need an architecture to support multi-tenancy in notifications. From a functional perspective, you would require data isolation, and customization in their notification settings - creating on-brand templates, routing notifications from their domain and handles, customize notification channels and user preferences for each tenant respectively.
For instance, if you are a SaaS platform generating invoices for your customers, the end user might not recognize your brand, therefore, you need to send notifications with your customers’ branding (maybe with custom content & design), with their user preferences, and notification strategies, all within a shared infrastructure.
6. Notification Analytics:
For product managers, insights into notification effectiveness are invaluable. Tracking delivery rates, open rates, and user engagement enable you to get actionable insights and do data-driven optimizations in notifications. Depending on the channel, you may require to consume user actions from a webhook (eg. Sendgrid provides delivery, open, click), or build your own infrastructure for tracking (in push notifications or AWS SES).
Also, with a multi-channel notification system, each channel and vendor have their own definitions of user actions and data available (eg. you cannot track open rate in SMS) - this calls out for standardization in user actions, so that product managers can analyze cross-channel notifications effectively.
The Pillars of Reliability: Non-Functional Components
A notification service cannot afford to go down, especially for notifications that require user attention, or from a compliance perspective. You can also go through some notification architecture designs for your implementation. For a robust service, non-functional components work behind the scenes, ensuring reliability, scalability and efficiency:
1. Scalability & Load Balancing
A notification service can experience varying levels of traffic, often peaking unexpectedly. Designing for scalability ensures that the system can handle increased loads without performance degradation. Load balancing across servers and regions is vital for maintaining consistent service availability.
2. Fault Tolerance, Redundancy & Failure Retries
In a notification system, downtime is not an option. Engineers must architect the service with redundancy and failover mechanisms to mitigate the impact of server failures or network issues. This involves setting up state management, configuring fallback vendors, throttling requests according to rate limits for individual channels and vendors and setting retries on failure. Remember, not all kinds of failures would need a retry mechanism (a push token expired is dead cause), so understanding failure reasons would be an integral part.
3. High Deliverability
There are many aspects to ensure high deliverability. Introducing multiple channels, choosing reliable vendors, cleaning up inactive channels, bounce management are some of the ways to make sure that the intended user gets the notification.
4. Low Latency
Users expect notifications to arrive promptly. Minimizing latency requires optimizing message delivery paths, reducing network round trips, and optimizing database queries. This is a continuous effort to maintain high performance as the system scales.
5. Observability & Diagnosis
Setting up monitoring is crucial for identifying and resolving issues when failures occur. Implementing detailed logging, error tracking, and performance monitoring allows you to diagnose problems swiftly and escape any compliance issues.
6. Message Queue Prioritization
Not all notifications are of the same priority. For instance, authentication notifications are high priority notifications as users expect to receive OTP instantly to login, and delay would increase drop-offs. Whereas recommendations or a newsletters, often sent in bulk, are not very time sensitive. Without prioritization, the queue could become cluttered with low-priority bulk notifications, potentially delaying the delivery of critical messages. You could even create separate queues for critical / high / low priority notifications and define their throughput rates to prevent congestion and save spending too much on infrastructure costs.
To build or not to build: Making the decision
Now that we've explored the multifaceted components of a notification service, let's discuss when building one in-house makes sense and when it might be best to integrate with a notification infrastructure as a service. We have covered the details on Build vs Buy in this blog, but here is a quick summary:
When to build:
If your notifications are too few in type, volume, doesn’t require changes often, and are meant for a single channel, then direct integration with vendors or a light weight central notification service can do the job.
- Highly Customized:
If your business use cases are very unique and require great deal of customization which are not available in third party platforms (eg. chatbot on SMS), then building a custom service internally is the best option.
- Notifications is the product:
If your product offering is predominantly notifications (Whasapp for instance), it makes sense to have the ownership in-house instead of building on a third party.
When to consider alternatives:
- Resource Constraints
Building and maintaining a notification service requires substantial engineering resources. If your team is limited, it might be more efficient to leverage existing notification platforms or APIs.
- Time to market
Developing a notification service from scratch can be time-consuming. If speed is of the essence, using third-party services could accelerate your product's launch.
- Complex Features
If your notification requirements involve complex features such as workflows, white-labeling notifications, user preferences, personalization, batching, cross-channel communication, an established platform offers these capabilities off the shelf.
- Focus on core competencies
Getting notifications right requires a lot of time and learning for experimentations, deep understanding of all channels, scaling and building observability. This ends up distracting you from focusing on your core competencies.
A well-executed notification service can be a game-changer in engaging users, enhancing experiences, and driving business success. Balancing the functional aspects that empower product teams and the non-functional aspects that ensure reliability is key. This is where SuprSend comes in, where all these aspects are handled in the best way possible. As an engineering leader, you should carefully evaluate your company's needs, available resources, and long-term goals to make an informed decision on whether to build an in-house notification service or opt for existing solutions. Whichever path you choose, remember that the ultimate goal is to create a seamless and meaningful user experience that fosters lasting connections.