The latest releases and improvements to Knock.

Power notification localization with Knock

Today we’re super excited to announce the beta release of Knock template localization. With template localization you can use the notification templates you already send with Knock to create locale-specific variants for users that prefer to receive their notifications in a different language. This helps meet your users where they are and improve the notification experience of your product.

Let’s say you have a welcome notification workflow that sends new users an in-app message and an email. For each of those notification templates, you can create a variant that's localized based on each recipient's locale. At runtime Knock uses the locale property on your recipient to determine which language variant of your notification should be sent. We also provide a "default" template that's used for any recipients whose locale isn't supported.

Another great thing about today’s release: though we built template variants for localization use cases, you can use your own custom logic and expressions to power any template variant use case you can dream up. For example, if you wanted to send a tenant-specific variant of a given notification template, you could power it with Knock template variants.

You can learn more about template localization in our documentation and request beta access by sending us a note at

Enable auto-join for your Knock account

If you're a Knock account owner, as of today you can enable auto-join for users from your domain. A quick example: if you're the Knock admin for your company, once you enable auto-join any verified users with a “” email address can join your account.

This is a win for admins and end users alike. If you're an admin, enabling auto-join means (i) less time spend managing account invites and (ii) a safeguard against users from your domain accidentally creating their own account when they should be working in yours. If you're an end user, it means you can get into the right account for your organization when first signing up for Knock.

You can learn more about enabling auto-join in our docs.

Fixes and improvements

  • 🐛 We fixed a bug where template previews weren't honoring brand defaults.
  • 🐛 We fixed a bug where activities under a message weren't paginating on the feed API.

Set inline channel data and preferences

We've expanded our workflow trigger inline identify to support setting channel data and preferences for recipients. That means it's now easier than ever to start sending notifications to your users with Knock, without the need to backfill existing data. It even works for setting data for multiple channels and for per-tenant preferences too.

Read more on setting channel data inline and setting preferences inline in our documentation.

Conditions builder improvements

