A complete toolkit for in-app messaging

Composable UI and realtime, stateful APIs for shipping native in-app inboxes, feeds, and lifecycle messages.

InboxMaya commentedAlex mentioned youExport is readyYou're at 90% usageUpgradeDismissin-app feedmodal
An isometric drawing of a product window, with an in-app feed and a modal raised above the screen.

On-brand, native in-app messaging

Ship paywalls, dialogs, and nudges powered by your components. Enable non-engineers to edit copy and targeting in Knock.

Join us at CollabConf!

Sign up for online or in-person today.

Introducing: faster uploads

You’ve never seen file uploads like this.

Introducing: Collab.io 4.0

A whole new way to collaborate with your team.

A laptop glowing with a color gradient in a dark room

Bigger, bolder assets

Upgrade to upload and store assets over 250+ megabytes

Introducing Collab AI

Build and collaborate - faster than ever - with a helpful set of AI tools.

Publish your site

Learn how to publish your work to your clients

Publish to web

Create a website from your Collab pages

Launch week H1 2025
Made withC

Launch week H1 2025

We’re excited to share a series of updates to Collaborato, all focused on streamlining collaboration for you and your team!

A preview of what’s to come...

Power notification feeds, toasts, and inboxes

Leverage the Knock SDK to deliver real-time notifications that your product renders in a native in-app feed or inbox.

Five notification use cases connect to the Knock SDK, which adds each message to the top of a notifications feed.

Granular control over every in-app message

Our component-first approach keeps in-app messaging performant and on-brand, with real-time delivery, state, and preferences handled for you.

Read the docs
  • Cross-channel orchestration

    Coordinate in-app and out-of-app flows that reach the right users at the right moments across email, in-app, SMS, push, and chat.

  • Your design system

    Render in-app banners, modals, and paywalls with your own components to stop design system drift.

  • Native performance

    Every message renders in your product, so the UI stays fast, reliable, and ARIA compliant.

  • Real-time delivery

    A managed socket delivers real-time messages across in-app guides, inboxes, feeds, and toasts, without polling.

  • Preference controls

    Users choose which in-app messages they receive. Knock skips a message when a preference turns it off.

  • Engagement analytics

    Track how many users saw, interacted with, and archived your in-app messages so you can understand what works.

Launch in-app messaging with a prompt

Pick your agent and a use case, then use the prompt to build it.

Your agent

Use case

Your prompt

Prompt

Build an in-app onboarding flow for new signups using Knock. Based on what we're building, show a welcome message in the in-app feed on day 0, and an in-app guide on the first screen until they finish setup.

mcpdocs.knock.app/ai/mcp-servercli

All starter prompts, for people and agents

Connect your agent to the Knock MCP server at https://mcp.knock.app/mcp, or install the Knock CLI with npm install -g @knocklabs/cli. Then use any prompt below.

Onboarding (Lifecycle)

