
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.

Learn how to resolve the channel_not_found error when using Slack's Incoming Webhooks to send messages to different channels.
A deep dive into how we built our llms.txt file for our docs.
How we approach building and maintaining our component library at Knock
How we balanced Kinesis consumers across our Kubernetes pods to improve platform performance and resilience.
An in-depth guide that covers building a real-time activity feed using Nuxt, shadcn/ui, and Knock
A quick guide that covers a few ways to create table layouts in Slack markdown
An in-depth guide that covers building a real-time activity feed using Next.js, shadcn/ui, and Knock
An overview of how push notifications work on Apple and Android operating systems.
This post covers some of the benefits of adding activity feeds to B2B SaaS products
How one small modification to the Elixir Postgrex library let us force AWS monitoring to enumerate database query performance on a per-transaction basis.
A step-by-step guide to creating a Slack app with SlackKit and Next.js
A step-by-step guide to modeling Slack webhook connections in Knock.
A deep dive into Slack's Block Kit with examples on building static and interactive notifications for your Slack app.
A step-by-step guide to using OAuth with Slack to authenticate users in a Node.js application.
A step-by-step guide to sending in-app feed notifications with Next.js using the app directory and React Server Components
How we upgraded from Postgres 11.9 to 15.3 with zero downtime
A deep dive into how modern developer tools bring typing, CI/CD integration, and version control to engineering teams where they work.
Notifications are a critical bridge between your product and your users. Learn why you need to add observability into your notification system.
A deep dive on how and why we built our data warehouse connector using Prequel, a data warehouse connector as a service.
A deep dive into how we built our throttle function with Redis Streams.
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.
An in-depth look at notification systems and the ecosystem of tools, frameworks, and vendors available.
How we solved a challenging customer request using Postgres.
How Knock used WorkOS to implement SAML 2.0 SSO quickly and efficiently in our Elixir codebase.
A closer look at implementation details in building a usage-based billing system powered by Orb.
A look into how we evaluate which indexes to use and when to maximize query efficiency.
A look into our experience in buying and integrating a usage-based billing provider at Knock.
A deep dive into how we built our webhooks feature using the underlying Knock notification engine and a few learnings along the way.
A behind-the-scenes look at how we onboard new engineers at Knock, and the principles we use to do so.
A look at how Knock uses Elixir and feature flags to adapt our software at runtime.
A deep dive on how to design and build a batched system for your product notifications.
Postgres ships with the Label Tree data type. How Knock uses LTrees for fast API log search.
A peek behind the curtain at Knock. How we work to optimize for shipping customer value, quickly.
A look into how to set up and use Knock's in-app feed component.
Getting meta and showing the power of Knock to build our member invite feature.