We've added a whole host of new features to our step and channel conditions builder this month. You can now reference:

  • Environment variables (e.g. skip this step if we're in the development environment)
  • Workflow run state including total_activities and total_actors (e.g. only execute the step if we have more than one item from a batch)
  • The current tenant (e.g. only batch for workspace X and never for workspace Y)
  • The current workflow (e.g. only send to SMS if the workflow category includes messages)

Read more in our docs.

Fixes and improvements

  • 👀 We expanded the delay block to support dynamic delays from the recipient, actor, environment and more
  • 👀 We added the ability to reference the in your notification templates to get access to the unique, recipient-specific
  • 👀 We moved 'Designing workflows' to its own section in the documentation
  • 👀 We made improvements to our email previews to be more consistent with what's sent
  • 🐛 We fixed an issue where JSON values in chat templates would not escape \n and \ characters correctly
  • 🐛 We fixed a bug with mailgun delivery checks where the requests would timeout after 5+ seconds
  • 🐛 We fixed an issue where some starter plans could not create a new webhook
  • 🐛 We fixed a bug where blank in-app feed messages would fail to send

Per-environment channel conditions

By popular demand, we’ve brought our condition builder to your per-environment channel configurations. Channel-level conditions are helpful when you want to add a condition to all instances of a channel in a given environment.

An example: let’s say you want to ensure that your email channel will only send notifications to recipients whose email ends in from your development and staging environments. Now you can.

We surface all channel-conditions on their relevant workflow-level steps and in the Knock debugger, so you’ll always have visibility into why a given notification is or isn’t sending.

Read more in our docs

Set batch order: first or last ten items

We’ve updated our batch function to include a new batch order setting. This enables you to set whether a batch function will include the full activity objects for the first or last ten activities aggregated by your batch function.

As a reminder, the Knock batch function will always return its total count of items and unique actors, but only returns full details for ten items in the batch for the purposes of listing out batch details in a notification (as we are in the example notification below).

Setting batch order example

Read more in our docs

Fixes and improvements

  • 👀 We redesigned the workflow builder
  • 👀 Added color labels for environments
  • 👀 Now you can commit on your workflow from the workflow builder page

Send WhatsApp notifications with Knock

You can now send notifications from Knock to your users on WhatsApp, the popular chat app from Meta. Our integration makes it easy to include WhatsApp in your notifications strategy, opening up another channel for you to reach your users where they are.

Read more in our docs

Vercel integration

We've shipped a new Vercel integration to make it easy for you to set up Knock for your Vercel projects. The integration will link your Knock API keys to your selected Vercel projects and keep them in sync for you.

You can find us in the Vercel integrations marketplace in the "messaging" category and read more in our documentation.

Fixes and improvements

  • 👀 [SDKs] We added new event types to our @knocklabs/client library in 0.8.13
  • 👀 [SDKs] We added experimental support for cross-browser context feed synchronization in our @knocklabs/client library in 0.8.13 via the new __experimentalCrossBrowserUpdates option
  • 👀 We redesigned our trigger conditions editor to be an inline form instead of a modal
  • 👀 We added a link to the workflow invoked from a source event action
  • 🐛 We fixed an issue where pagination for tenant messages was not working correctly

Workflow condition UX improvements

At Knock, we continually strive to improve the experience our users have building their notification workflows. As of this release, it's much easier to understand at a glance which workflow steps contain conditions and how those conditions will execute based on the variable state of a given workflow run. To see a step's conditions, just hover over its card chin to see a hover over preview of all condition groups present on the step. ✨

Push channel JSON overrides

We now support the ability to add JSON overrides to the notification payloads Knock sends to downstream push channels on your behalf. This means you can now support badge counts, extra data properties, sound files, and other provider-specific settings in your push notifications. You can learn more in our push channel documentation.

Fixes and improvements

  • 👀 Show canceled request id in debugger
  • 👀 Show delay until values in debugger for steps that support it
  • 👀 Support liquid variables in email templates footer links
  • 👀 Add tenant brand icons on dashboard
  • 👀 Display custom step names on workflow cards
  • 🐛 Fix SSO login using Okta tiles

Power your product notifications with Segment and Rudderstack

Now you can integrate customer data platforms (CDPs) such as Segment and Rudderstack with Knock to power your product notifications. This means that you can use the identify and track calls you already send to your CDP to identify users in Knock and send them notifications.

  • track events can trigger Knock workflows, with custom mapping from event properties into every part of triggering a workflow
  • identify events keep user information in sync with Knock, so that user changes like email updates are fully synchronized with Knock with no code changes required in your product

Here's what this unlocks for your team. If you're a product manager that wants to set up a new notification type without taking time from your engineering team, you can create a new notification workflow in Knock and trigger it when Knock receives an event from your CDP. You can map properties from your event into your notification template to personalize messages, and into other parts of your notification workflow to power recipients, tenants, and more.

Check out our integrations overview to get started, or dive into our docs for Segment or Rudderstack.

This is just the start of powering Knock with external sources. We have more providers on the way, including reverse ETL platforms such as Hightouch and Census. If there's a specific event or customer data platform you'd like to see us support, please get in touch.

Fixes and improvements

  • 👀 We added the ability to update the number of activities in a batch from the variable pane – very helpful when working with batch data.
  • 🐛 We fixed a bug with our account invitations whereby a user without a name would cause invites to be returned as "not found".
  • 🐛 We fixed an issue where editing an email template could crash the dashboard for a small number of users.

New Email + SMS channel providers

We're rolling out a whole host of new email and SMS channel providers today, available now under the "Channels" section in your account dashboard.

Email providers

SMS providers

If you need a specific provider not covered in our current providers list, please get in touch.

SAML 2.0 SSO Support

If you use SAML 2.0 SSO to manage authentication into the apps used by your organization, you can now configure your Knock account to enable users to authenticate into your account using your identity provider via SSO.

Note: SAML SSO is only available on our Growth and Enterprise plans.

Learn more about SSO

Fixes and improvements

  • 👀 We made some visual improvements to the variable pane in the workflow builder, making it easier to work with batched data like activities and actors
  • 👀 We now trim whitespace from email subject lines automatically, making it easier to work with
  • 👀 We made some internal improvements to our feeds endpoint, reducing the response time by 86%
  • 🐛 We now correctly support .first, .last, and .size calls on arrays in liquid
  • 🐛 We fixed an issue where changing template overrides would reset the editor contents within the email template editor
  • 🐛 We added more spacing around items in our visual email editor to work more easily on smaller screens
  • 🐛 We fixed an issue where message sending logs weren't appearing

Enable your customers to set account-wide default preferences

Today we're releasing per-tenant default preferences. When your product starts moving into larger organizations, you can often find admins asking for the ability to set a notification preference for all users in their account (or to set a default preference for those users at a minimum.)

Now you can support these types of per-tenant preference use cases with Knock. Our tenant preference model brings the same flexibility as our per-user preferences and lets you put them into the hands of your customers' admins.

Learn more about per-tenant preferences

Set pre-content variables in your email layout

Now you can set variables in your email template that will be rendered in your email layout ahead of your content block. This is great for when you want to set dynamic email preview text or dynamic header content within the layout of your email.

Learn more about pre-content variables

Fixes and improvements

  • 🐛 We fixed a bug in our test runner where our typeahead select fields were acting finicky.

Introducing role-based access control

Today we’re shipping a new set of account-level roles for the Knock dashboard, making it easy to grant more tailored permissions to members of your team who might not need full access to all resources within your Knock account.

The roles now available on your account are:

  • Owner: For your primary admin who manages billing. This role can invite and manage members, manage billing, and do anything available in the admin role. Your account must always have at least one account owner.
  • Admin: For admins who need to manage account-level settings. This role can invite and manage members (excluding owner and billing roles), manage account branding, manage environments, and manage advanced developer concepts such as signing keys, variables, and webhooks. This role has all permissions available to the member role.
  • Member: For users who are editing notification workflows and templates in Knock. This role can manage workflows, layouts, users, objects, and tenants. Users with this role can make commits and push changes to subsequent environments, and has full access to message and API logs for debugging.
  • Support: For users who shouldn't have access to workflows and templates, but should be able to dig into message and API logs for debugging purposes.
  • Billing: For account members who shouldn't have access to anything in Knock but billing.

You can see the full breakdown of the permissions available to each role in the documentation.

These new roles are available to all plans today. You can change roles and manage the members of your account from the "Account Settings > Members" page. As a reminder, there are no limits on the number of seats you can have assigned within your Knock account.

Read the documentation →

Dark mode docs 🌚

Our documentation is now available in dark mode for all those night owls out there. You can toggle to dark mode in the top header from any page in the docs.

Dark mode applied to the Knock documentation

Fixes and improvements

  • 🐛 We fixed an edge-case with our batching function whereby in a set of very specific circumstances a batch could be created twice for a workflow run
  • 👀 We added a new section to the docs for "Managing your account" including information about audit logs and managing team members

Test your fetch functions in realtime from the template editor

A couple weeks ago, we launched the fetch function for Knock workflows. Today, we're making it a lot easier to develop this function step with a realtime test runner purpose-built for fetch functions.

When you load the template editor, you should now see the new "Test console" in the lower half of the screen along with a "Send test" button next to the URL field. When you run a fetch function test, Knock will execute your fetch step in isolation, ignoring any steps before or after in your workflow. When the step has finished, Knock will load the result into the test console for your review in realtime with no need for a refresh!

We're always working to provide a great developer experience for everyone building with the Knock platform. With this new test runner, the develop ↔ debug cycle for fetch functions just got a great boost.

Check out the guide on testing fetch functions for more details, or head to the template editor now to try it out.

Set shared preference sets for all users and objects in an environment

We built preference sets in Knock to allow you to configure granular channel and workflow preferences on a per-user and per-object basis. Preference sets serve as a flexible tool to manage things like user-owned credentials and opt-in configurations.

But sometimes you may find you want to set preferences shared across all users and objects in your account. Today we're making that much easier with default preference sets!

You can now navigate to the new "Developers > Defaults" page, where you can configure a preference set that will be global to an entire Knock environment. When Knock loads the preferences for a recipient, it will merge the recipient's owned preferences into the global defaults. User and object preferences will still take precedence, but now you can manage shared preferences in a single space.

Fixes and improvements

  • 🐛 We fixed a bug that would prevent users in a small set of cases from saving a channel or fetch function template without a page reload.
  • 🐛 We fixed an issue where category preferences required all categories on a workflow to be opted-out before we considered the preference as opted-out.
  • 🐛 We fixed an issue where setting conditions for channel-type preferences would result in a 422 Unprocessable Entity error from the Knock API.

This site uses cookies to measure and improve your experience.