# Knock ## Knock is the category leader in infrastructure for sending product and customer messaging. Ship cross-channel product notifications and lifecycle messaging that drive engagement, growth, and retention. ## Product ### Features - [Workflows](/features/workflows): Orchestrate your entire customer journey. A single workflow engine for powering transactional and lifecycle messaging across every channel. - [Guides](/features/guides): In-app messaging with your own components. Ship paywalls, dialogs, and nudges powered by your components. Enable non-engineers to edit copy and targeting in Knock. - [Broadcasts](/features/broadcasts): Intelligent, multi-channel announcements. Send one-time announcements across every channel, with complete control over audience, content, and delivery. - [AI](/features/knock-ai): Autonomous customer engagement. The only customer engagement platform you can work with entirely using natural language. - [Observability](/features/observability): Complete visibility into your notifications - [Template management](/features/template-management): A single place to manage your notifications - [Preferences](/features/preferences): Notify on the right channel at the right time ### Channels - [In-app](/channels/in-app-notifications): Deliver notifications with our in-app channel - [SlackKit](/channels/slackkit): Notifications where your customers work and talk - [Email](/channels/email): Make sending email from your product effortless - [Mobile](/channels/mobile): Easily add mobile notifications to any app - [More](/integrations): See all available channels -> ## Developer ### Getting Started - [Documentation](https://docs.knock.app): Learn key concepts and integrate Knock - [Knock CLI](/cli): Bring Knock to your terminal - [Quick start](https://docs.knock.app/getting-started/quick-start): Send your first notification with Knock - [Tutorials](https://docs.knock.app/guides/alerting): How to power common use cases ### Resources - [API reference](https://docs.knock.app/reference) - [GitHub](https://github.com/knocklabs) - [API Status](https://status.knock.app) - [Example apps](https://docs.knock.app/getting-started/example-app) ## Resources ### Company - [Changelog](/changelog) - [Blog](/blog) - [About](/about) - [Careers](https://jobs.ashbyhq.com/knock) ## Blog ### Guides - [Adding real-time toast notifications in Next.js](/blog/adding-realtime-toast-notifications-in-nextjs): An in-depth guide that covers adding real-time toast notifications using Next.js, shadcn/ui and Knock's feed API - [Adding real-time toast notifications in Nuxt and Vue](/blog/adding-realtime-toast-notifications-in-nuxt-and-vue): An in-depth guide that covers adding real-time toast notifications using Nuxt, Vue.js, shadcn/vue and Knock's feed API - [The top 6 alternatives to Braze Content Cards](/blog/alternatives-to-braze-content-cards): In this post, we take a deep dive into the top 6 alternatives to Braze Content Cards. - [Building a GitHub activity feed with Node.js and Socket.io](/blog/building-a-github-activity-feed-with-nodejs-and-socket-io): An in-depth guide that covers building a real-time activity feed using Node.js, Socket.io and GitHub webhooks. - [Building a translation CI/CD pipeline with Lingo.dev](/blog/building-a-translation-ci-cd-pipeline-with-lingo-dev): A step-by-step guide to building a translation CI/CD pipeline using Lingo.dev and Knock to automate localization for your app's notifications. - [Building customer-facing webhooks with Next.js](/blog/building-customer-facing-webhooks-with-nextjs): An in-depth guide that covers best practices when building customer-facing webhooks and how to build a webhook dashboard with Next.js and Knock. - [Building a real-time commenting app with Socket.io and React](/blog/building-real-time-comments-with-socket-io-and-react): An in-depth guide that covers building a real-time commenting application using React, Socket.io and Node.js. - [Chrome's new web push spam detection: What developers need to know](/blog/chrome-new-web-push-spam-detection): We take a deep-dive into the top in-app messaging tools available today. - [Creating interactive Slack apps with Bolt and Node.js](/blog/creating-interactive-slack-apps-with-bolt-and-nodejs): An in-depth guide that covers building an interactive Slack app with the Bolt framework and Node.js - [The top 6 push notification providers in 2025](/blog/evaluating-the-best-push-notifications-providers): An in-depth look at the top 6 push notification providers in 2025 to power native device notifications. - [How to build a custom inbox with Next.js and Knock](/blog/how-to-build-a-custom-inbox-with-nextjs): An in-depth guide that covers building a real-time inbox using Next.js, shadcn/ui, and Knock - [How to go from single-channel to multi-channel notifications](/blog/how-to-go-from-single-channel-to-multi-channel-notifications): An in-depth guide on how to go from single-channel to multi-channel notifications. - [How to localize and translate your notifications](/blog/how-to-localize-and-translate-your-notifications): An in-depth guide that covers several popular localization and translation libraries and how to use them with Knock's translation management features - [18 SaaS in-app messaging examples to improve engagement in 2025](/blog/in-app-messaging-examples): We highlight 18 real in-app messaging examples from leading SaaS companies in 2025, revealing the specific elements that drive engagement. - [Marketplace notifications with Knock and Next.js](/blog/marketplace-notifications-with-knock-and-nextjs): A guide to creating marketplace notifications patterns in Knock. - [What to look for in a notification template management system](/blog/notification-template-management): A guide to creating reusable and composable notification content using a template management system. - [How to collect NPS scores and trigger G2 review requests with Knock](/blog/nps-survey-review-request-workflow): We’ll break down how we used Knock to build an NPS survey review automation loop, including an in-app NPS survey that triggers a G2 review request email. - [Why password reset emails fail and how to fix them](/blog/password-reset-emails-deliverability): Password reset emails sometimes fail to reach users. Learn the 7 most common causes of missing transactional emails and how to fix them. - [The developer's guide to Slack's Markdown formatting](/blog/the-guide-to-slack-markdown): A mrkdwn guide for people that write Markdown. - [The top 9 customer engagement platforms in 2025](/blog/the-top-customer-engagement-platforms): We take a deep-dive into the top customer engagement platforms available today. - [The top 9 in-app messaging tools in 2025](/blog/the-top-in-app-messaging-tools): We take a deep-dive into the top in-app messaging tools available today. - [The 5 best link tracking tools for developers in 2025](/blog/the-top-link-tracking-tools-for-developers): We take a deep-dive into the top link tracking tools available to developers today. - [The 5 best notification infrastructure platforms for developers in 2025](/blog/the-top-notification-infrastructure-platforms-for-developers): We take a deep-dive into the top notification infrastructure platforms available to developers today. - [The top 5 real-time notification services for building in-app notifications in 2025](/blog/the-top-real-time-notification-services-for-building-in-app-notifications): We take a deep-dive into the top real-time services for building in-app notification experiences. - [Top 11 SMS providers for developers in 2025](/blog/the-top-sms-providers-for-developers): We take a deep-dive into the top SMS providers available to developers in 2025. - [The 11 best transactional email services for developers in 2025](/blog/the-top-transactional-email-services-for-developers): We take a deep-dive into the top transactional email services available to developers today. - [The 5 best usage-based billing solutions for developers in 2025](/blog/the-top-usage-based-billing-solutions-for-developers-in-2025): We take a deep-dive into the top usage-based billing solutions available to developers today. - [The ultimate guide to markdown](/blog/ultimate-guide-to-markdown): Learn everything you need to know about Markdown, from basic syntax to advanced features. This comprehensive guide includes interactive examples you can edit and preview in real-time. - [The ultimate guide to writing effective notifications](/blog/ultimate-guide-to-writing-effective-notifications): In this guide, we'll cover best practices and guidelines for writing effective notification messaging across any channel. - [How to automate usage-based upgrade nudges with Knock + Orb](/blog/usage-based-upgrade-nudge-workflow): Discover how to automate usage-based upgrade nudges with Knock and Orb, triggering timely alerts when customers near their limits. - [Using Slack ephemeral messages in product notifications](/blog/using-slack-ephemeral-messages-in-product-notifications): An in-depth guide that covers the various ways to use Slack ephemeral messages in product notifications - [16 examples of effective SaaS welcome emails in 2025](/blog/welcome-email-examples): We highlight 16 real welcome email examples from leading SaaS companies in 2025, revealing the specific elements that drive engagement. ### Product - [An introduction to in-app notifications and why your product needs them](/blog/an-intro-to-in-app-notifications): We take a deep look into different types of in-app notifications (such as feeds, inboxes, and toasts), why they're valuable for your product, and what you need to build them. - [Build vs buy: a guide for notification systems](/blog/build-v-buy-notifications): A complete guide for what to consider if you're evaluating whether to build your own notification system or use a third-party vendor. - [Build vs buy: a guide for notification systems](/blog/build-v-buy-pointer): A complete guide for what to consider if you're evaluating whether to build your own notification system or use a third-party vendor. - [Building an inbox to simplify support](/blog/building-an-inbox-to-simplify-support): An interview with Mike Molinet from Thena.ai on how they built an inbox feature using Knock to simplify support - [5 cross-channel notifications for marketplaces that increase engagement](/blog/cross-channel-notifications-for-marketplaces): Learn how to increase engagement and sales in a marketplace with brand consistent, cross-channel notifications. - [Getting started with in-app messaging](/blog/getting-started-with-in-app-messaging): An introduction to in-app messaging strategy, message types, and best practices. - [How to grow a marketplace with in-app messaging](/blog/grow-a-marketplace-in-app-messaging): Learn how two-sided marketplaces increase engagement and sales with in-app notification experiences. - [How to design great keyboard shortcuts](/blog/how-to-design-great-keyboard-shortcuts): How to save time for your users by choosing memorable, conflict-free keyboard shortcuts. - [How to free your engineers from notification support tickets](/blog/how-to-free-engineers-from-notification-support-tickets): Learn the benefits of giving customer teams access to notification logs. - [How to use inventory notifications to grow a marketplace](/blog/how-to-inventory-notifications-marketplace): Learn how successful marketplaces like eBay, Zillow, Lyft, and Discogs use inventory notifications to create engagement and grow their platforms. - [How to send browser push notifications from a Node.js app](/blog/how-to-send-browser-push-notifications-from-nodejs): A deep dive into how to send browser push notifications using express and node-pushnotifications. - [The product manager's guide to collaboration notifications](/blog/how-to-send-collaboration-notifications): How to send delightful collaboration notifications and accelerate the engagement loops in your product. - [How to think about Slack and Teams as notification channels for your SaaS app](/blog/how-to-think-about-slack-as-a-notification-channel): In this blog post we'll walk you through the nuances of Slack and Teams and how to think about them as notification channels. - [How we designed our user onboarding flow at Knock](/blog/how-we-designed-our-user-onboarding-flow-at-knock): In this post we cover how we designed our onboarding experience and share helpful tips for building a strong onboarding flow for self-service products. - [How we work: moving fast to ship customer value](/blog/how-we-work-moving-fast-to-ship-customer-value): A peek behind the curtain at Knock. How we work to optimize for shipping customer value, quickly. - [Marketing automation vs. notification infrastructure: a complete comparison guide (2025)](/blog/marketing-automation-notification-infra-comparison): A guide on when to use marketing automation platforms for your transactional messaging and when its worth using a dedicated system for transactional notifications. - [The five stages of the notification lifecycle](/blog/notification-lifecycle): How leading product teams build and maintain notifications that delight users and drive outcomes. - [The notifications you need to be enterprise-ready](/blog/notifications-for-enterprise-ready): The role that notifications play in enterprise-ready workflows. Learn about building powerful notification flows for enterprise customers. - [Open sourcing our documentation](/blog/open-sourcing-our-documentation): We're pleased to announce that our Knock docs are now open source and available on our GitHub. - [Push notifications vs. in-app messaging: making the right choice for your product](/blog/push-notifications-vs-in-app-messaging): Push notifications and in-app messaging are two of the most powerful channels for communicating with users. Understanding when and how to use them can transform your product's communication strategy. - [Why you should personalize your notifications with Reverse ETL](/blog/reverse-etl): Use reverse ETL to create data-driven notifications that can increase engagement within your product. - [Notification template management that scales](/blog/template-management-that-scales): How to write future-proof requirements for a template management system that can grow with your notifications. - [The product manager's guide to designing Slack notifications](/blog/the-guide-to-designing-slack-notifications): A guide to understanding Slack's block kit UI framework and a few learnings for how to use it to build great Slack notifications. - [The three notifications you need to drive basic authentication](/blog/three-notifications-to-power-basic-auth): The role that notifications play in signup and login flows. - [The three notifications you need to drive product-led growth](/blog/three-notifications-to-power-growth): The role that notifications play in growth loops and a few real examples you can use in your own product. - [Video walkthrough: power Knock with Segment events](/blog/video-power-knock-with-segment): A step-by-step guide to setting up Knock as a Segment destination, connecting an event to a workflow, and testing event-driven workflows. ### Company - [Introducing Agent Toolkit and MCP server](/blog/announcing-agent-toolkit-and-mcp-server): Today we're thrilled to introduce Knock Agent Toolkit, a set of tools you can use to build AI agents that communicate across channels with your users, within the guardrails of the content you've designed in Knock. - [Introducing broadcasts](/blog/announcing-broadcasts): Today we're thrilled to introduce Knock broadcasts, a new way to send one-time messages to your users across any channel in Knock. - [Announcing commit diffs](/blog/announcing-commit-diffs): Today we’re excited to announce a big upgrade to the version control experience in Knock. Introducing commit diffs. - [Announcing our Datadog extension](/blog/announcing-datadog-extension): Today we’re excited to announce that our Datadog extension is now generally available for all Knock customers. - [Introducing docs 2.0 and new SDKs](/blog/announcing-docs-2-and-new-sdks): Today we're announcing two significant upgrades to the Knock developer experience: our new docs site and new SDKs for Node, Python, Go, Java, and Ruby. - [Introducing guides](/blog/announcing-guides): Today we're thrilled to introduce guides, a set of tools you can use to power in-product messaging, everything from paywalls and badges, to one-time announcements and banners, using your own components. - [Announcing: in-app feed notifications design kit 2.0](/blog/announcing-in-app-feed-notifications-design-kit-2): Announcing a new version of our in-app feed notifications design kit, including mobile designs, component controls, and an update to everything from 1.0. - [Announcing the Knock CLI and management API](/blog/announcing-knock-cli): Today we’re thrilled to announce a new way for building, testing, and deploying your Knock notification infrastructure, all in code. Introducing the Knock CLI and management API. - [Announcing the HTTP source in Knock](/blog/announcing-knock-http-source): Announcing a universal connector for bringing data into Knock. Use any event streaming platform to orchestrate your cross-channel notifications. - [Announcing Knock Mobile](/blog/announcing-knock-mobile): The complete toolkit to power notifications for mobile applications. - [Announcing Knock Sources](/blog/announcing-knock-sources): Power your product notifications with data from your customer data platforms (CDPs), such as Segment or RudderStack, or reverse ETL platforms, such as Hightouch, Census, or Polytomic. - [Announcing Knock Translations](/blog/announcing-knock-translations): Translations let engineering and product teams manage notification localization at global scale without incurring high amounts of notification template debt along the way. - [Announcing: Knock workflow builder 2.0](/blog/announcing-knock-workflow-builder-2): Announcing a complete rebuild of our Knock workflow canvas, including support for multi-branch messaging workflows. - [Our $12M Series A](/blog/announcing-our-series-a): We raised $12M from Craft Ventures to bring powerful notification infrastructure to developers everywhere. - [Announcing our SOC 2 Type 2 certification](/blog/announcing-our-soc-2-certification): We're thrilled to announce that we have achieved a SOC 2 Type 2 certification after recently completing our audit period. - [Announcing the Schedules API](/blog/announcing-schedules-api): A flexible, declarative way to build recurring notifications, without having to manage cron jobs in your own codebase. - [Announcing our Segment extension and native link analytics](/blog/announcing-segment-extension): Manage open and link analytics in Knock and send normalized notification data to your analytics stack using Segment. - [Announcing SlackKit: The easiest way to build a Slack integration](/blog/announcing-slackkit): Today we're excited to announce SlackKit. A set of Embeddable UIs and APIs that make it simple to integrate your product with Slack. - [Announcing the Subscriptions API](/blog/announcing-subscriptions-api): Today we’re announcing our new Subscriptions API. With subscriptions you can store and notify lists of recipients, and map those lists back to resources in your application. - [Announcing TeamsKit: The easiest way to build a Microsoft Teams integration](/blog/announcing-teamskit): Today we're excited to announce TeamsKit, a set of embeddable UIs and APIs that make it simple to integrate your product with Microsoft Teams. - [Announcing the Knock webhook channel](/blog/announcing-webhook-channel): Announcing a new, flexible channel type to use in your notification workflows. Introducing the Knock webhook channel. - [Announcing workflows 3.0](/blog/announcing-workflows-3): Today we're excited to introduce Knock workflows 3.0. We redesigned our template editor and our workflow canvas with a renewed focus on speed, ease of use, and craft. - [Announcing our GDPR certification](/blog/gdpr-announcement): We're excited to announce that Knock is now GDPR certified. You can learn more in our updated privacy policy. - [Announcing our HIPAA compliance](/blog/hipaa-announcement): We're excited to announce that Knock is now HIPAA compliant. Learn more about how Knock enables providers in the healthcare space to power customer engagement with our platform. - [Introducing Guides 1.0](/blog/introducing-guides-1-0): Today we releasing Guides 1.0. Power in-app messaging with your own components. - [Introducing: Mobile SDKs for Swift, Kotlin, Flutter, and React Native](/blog/introducing-our-mobile-sdks): Today we are releasing v1.0 of our Mobile SDKs for Swift, Kotlin, Flutter, and React Native. - [Introducing Partials](/blog/introducing-partials): Reuse pieces of content and code across any of your notification templates. - [Knock 2022: A year in review](/blog/knock-2022-year-in-review): Here's what happened at Knock this year, from new production customers to what we shipped to support them. Plus, a peek at what's coming in 2023. - [Announcing Knock](/blog/knock-launch): Today we're thrilled to announce the public launch of Knock's product notifications infrastructure for developers. - [Software Engineering Daily: Notifications Infrastructure with Chris Bell](/blog/knock-on-software-engineering-daily-2022): Our CTO, Chris Bell, was recently interviewed on the popular Software Engineering Daily podcast where he discussed all things Knock. - [Launch week recap](/blog/launch-week-h1-2025-recap): A recap of our launch week, where we introduced the Agent Toolkit + MCP server, guides, broadcasts, and more. - [Launch week recap](/blog/launch-week-recap-may-2023): Here’s everything we shipped during our first ever launch week. - [2023: A letter to the Knock community](/blog/our-2023-letter-to-the-knock-community): 2023 was a good year for us at Knock. In this letter we’ll review what we shipped in 2023 and what you can expect from us in the coming year. - [Our 2024 letter to the Knock community](/blog/our-2024-letter-knock-community): As we close 2024 and get ready to spend time with family, I sat down with Chris to write our annual reflection on the year and where we’re going next. - [State of notification infrastructure report 2025](/blog/state-of-notification-infrastructure-report-2025): In our inaugural state of notification infrastructure report, we surveyed teams about the tools, strategies, and metrics they use to power customer engagement. - [Why notifications matter](/blog/why-notifications-matter): On why we started Knock. ### Engineering - [Building a batched notification engine](/blog/building-a-batched-notification-engine): A deep dive on how to design and build a batched system for your product notifications. - [Building effective component libraries: a startup perspective on design systems](/blog/building-effective-component-libraries): How we approach building and maintaining our component library at Knock - [Building a Notion-style activity feed with Next.js and shadcn/ui](/blog/building-notion-style-activity-feed-nextjs-tldr): An in-depth guide that covers building a real-time activity feed using Next.js, shadcn/ui, and Knock - [Building a Notion-style activity feed with Next.js and shadcn/ui](/blog/building-notion-style-activity-feed-nextjs): An in-depth guide that covers building a real-time activity feed using Next.js, shadcn/ui, and Knock - [Controlling Elixir supervisors at runtime with feature flags](/blog/controlling-elixir-supervisors-at-runtime-with-feature-flags): A look at how Knock uses Elixir and feature flags to adapt our software at runtime. - [Evaluating usage-based billing providers: what engineers need to know (part 1)](/blog/evaluating-usage-based-billing-providers-part-1): A look into our experience in buying and integrating a usage-based billing provider at Knock. - [Getting started with SlackKit](/blog/getting-started-with-slack-kit): A step-by-step guide to creating a Slack app with SlackKit and Next.js - [The developer's guide to notification system tooling in 2023](/blog/guide-to-notification-systems-and-tooling-2023): An in-depth look at notification systems and the ecosystem of tools, frameworks, and vendors available. - [The developer's guide to notification system tooling in 2025](/blog/guide-to-notification-systems-and-tooling-2025): An in-depth look at notification systems and the ecosystem of tools, frameworks, and vendors available. - [The developer's guide to notification system tooling](/blog/guide-to-notification-systems-and-tooling-pointer): An in-depth look at notification systems and the ecosystem of tools, frameworks, and vendors available. - [Hacking our PostgreSQL driver to get more out of Amazon RDS performance insights](/blog/hacking-postgresql-driver): How one small modification to the Elixir Postgrex library let us force AWS monitoring to enumerate database query performance on a per-transaction basis. - [How push notifications work on Apple and Android](/blog/how-push-notifications-work-on-apple-and-android): An overview of how push notifications work on Apple and Android operating systems. - [How to add an in-app notification feed to Next.js](/blog/how-to-add-an-in-app-notification-feed-to-nextjs-15): A high level tutorial on how to get started with Knock's drop-in notification feed components and Next.js - [How to authenticate users with Slack using OAuth](/blog/how-to-authenticate-users-in-slack-using-oauth): A step-by-step guide to using OAuth with Slack to authenticate users in a Node.js application. - [How to build an in-app notification feed with Nuxt and Vue](/blog/how-to-build-an-in-app-notification-feed-with-nuxt-and-vue): An in-depth guide that covers building a real-time activity feed using Nuxt, shadcn/ui, and Knock - [How to model Slack webhook connections in Knock](/blog/how-to-model-slack-webhook-connections-in-knock): A step-by-step guide to modeling Slack webhook connections in Knock. - [How to ORDER BY using the contents of a column in Postgres](/blog/how-to-orderby-using-the-contents-of-a-column-in-postgres): How we solved a challenging customer request using Postgres. - [How to render tables in Slack markdown](/blog/how-to-render-tables-in-slack-markdown): A quick guide that covers a few ways to create table layouts in Slack markdown - [How to send in-app notifications with Next.js](/blog/how-to-send-in-app-notifications-nextjs13): A step-by-step guide to sending in-app feed notifications with Next.js using the app directory and React Server Components - [How we built our data warehouse connector using Prequel](/blog/how-we-built-our-data-warehouse-connector): A deep dive on how and why we built our data warehouse connector using Prequel, a data warehouse connector as a service. - [How we built our workflow throttles using Redis Streams](/blog/how-we-built-our-workflow-throttles-using-redis-streams): A deep dive into how we built our throttle function with Redis Streams. - [How we built webhooks in Knock](/blog/how-we-built-webhooks): A deep dive into how we built our webhooks feature using the underlying Knock notification engine and a few learnings along the way. - [How we onboard engineers at a devtools startup](/blog/how-we-onboard-engineers-at-a-devtools-startup): A behind-the-scenes look at how we onboard new engineers at Knock, and the principles we use to do so. - [How we think about writing for robots with llms.txt](/blog/how-we-think-about-writing-for-robots-with-llms-txt): A deep dive into how we built our llms.txt file for our docs. - [How we use Postgres LTrees to surface API logs](/blog/how-we-use-postgres-ltrees): Postgres ships with the Label Tree data type. How Knock uses LTrees for fast API log search. - [How we work: moving fast to ship customer value](/blog/how-we-work-moving-fast-to-ship-customer-value): A peek behind the curtain at Knock. How we work to optimize for shipping customer value, quickly. - [Implementing a usage-based billing system: integration deep dive (part 2)](/blog/implementing-a-usage-based-billing-system-part-2): A closer look at implementation details in building a usage-based billing system powered by Orb. - [Implementing SSO using WorkOS](/blog/implementing-sso-using-workos): How Knock used WorkOS to implement SAML 2.0 SSO quickly and efficiently in our Elixir codebase. - [Kinesis consumer balancing](/blog/kinesis-consumer-balancing): How we balanced Kinesis consumers across our Kubernetes pods to improve platform performance and resilience. - [Twilio Notify EOL: Migrating to Knock](/blog/migrating-from-twilio-notify-to-knock): How to transition your Twilio Notify implementation to Knock - [Six findings we rely on when managing PostgreSQL indexes](/blog/postgres-index-findings): A look into how we evaluate which indexes to use and when to maximize query efficiency. - [Taking a deep dive into Slack's Block Kit](/blog/taking-a-deep-dive-into-slack-block-kit): A deep dive into Slack's Block Kit with examples on building static and interactive notifications for your Slack app. - [The benefits of adding an activity feed to your B2B product](/blog/the-benefits-of-adding-an-activity-feed-to-your-product): This post covers some of the benefits of adding activity feeds to B2B SaaS products - [The five principles of modern developer tools](/blog/the-five-principles-of-modern-developer-tools-pointer): A deep dive into how modern developer tools bring typing, CI/CD integration, and version control to engineering teams where they work. - [The five principles of modern developer tools](/blog/the-five-principles-of-modern-developer-tools): A deep dive into how modern developer tools bring typing, CI/CD integration, and version control to engineering teams where they work. - [Top 9 React notification libraries in 2025](/blog/the-top-notification-libraries-for-react): In this article, we'll explore the nine best open-source notification libraries for React applications in 2025, categorized by their primary use cases and strengths. - [Troubleshooting channel_not_found in Slack incoming webhooks](/blog/troubleshooting-channel-not-found-in-slack-incoming-webhooks): Learn how to resolve the channel_not_found error when using Slack's Incoming Webhooks to send messages to different channels. - [Using Knock to power Knock's notifications](/blog/using-knock-to-power-knock): Getting meta and showing the power of Knock to build our member invite feature. - [Using our One and Done library to power idempotent API requests](/blog/using-one-and-done-to-power-idempotency): A look at idempotent requests, why they are important, and how to use our new One and Done library to implement them in your Elixir applications. - [Using the Knock notification component to add an in-app feed to your product](/blog/using-the-knock-feed-component-to-add-an-in-app-feed-to-your-product): A look into how to set up and use Knock's in-app feed component. - [Why you need observability in notification systems](/blog/why-you-need-observability-in-notification-systems): Notifications are a critical bridge between your product and your users. Learn why you need to add observability into your notification system. - [Zero downtime Postgres upgrades](/blog/zero-downtime-postgres-upgrades): How we upgraded from Postgres 11.9 to 15.3 with zero downtime ### Customers - [Building the future of in-app messaging with Webflow](/blog/building-the-future-of-in-app-messaging-with-webflow): How Webflow's feedback informed the development of Knock Guides, a component-first approach to in-app messaging. - [How Bounce scaled marketplace notifications with Knock to fuel 20x revenue growth](/blog/customers-bounce): Bounce automated multi-channel notifications across 13,000 locations while maintaining a lean engineering team. - [How Causal shipped cross-channel notifications to reach enterprise customers](/blog/customers-causal): Causal replaced their email and in-app notification system with Knock, significantly improving developer productivity - [How Discogs powers its global music marketplace with Knock](/blog/customers-discogs): Discogs replaced the notification system within their monolithic application with Knock. - [How EdApp doubled course completion rates with Knock](/blog/customers-edapp): Dave and Taylor at EdApp detail the challenges they faced with their original setup, their decision to choose Knock over other tools, and how they were able to double course completion rates and boost engagement with Knock - [How Gorgias improved customer service response times by 27% with Knock](/blog/customers-gorgias): Gorgias scaled their notification infrastructure to handle 15 million monthly notifications while improving customer support response times. - [How Mentimeter serves a 4x increase in enterprise customers with Knock](/blog/customers-mentimeter): Mentimeter implemented cross-channel in-app and email notifications to help teams within enterpises collaborate on presentations. - [VendorPM powers faster marketplace response times and drives gross merchandise volume with Knock](/blog/customers-vendorpm): How VendorPM used Knock to gain visibility into their notification system and double the response rate in their marketplace. - [How Vidyard rebuilt their notification system with Knock to drive product-led growth and ship faster](/blog/customers-vidyard-video): As the Vidyard team started to focus on product-led growth in 2023, they realized that their existing in-house notification infrastructure was slowing them down and preventing them from accomplishing their goals—so they turned to Knock. - [How Vidyard rebuilt their notification system with Knock to drive product-led growth and ship faster](/blog/customers-vidyard): As the Vidyard team started to focus on product-led growth in 2023, they realized that their existing in-house notification infrastructure was slowing them down and preventing them from accomplishing their goals—so they turned to Knock. - [How Webflow shipped in-product marketing notifications while reducing technical debt](/blog/customers-webflow-video): The Growth Engineering team at Webflow wanted to be able to say yes more often to product and marketing teams who wanted to introduce new messaging, so they implemented Knock. - [How Webflow shipped in-product marketing notifications while reducing technical debt](/blog/customers-webflow): The Growth Engineering team at Webflow wanted to be able to say yes more often to product and marketing teams who wanted to introduce new messaging, so they implemented Knock. - [Standard Metrics drives investor-founder collaboration and increases report compliance with Knock](/blog/standard-metrics-case-study): How Standard Metrics used Knock's in-app feed to enable investor-founder collaboration and increase report compliance. ## Manuals ### In app messaging - [Best practices for in-app messaging](/manuals/in-app-messaging/best-practices-for-in-app-messaging): Then, we'll help you navigate best practices when it comes time to send your first in-app message. You'll learn tips for choosing the right format, writing actionable content, targeting the right users, and more. - [How to build an in-app messaging system](/manuals/in-app-messaging/how-to-build-in-app-messaging-system): Next, we'll explain how in-app messaging works, including the backend architecture, real-time delivery infrastructure, storage and state management, UI components, and more. - [How to choose an in-app messaging solution](/manuals/in-app-messaging/how-to-choose-an-in-app-messaging-solution): Finally, we'll help you determine how to choose the right in-app messaging solution, considering flexibility and customization, performance and reliability, developer experience, cost structure, and more. - [Introduction to in-app messaging](/manuals/in-app-messaging/introduction-to-in-app-messaging): In this chapter, we'll explain what in-app messaging is, what it takes to be used successfully, and share some real-world use cases and examples of effective in-app messages. ### Liquid templating language - [Advanced Liquid concepts](/manuals/liquid-templating-language/advanced-liquid-concepts): In this final chapter, we'll go beyond the basics with advanced concepts like date and time handling, whitespace control, and data encoding to power sophisticated dynamic personalization inside Knock. - [An introduction to Liquid](/manuals/liquid-templating-language/introduction-to-liquid): In this chapter, you'll learn what Liquid is, how it works, and get introduced to Liquid's three core components through real-world examples. - [Understanding Liquid filters](/manuals/liquid-templating-language/understanding-liquid-filters): In this chapter, you'll learn how to use Liquid filters to modify strings, numbers, arrays, and dates efficiently, turning raw input into precisely formatted output through filter chaining and transformations. - [Understanding Liquid keys](/manuals/liquid-templating-language/understanding-liquid-keys): Next, you'll learn all about Liquid keys, including how to access simple and nested data, work with arrays by index, and apply best practices for defensive templating. - [Understanding Liquid operators](/manuals/liquid-templating-language/understanding-liquid-operators): Then, you'll learn how Liquid operators define how values are compared and combined. You'll learn the rules for truthy and falsy values, comparison operators, and logical operators that form the foundation for conditional expressions. - [Understanding Liquid tags](/manuals/liquid-templating-language/understanding-liquid-tags): Next, you'll learn how Liquid tags enable control flow, iteration, and variable assignment, allowing you to build dynamic, data-driven templates with loops, conditions, and logic that respond intelligently to different inputs. ### Notification infrastructure - [How to choose a notification infrastructure platform](/manuals/notification-infrastructure/how-to-choose-a-notification-infrastructure-platform): In this chapter, we’ll help you decide when you might need a more comprehensive notification solution, what criteria you should look for, and how to choose the right notification platform for your product. - [Introduction to notification infrastructure](/manuals/notification-infrastructure/introduction-to-notification-infrastructure): In this chapter, we’ll break down the typical path that leads companies to needing a more comprehensive solution for notifications and explain the benefits that notification infrastructure platforms provide. - [Understanding notification channels](/manuals/notification-infrastructure/understanding-notification-channels): In this chapter, we’ll explain the importance of cross-channel support, detailing the reasons why you want to avoid setting up and managing notifications across different channels by yourself. ### Push notifications - [Building a robust preference system](/manuals/push-notifications/building-a-preference-system): In this chapter, we’ll help you navigate the complexity of preferences, focusing on how your application’s preference logic interacts with the device’s native controls that users rely on to manage their experience. - [Core components of a push notification system](/manuals/push-notifications/core-components-of-push-notification-systems): This chapter explains the fundamental building blocks required to send your first push notification, including token management, provider authentication, payload structure, and the sending pipeline. - [Deciding how to deliver your push notifications](/manuals/push-notifications/delivering-push-notifications): This chapter will help you decide whether or not to build your own infrastructure (spoiler: don't) and how to choose the right push notification provider. - [Introduction to push notifications](/manuals/push-notifications/introduction-to-push-notifications): In this chapter, we’ll explain what push notifications are, how they work, and share some real-world examples of effective push notifications. - [The technical implementation of push notifications](/manuals/push-notifications/technical-implementation-of-push-notifications): This chapter explains the critical technical components and architectural decisions that will enable you to scale billions of push notifications sending to millions of users reliably. ### Slack notifications - [Best practices for sending Slack notifications](/manuals/slack-notifications/best-practices-for-slack-notifications): Once you’re set up to send notifications, this chapter helps you optimize them for impact. We’ll walk through best practices for message design, formatting, interactivity, and targeting, so your Slack messages feel useful, not noisy. - [Deciding how to deliver your Slack notifications](/manuals/slack-notifications/delivering-slack-notifications): The choice between building your own Slack notification system and using a managed service is one of the most critical decisions you'll make. Let's examine when each approach makes sense. - [How to send Slack notifications](/manuals/slack-notifications/how-to-send-slack-notifications): In this chapter, we'll dive into the technical details of how Slack notifications work under the hood. You'll learn how to authenticate and send messages through the Slack API, handle delivery logic, manage message state, and build a robust backend workflow that ensures every message reaches the right destination. - [Introduction to Slack notifications](/manuals/slack-notifications/introduction-to-slack-notifications): In this chapter, we’ll explain what Slack notifications are, why they matter for modern product experiences, and real-world examples of teams using Slack to deliver timely, contextual updates to users. ### Sms notifications - [Best practices for sending SMS notifications](/manuals/sms-notifications/best-practices-for-sending-sms-notifications): In this chapter, we’ll help you navigate best practices when it comes time to send your first SMS notification. You’ll learn tips for writing effective, well-formatted content that drives action, as well as strategies to reduce your costs when sending at scale. - [How to build an SMS notification system](/manuals/sms-notifications/how-to-build-an-sms-notification-system): In this chapter, we’ll explain the fundamental building blocks required to send your first SMS notification, including sending identities, rate limits, location-specific considerations, user preference management, and more. - [How to choose an SMS provider](/manuals/sms-notifications/how-to-choose-an-sms-notification-system): In this chapter, we’ll help you navigate best practices when it comes time to send your first SMS notification. You’ll learn tips for writing effective, well-formatted content that drives action, as well as strategies to reduce your costs when sending at scale. - [Introduction to SMS notifications](/manuals/sms-notifications/introduction-to-sms-notifications): In this chapter, we’ll help you determine how to choose the right SMS notification provider, considering price, overall developer experience, and advanced features. ### Transactional email - [Best practices for sending transactional email](/manuals/transactional-email/best-practices-for-sending-transactional-email): This chapter covers best practices for managing email deliverability and discusses how localization, template management, and personalization issues can be solved with notification infrastructure. - [How to build a transactional email system](/manuals/transactional-email/how-to-build-a-transactional-email-system): This chapter discusses how to approach building your own transactional email infrastructure (spoiler: don't), how to choose the right email service provider, and how to set up authentication for your email domains with SPF, DKIM, DMARC, and BIMI. - [How to measure transactional email performance](/manuals/transactional-email/how-to-measure-transactional-email-performance): This chapter addressess all of the different metrics you should monitor to make sure your transactional emails are sending successfully over time, including things like delivery rate, bounce rate, time to inbox, and more. - [Introduction to transactional email](/manuals/transactional-email/introduction-to-transactional-email): In this chapter, we’ll explain what "transactional" means, share some real-world examples of transactional emails, and explain why deliverability is critical for this type of communication.