Build an in-app onboarding flow for new signups using [Knock](https://knock.app). Based on what we're building, show a welcome message in the in-app feed on day 0, and an in-app guide on the first screen until they finish setup.

Re-engagement (Lifecycle)

When a user returns after 14 days away. Based on what we're building, create an in-app feed message using [Knock](https://knock.app) that points them back to what they left unfinished. Archive it once they open that page.

Trial ending (Lifecycle)

When a trial has 3 days left. Based on what we're building, create an in-app message using [Knock](https://knock.app) with an upgrade action. Remove it as soon as the account upgrades.

Upgrades (Lifecycle)

When an account on the free plan reaches 90% of its usage allotment. Based on what we're building, show an in-app guide using [Knock](https://knock.app) with an upgrade action and a dismiss action.

Invites (Lifecycle)

When a user has been active in the product. Based on what we're building, create an in-app guide using [Knock](https://knock.app) that asks them to invite a teammate. Dismiss it once they send an invite or close it.

Referrals (Lifecycle)

When a user completes a successful outcome in the product. Based on what we're building, create an in-app guide using [Knock](https://knock.app) that asks them to refer a friend. Dismiss it once they send a referral or close it.

Access request (Transactional)

When someone requests access to a resource. Based on what we're building, create an in-app feed message using [Knock](https://knock.app) for the owner, with approve and reject actions.

Mentions (Transactional)

When someone is mentioned in a comment. Based on what we're building, create an in-app feed message using [Knock](https://knock.app) right away. Mark it read when they open the thread.

New comments (Product)

When a document gets new comments. Based on what we're building, create a workflow using [Knock](https://knock.app) that batches them into one in-app feed message, such as five new comments, instead of one message per comment.

Status update (Transactional)

When a record changes status. Based on what we're building, create an in-app feed message using [Knock](https://knock.app) for the people watching it, and include the new status.

Survey (Product)

After a software user reaches a set amount of product activity. Based on what we're building, create an NPS survey as an in-app guide using [Knock](https://knock.app), and record the score in the product.

Feature launch (Promotional)

Based on what we're building, create an in-app modal using [Knock](https://knock.app) that announces a new feature for users who opted in to product updates.

Promotions (Promotional)

Based on what we're building, create an in-app guide using [Knock](https://knock.app) that offers a limited-time discount on a paid plan. Dismiss it when the discount ends, or once they upgrade or close it.

Messaging infrastructure you can trust

99.99% uptime

We run Knock as critical infrastructure for your product.

Scaled delivery

Knock delivers hundreds of millions of messages per month.

Dedicated success

Our team helps you plan, build, and launch your messaging.

Secure access

Security is standard with support for SSO, RBAC, and SCIM.

HIPAA badge

HIPAA

Verified
SOC2 badge

SOC2

Verified
GDPR badge

GDPR

Verified
CCPA badge

CCPA

Verified

Frequently asked questions

Push notifications reach a user's device when your app is closed, through providers such as APNs and FCM. In-app notifications render inside your product while the user is in it, in a feed, inbox, toast, banner, or modal. Knock runs both from the same workflow, so an in-app message can fall back to push or email when a user doesn't see it.

Knock has client SDKs for React, JavaScript, React Native, Expo, iOS and macOS (Swift), Android (Kotlin), and Flutter. React, React Native, Expo, and Swift include pre-built feed components. The Android SDK provides API methods and a managed websocket connection, with no pre-built UI.

A feed returns a per-user list of messages for a feed-based UI, such as a notification center, inbox, or toasts. A guide renders a single message to a user when they visit a specific page, such as a banner, modal, or paywall. Both are in-app channels in Knock, and both render in your own UI.

No. Knock's in-app API includes websocket support, and the client SDKs manage the connection, so new messages appear in the feed without a backend to build or socket servers to run.

Yes. Use the pre-built components and override their styles, or build headless UI with the SDK hooks and the in-app API. Guides always render with your own components, and content comes from the Knock dashboard.

Every feed message has an engagement status of unseen, seen, or read, and users can archive messages. The default badge counts unseen messages, so the count clears once a user opens the feed. You can count unread messages instead.

Yes. Tenant scoping filters a feed so users only see notifications for their active workspace. You can also filter a feed by workflow or by a resource in your product.

Feed messages count toward message usage. The Free plan is $0 per month and includes 10,000 messages per month. The Starter plan is $250 per month and includes 50,000 messages, then $0.005/ea.

Guides use active user pricing: an active user sees at least one guide in a month. The Developer plan includes 500 guide recipients, and the Starter plan includes 2,500 guide recipients, then $0.05/ea. Guide views don't count toward message usage.

Knock delivers in-app messages to your own native UI through feeds and guides, and runs them in the same workflows as push, email, SMS, and chat. For a feature-by-feature view, see the Knock vs. OneSignal comparison at knock.app/comparisons/onesignal.