You can use Knock to power sophisticated cross-channel notification workflows for your end users, triggered by your application or by events sent to Knock from various customer data platforms (CDPs) like Segment and Rudderstack.
We support the following channel types today:
- Email (such as Sendgrid, Postmark)
- In-app (such as feeds, toasts, banners)
- Push (such as APNS, FCM)
- SMS (such as Twilio, Telnyx)
- Chat (such as Slack, Microsoft Teams, and Discord)
- Webhook (send webhooks to custom channels or enable your own customers to configure webhooks in your product)
We support receiving events from customer data platforms which can be configured to trigger notification workflows in Knock.
- HTTP (a generic HTTP endpoint for accepting events)
Knock can also integrate with other tools for debugging, monitoring, and more, including the following:
- Datadog. Receive Knock platform metrics for workflow & channel successes and errors.
- Segment. Send Knock notification events to downstream analytics tools.
- Vercel. Synchronize your Knock API keys to one or more Vercel projects.
Unlike most parts of the Knock model, your integrations live at the account-level. This means that when you create a new integration in Knock (say, SendGrid), you only have to create it once.
Once an integration is created, you can then configure it for each of your environments. There are a couple reasons we enable per-environment configuration for each.
- If you use different instances of a service for each of your environments, you can use the respective API key or destination webhook URL of each within your different Knock environments.
- You can provide environment-level config details to your channels. A common example is to add the suffix "(dev)" to the "From name" on all emails sent in your development environment.
If you want to use the exact same configuration for a given channel across all environments, you can use the "Copy from" button to duplicate your configuration across environments.
Sometimes you don't want a message to be sent in a local or testing environment, but you do want the ability to debug your messages and see what might have gone out.
Sandbox mode enables you to generate and preview messages for a given channel, without sending them to your downstream provider for delivery. Sandbox mode is great for when you want to test a channel's output, but want your messages to end up at
/dev/null instead of sending live notifications.
Sandbox mode is supported across all channel types and can be enabled from the environment configuration view of a channel.
You can use channel conditions to place a condition on all instances of a channel within a given environment. As an example, if you want to ensure that your email channel only sends to recipients from your domain when it's executing in your staging environment, a channel-level condition would be great way to do that.
To add a condition to a channel's environment configuration, navigate to that channel under "Integrations > Channels" and then click "edit configuration".
Knock will execute your channel conditions for every step using the given channel across all your workflow runs. Knock will join these channel conditions with any step conditions via an
AND, meaning both channel and step conditions will need to pass evaluation for the step to execute. You can then use Knock's conditions debugger to examine the evaluations of your channel conditions.
You may encounter a use case where you consistently want to send the same template to two providers across all of your workflows. Push is a good example. If you're sending notifications directly to iOS and Android devices (through APNS and Firebase, respectively), you don't want to have to replicate templates across channel steps for each of those providers in all of your workflows.
Channel groups solve this problem. With a channel group, you can combine multiple providers into a single channel that you can use to send the a single notification template across multiple providers. As an example, I could have a "Push" channel group that hosts my connections for APNS and FCM, then use that single "Push" step for any workflows where I want to notify users across my mobile apps.
Note: Channel groups is currently in beta. If you'd like access, please reach out via the feedback button at the top of this page and we'll enable it for you.
Here are the providers we currently support within Knock. We're adding more each week. If you want us to add a new provider to this list, please let us know through the feedback button at the top of this page.