Knock Logo


The latest releases and improvements to Knock.

Power your Slack notifications with Knock

It's always an exciting day here at Knock when we add another channel type to our product. Today we're thrilled to announce that we now support Slack via our new chat channel type. Slack needs no introduction, but our integration in Knock might.

It's now effortless to add Slack support to your product, so your customers can connect their Slack workspace and receive updates in their channels about what's happening in your product. And of course our Slack channel comes with batching, delays, and everything else the Knock workflow engine supports, so you can send more thoughtful, engaging notifications to your customers in Slack.

We made our Slack channel model as flexible as possible, so you control where your customers integrate into Slack and how they map resources in your product into destination channels within Slack. This means that no matter what part of your model you want to map into Slack channels– users, accounts, workspaces, projects–we have you covered.

Learn more about our Slack integration →
See an example →

Objects: model and syncronize non-user entities in Knock

Our vision for Knock has always been to power complex notification workflows for your product. Sometimes those workflows necessitate sending notifications to non-users entities in your system. That's where objects come in.

Objects are a powerful and flexible way to ensure Knock always has the most up-to-date information required to send your notifications. They also enable you to send notifications to non-user recipients.

You can use objects to:

  • send out-of-app notifications to non-user recipients (such as a Slack channels)
  • send in-app notifications to non-user resources in your product (the activity feed you see on a Notion page is a good example)
  • reference mutable data in your notification templates (such as when a user edits a comment before a notification is sent)

As an example, SaaS applications often enable users to connect an object in the product they're using to a channel in their own Slack workspace. That way when something happens in that object (e.g. a comment is left) they receive a notification about it in their connected Slack channel. In this case, we can sync (via objects.set) this entity into Knock, connect Slack data to it (via objects.setChannelData), and then reference it as a recipient in a workflow trigger.

We're really excited about the power that objects can unlock for modeling your notification workloads and about the future possibilities they enable. Expect to see a lot more here soon!

Learn more about Objects in our docs →

Fixes and improvements

  • 👀 [Docs] We added new provider integration guides into our docs
  • 👀 [API] We now support bulk identifying, deleting, and setting preferences for users, available in >= v0.4.0 of our SDKs and via our API.
  • 👀 We added a new link to the docs in the bottom left of the dashboard, as well as way to easily send us a support ticket (powered by our new Slack integration internally 😎)
  • 👀 We improved the tooltips for workflows with no changes, and message templates that have no changes
  • 🐛 We fixed an issue with long property keys overflowing on the user detail page
  • 🐛 We fixed a bug where in a very particular case the messages page wouldn't load
  • 🐛 We fixed a caching bug with our template gallery where after cloning a template you might see incorrect values

Workflow debugger: see into the Knock notification engine

At Knock, we don't think engineering teams should have to give up observability when they decide to rely on a third-party tool instead of building in-house. That's why we've made a focused investment on our debugging tools: we want you to have the same visibility into the Knock notification engine that you'd have if you were running a notification system on your own.

Today we're excited to announce a big step forward for observability into the Knock notification engine that shows exactly what happens when you trigger a notification in Knock.

With our new debugger you can see all of the requests you've sent to the Knock API and, for each one, drill into its related workflow runs, its exception catches (if any are present), and the notifications generated and sent to your customers. We even show non-errors, such as when a user has opted out of a given notification via preferences or if they haven't received a push notification because they haven't installed your mobile app.

You can access the workflow debugger under the "Developers" page in the dashboard. Just open any workflow trigger log and open the workflow runs tab to inspect your workflows.

Workflow template gallery

We took the legwork out of starting notification workflows from scratch: now you can use the built-in template gallery for inspiration or out-of-the-box workflows. This helps developers new to Knock get a sense of what's possible, and for those already familiar with building workflows, a baseline to build from.

You can access the template gallery in two places: first, from the Create workflow button, you'll see there's now a segment to view templates and create directly from there. Secondly, if you've created a blank workflow you'll see a new button to Start with a template.

We've added several categories of templates we see you use most often: collaboration, growth, and authentication. Each one has preset steps that you can adjust once you create your template to tailor to your users. Any channel steps will also automatically use one of your own configured channels.

Fixes and improvements

  • 🌱 Added the ability to rename and archive channels
  • 👀 Added a number of new liquid helpers including timezone, currency, hashing and more (see the docs here)
  • 👀 The template editor for SMS and push notifications is now resizable
  • 👀 You can now reset the data payload on the test runner when it deviates from the current workflow schema
  • 🐛 Previously line breaks showed as \n in push previews; they now show as true line breaks
  • 🐛 We fixed a bug in which the conditions editor didn't allow periods for nested data
  • 🐛 We now correctly parse integers and floats in step trigger conditions, rather than treating everything as a string
  • 🐛 Fixed a bug where the quick reference would open when typing "?" in the variable pane text editor

Inline action support in feed components

Actionable notifications are key in creating a great notification experience for your customers. This is especially useful for things like approvals, or for inline comment replies inside of your application, so your users can take a quick, contextual action right in the notification feed.

Previously, you'd have to extend our NotificationCell component to add inline actions, but with the new v0.5.3 release of the @knocklabs/react-notification-feed library, you can now easily add actions using our pre-built components. Use our button components to add asyncronous actions like approve or reject flows, or bring your own components to introduce any kind of inline action to your notifications.

Take a look at the documentation to get started.

Fixes and improvements

  • 👀 We added support for showing the uploaded account icon in the top left corner of the dashboard
  • 🐛 We fixed an issue with our SMS providers where users created in the dashboard could cause messages to fail to send
  • 🐛 We fixed a bug with our template editor where the page would reload and you would lose your work in certain circumstances

Manage your branding assets directly within Knock

Notifications use branding elements, such as a logo or an icon, to communicate and reinforce your brand values with your users. When you get started with Knock, one of the first things you'll want to do is define those brand elements in your layouts and templates. We now support uploading and managing your brand assets within the Knock dashboard to make this initial experience easier.

Under Settings, you now have a new Branding tab where you will be able to upload your logo as well as an icon. Once uploaded, these branding assets are automatically set and accessible as template variables, so you can start using them in your layouts and templates immediately. We've also added a preview panel so you can quickly get a sense of how they look and feel.

Lastly, Knock will host these uploaded assets for you behind a Content Delivery Network (CDN), closer to where your users are so they always render as quickly as possible.

Fixes and improvements

  • 🌱 We now have an official Knock .NET SDK! It is available via the NuGet package manager
  • 👀 We made several visual refinements to the dashboard sidebar menu
  • 👀 We improved the workflow list to show the types of channel steps configured in each workflow, so you can get an idea about your workflows at a quick glance
  • 👀 We improved the usability of defining a trigger condition based on a message status, by using a picklist of message statuses instead of using operators
  • 👀 We improved the visibility of the step menu button in the workflow editor
  • 🐛 We fixed a bug where in-app provider settings were not being saved
  • 🐛 We fixed an issue where a workflow remained in the browser cache after being archived
  • 🐛 We fixed a flaky hotkey issue in the workflow editor where pressing (E) did not always take you to the selected step for edit
  • 🐛 We fixed a usability issue when defining a trigger condition, where you can now only refer to a step prior to the selected step
  • 🐛 We fixed a bug in the email preview where 'From' and 'To' addresses weren't correctly shown based on the selected channel or the recipient

Workflow filters and step previews

When you start adopting Knock to power all of your notifications in your product, you can end up with a lot of different workflows. To make finding a particular workflow easier, we now support workflow filters. You can filter by a workflow's status (whether it's active or not), whether it has uncommitted changes, by its name or key, and even by the types of steps it contains. Now finding the workflow you're looking for is a breeze!

We've also added a preview to the types of steps within a workflow, so you can easily see all of the workflows that contain a batch step, or even all of your push notification workflows, right from the workflows list.

Fixes and improvements

  • 👀 We improved the blank state designs for messages, users, and channels and added a new no results blank state when you're filtering and there are no results.
  • 🐛 We fixed a bug where going to the message debug logs wouldn't allow you to use the browser back button.

Add users right from the dashboard

To make getting started with Knock even easier, you can now manually add a user to a development environment, right from the users page in the Knock dashboard. This means you can easily add a new user to start sending test notifications without using our API or SDKs.

Additionally, when your teammates accept an invite to join your account on Knock we now add them as a user so you can start sending them test notifications. You'll see them appear in your development environment under your users list, and in test runner.

Resetting unstaged changes to a workflow

Sometimes you make changes to a workflow in testing that you want to throw away. Instead of needing to manually revert the changes back to the previous state, you can now select the 'Reset all unstaged changes' button in the workflow menu to reset the workflow to its last committed state.

Fixes and improvements

  • 🌱 We added the ability to rename and archive the workflow from the three dot menu on the Workflow page.
  • 🌱 We added a new onMarkAllAsReadClick callback to our feed component so you can easily instrument that event, and improved the accessibility of the component in the v0.5.2 release.
  • 👀 We improved our user search typeahead component to not collapse users with the same email into one row. We also now show the user id, or email depending on what's being searched for to help you find the right user.
  • 👀 We added a new channel filter on the messages list so you can easily find all messages that were sent to a certain channel.

Today marks exactly 6 months since we published our first changelog, way back on May 5th 🎉. The product has come a long way in that time, and it's fun to look back on all that we've shipped. Onwards!

Sandbox mode: test notifications without sending them

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. Our new "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 actually sending live notifications through that channel.

You can enable sandbox mode via your channel configuration from the dashboard today and it's supported across SMS, push, and email channels.

Autogenerate plaintext emails

Writing both an HTML and plaintext template for your emails can be a tedious process. To speed things up, you can now generate the plaintext template straight from the HTML you've crafted, automatically.

All new email templates have this feature enabled by default from today. You'll see the generated plaintext content in the editor and in the preview. If you want to change the setting, you can do so from the plaintext view in the email template editor by toggling the "automatically generate plaintext" switch.

Fixes and improvements

  • 🌱 We added the ability to enable email open and link tracking within supported email providers. You'll see the options inside the environment configuration for your provider and they will default to "off" (don't track).
  • 🌱 You can now rename environments that you have created from the environments list view in the dashboard.
  • 🌱 We now send over the workflow key as a tag, or category to the downstream email provider. This makes it easier to do segmentation and analysis of your emails.
  • 👀 We improved the timeline design and debugger blank state in the messages view.
  • 👀 We made the wording consistent for when you're committing unstaged changes to an environment.
  • 🐛 We fixed a bug whereby you couldn't create an environment with the same name as one that was deleted.
  • 🐛 We fixed an interesting edge case in our notification engine that affected test runs in very particular cases.

Debug your Knock developer logs

Today we're launching the first piece of the Knock debugger experience. In our new debugger logs, you can see all of the API requests you've made to Knock, view their status, and filter to find the requests that you need to debug.

This is our first step towards a goal that's important to us at Knock: full developer visibility and observability into the Knock notification engine. It's our belief at Knock that when you use a 3rd-party system to power a part of your stack that's as important as notifications, you shouldn't have to sacrifice visibility and observability.

We have a lot more exciting updates coming soon in this part of the product. Stay tuned.

Fixes and improvements

  • 🌱 You can now pop out a separate window for code editing on single-line fields that accept variables and liquid logic, such as subject lines and action URLs
  • 🌱 We added the ability to filter by recipient email on our message logs. This makes it even easier to quickly look into any notification issues you're hearing from a specific customer
  • 👀 Now when you push workflows to production we show you which of those workflows are inactive in production and ask you whether you want to activate them
  • 🐛 We fixed a bug where the undo/redo stack was lost when you'd move back and forth between the editor and the preview in the template editor
  • 🐛 We fixed a bug in the test runner where shifting focus back to an actor or recipient field would cause the field to miss the first character inputted into the field
  • 🐛 We fixed a bug where Chrome auto-fill was appearing on fields in the test runner

List filtering

Now you can filter across all lists of resources within Knock. Whether you're looking for a specific workflow, a notification you sent to a customer, or a user within Knock, you can use filters to quickly find what you're looking for.

This is especially helpful for debugging use cases. Want to find all of the notifications sent to a particular recipient? Just filter by that recipient's email address or user ID to find every notification you've ever sent them.

We'll also be adding filtering to our new debugger, which you'll see show up in this changelog in the coming weeks. 🤫

New channel support: Expo for push, Telnyx for SMS

We added two new providers this week. If you manage your mobile app and push notifications through Expo, you can now orchestrate those notifications from within Knock. Same goes for Telnyx. You can now send Telnyx SMS messages from Knock.

Template editor quick reference

Over the last months of our invite-only beta, we've been amazed at the different types of notifications our customers power with Knock. They've used our template editor to build notifications with conditional logic, for loops, and copy that updates depending on the number of items in a given batch.

To help our new customers discover the power of the Knock template editor, today we're shipping our quick reference guide. Just press ? to open the reference and see a list of the properties and keywords you can use to build your Knock templates.

Screenshot of a template editor quick reference

We've also added new documentation about our template editor, so you can go even deeper into the functionality available within it.

Fixes and improvements

  • 👀 We shipped a new and improved trigger condition editor that makes it a lot easier to reference the read status of other steps when deciding whether to send a given notification, (e.g. don't send an email if the in-app notification has already been seen.)
  • 🌱 We made it easier to preview the action url on an in-app feed message, it now appears beneath the input and on hover of the message in preview
  • 🌱 We added the ability to provide a from name on our email channel configurations so you can put your best foot forward when sending emails to customers
  • 🐛 We improved the stability and performance of our push notification sender

Reorder your workflow steps with drag and drop

You can now reorder the steps in a workflow with drag and drop. This is especially helpful when you want to introduce a new batch or delay function into an existing workflow.

Fixes and improvements

  • 🐛 We fixed a bug in our environment promotion flow where multiple commits to the same workflow could get into the incorrect order in staging, causing discrepancies between development and production environments
  • 🐛 We fixed a bug where new users would get routed to an empty environment on initial sign-in
  • 🐛 We fixed a bug where refreshing the users page while in the production environment would route you to development

New delay function: wait until timestamp

Delays in Knock have always allowed you to pause the execution of a workflow for a fixed period of time. These "delay for duration" delays are handy for conditional sends and reminders, such as the invite notifications that we power with Knock. With this release we've made delays even more powerful by adding support for "wait until timestamp", where you can specify a future timestamp in your notify payload at which you want the workflow to resume execution. The classic use case for this is task reminders, where you need to trigger notifications at a specific timestamp in the future, rather than at a fixed period from when the workflow was executed.

You can start using timestamp-based delays today. Just select the 'Wait until timestamp' option in the delay step and specify the key to look up the timestamp from your data payload.

Bulk message operations API

We heard from some of our power users that they needed the ability to bulk modify the status of messages sent to their customers, which is especially helpful when needing to archive all of the existing messages for a given user, or mark all of the messages for a particular channel as read.

We've introduced our new bulk message status API to address this need, which lets you update the status of messages on a given channel without needing to know the message ids. It's the first bulk operation API at Knock, and we also introduced an accompanying bulk operation endpoint so you can monitor the progress of these jobs.

You can find the new bulk endpoint in our Postman collection, or can read the API documentation to interact with them via cURL.

Fixes and improvements

  • 🌱 We updated our dashboard to include the currently active environment in the URL, making it easier to share links to users, workflows, and messages with your colleagues
  • 🌱 We improved the empty state you see when a message can't be found, keeping it inline with what you see for users and workflows
  • 🐛 We fixed an edge case in our workflow engine whereby a workflow step could be triggered multiple times when a channel configuration was missing in the environment
  • 🐛 We fixed a visual layout issue with our workflow editor where the canvas didn't extend to the bottom of the page

Test your notifications without leaving Knock

We just shipped the Knock test runner. Now it's easier than ever to test the notifications you build and send with Knock!

If you've been responsible for testing notifications in the past, you know how painful it can be. To test just a single notification, you need to create multiple test users in your product and re-create the real-life scenarios in which they'll receive the notification. It's a time-intensive, tedious process, and one that makes it hard to ensure your customers are getting the best notifications experience possible.

With the test runner, you can test your notifications from right within the Knock dashboard. You can choose which notification(s) you'd like to test, determine which users or test aliases should receive the notification, and run tests across your different development and staging environments as needed. The test runner will remember the inputs used in the last test run for next time, so you can rapidly test and iterate on your notifications.

It just got a whole lot easier to make sure you're delivering great notifications to your customers.

Here's a look at the test runner in action:

Push individual workflows to production

When you're working as a team in Knock, you'll often have a few different notification workflows you're building in parallel. Now you can pick and choose which of those workflows you want to push to production, rather than having to push all of them at once.😅 We're excited to see larger teams adopting Knock and asking for features like these to improve their workflow.

Fixes and improvements

  • 🌱 Improved the sidebar layout of the dashboard for easier and more intuitive navigation
  • 🌱 Added a new "FCM + APNS" channel group option that can be configured to group both providers as a single push channel (available by request while in beta)
  • 🌱 Push notifications now include knock_message_id field in its message data payload, so you can easily track push messages and mark them as seen or read
  • 🐛 Fixed a bug with HTML sanitization in our message editor that caused issues with rendering certain email templates
  • 🐛 Fixed an issue with timestamps rendering truncated in the Users and the Messages pages
  • 🐛 Fixed an issue with an user avatar not updating correctly in the feed item preview when switching actor or recipient users
  • 🐛 Fixed an issue where some fonts were not being fetched in the Knock dashboard

Feed components: dark mode, pagination, and archiving

We've bundled a whole heap of new fixes and improvements in our 0.5.0 release of our React in-app notification feed component:

  • 🌱 Support for dark mode via the new colorMode prop
  • 🌱 Added automatic pagination support for when there are more than 50 messages in the feed
  • 🌱 Notifications can now be archived easily from the feed component
  • 🌱 Added support for overriding the avatar rendered in the notification cell
  • 🐛 Fixed an issue with dismissing the component in the popover not working when using the trigger
  • 🐛 Fixed an issue where the avatar would show > 2 characters for names that are more than 2 words
  • 🐛 Updated all of our dependencies to the latest and greatest versions

You can also read about how to get up-and-running using our feed components in our new blog post.

Message previews

We now support sent messages previews in the Knock dashboard! Just head on over to a sent message and go to the 'Preview' tab to see a representation of the message that we sent to the customer.

Example of a message preview on iOS

Fixes and improvements

  • 👀 Shipped @knocklabs/client@0.5.0 which includes a new networkStatus API and optimistic archiving support on the feed
  • 🌱 Switched to using refresh tokens in the dashboard to prevent frequent logouts
  • 🌱 Moved to using a tags for our tables so now right clicks and other browser features just work
  • 🌱 Workflows now show when they have pending changes
  • 🐛 Improved the click area on our table cells for ease of navigation
  • 🐛 Fixed an XSS vulnerability in our message editor
  • 🐛 Fixed a bug where cloning workflows doesn't enforce the key constraints
  • 🐛 Fixed some users being incorrectly logged out in the dashboard

Fixes and improvements

It's a short week here at Knock HQ, but we've still got some goodies for you:

  • 👀 Added support for dynamic delays specified by a value in the notify data payload
  • 🌱 Improved the way long workflow names are handled in the dashboard, as well as some other layout fixes
  • 🌱 Added pagination to the workflow list in the dashboard
  • 🌱 Improved the in-app notification feed rendering speed
  • 🐛 Fixed an issue with a batch step so a specified duration is honored instead of always using a default 30s
  • 🐛 Fixed an issue with FCM where integers and booleans in the data payload would cause an error when sending messages
  • 🐛 Fixed an issue where users with non-url encoded characters in the id wouldn't load in the dashboard

View delivery logs

The dashboard now lets you inspect message delivery logs!

Our new delivery log viewer makes it very easy to see every request to and response from your downstream providers for each message, which provides full visibility into the downstream execution history of a message.

For example, when you're configuring a new channel with Knock, you may run into errors from a downstream provider like SendGrid or Apple's Push Notifications Service. If you can't see these errors in Knock, it makes it hard to know what's going on and how to fix the problem. Delivery logs make it easy to investigate issues like this.

To view these logs:

  1. On the dashboard, open the Messages page (You can also open the Messages tab for any of your users)
  2. Click on the message you would like to inspect
  3. Open the Debug panel to explore each request & response linked to that message

(Note: Messages sent to our in-app feed will have no debug logs because they are entirely managed by Knock.)

Fixes and improvements

  • 🌱 We updated the channel and the workflow page to display each provider's brandmark where relevant for better UX
  • 🌱 We added a new user's "channel data" page for viewing the configured channel data for each user
  • 👀 When configuring a new channel, available providers are now organized by channel type making it easy to find and selected the provider you want
  • 👀 We added support for removing items in a batch via our cancellation API
  • 👀 We improved how we render liquid templates
  • 👀 We pushed updates to our SDKs for Python, Ruby, Elixir, and Node to support our latest features, including the new channel data API for managing user-specific data such as device tokens for push notifications

Push notification support

Push it to the limit. 🤘 We now support sending push notifications from Knock.

If you're using native push notification services (such as Apple Push Notifications service or Firebase Cloud Messaging), you can quickly configure your provider as a push channel within Knock and add it to any of your existing notification workflows. We also support platform-specific previews, so you can see what your push notification looks like across iOS and Android.

As always, push can be used with the Knock preferences model to manage a given user's preferences for receiving push notifications alongside their preferences for other channels such as email, in-app feeds, and SMS.

(Note: We are not supporting intermediary push notification services such as OneSignal in this release. But we will be soon. If that's you, shoot us a note at and let us know.)

Fixes and improvements

  • 👀 We added our Ruby SDK to the code examples modal on our workflow trigger step
  • 👀 We cleaned up the placeholder copy in our sign up flow
  • 🐛 We fixed a bug in our quick start guide example
  • 🐛 We fixed a bug for handling unknown message statuses

Ruby SDK

We've expanded our SDK coverage to support Ruby, the shiny "gem" of a language that's ever popular in the startup community. That means you're now easily able to integrate Knock into your Ruby-on-Rails applications!

You can get started with the Ruby SDK by running gem install knockapi or checking out the repo.

Want an SDK that we don't currently support? Let us know and we'll consider adding it.

Fixes and improvements

  • 🌱 You can now see the phone number and avatar under the main properties on the user page
  • 👀 We made the API keys and other sensitive values hide their values by default
  • 👀 We fixed an issue whereby you couldn't load message information on the user page in the dashboard
  • 🔐 We added rate-limiting to critical endpoints in the management API as well as adding other security patches

SMS support

We now support sending text messages from Knock. If you're using an existing SMS platform provider (such as Twilio,) you can quickly configure your provider as an SMS channel within Knock and add it to any of your existing notification workflows.

As with all of our channel types, SMS can be used with the Knock preferences model to manage a given user's preferences for receiving SMS messages alongside their preferences for other channels such as email and in-app feeds.

We had a number of requests from our early customers to support SMS, and we're excited to add this new channel type to Knock to help our customers orchestrate their cross-channel notifications.

Fixes and improvements

  • 🌱 We updated our channel model in Knock to make it easier to change which provider you're using for a given step in a notification workflow. This helps with multi-provider management and will have a number of benefits as we support push and chat app notifications later this summer. Stay tuned
  • 👀 We updated our in-app feed react component to use plain CSS instead of CSS-in-JS. Two nice wins here: the package is smaller and you can extend/override the default CSS used in the component
  • 👀 We updated the default behavior of the in-app feed component to wrap text without breaking words
  • 👀 We improved our topbar height consistency throughout the dashboard to minimize content layout shift as you navigate between the workflow builder and the notification designer
  • 👀 We improved our toast component to make it dismissible in cases where it might block functionality

Fixes and improvements

We're heads down on some big new features this week, and we'll have more to say about that soon. For now we have a smattering of improvements for you:

  • 👀 We added the ability to copy channel environment configuration from one environment to another, making it faster to setup your channels when your environment specific channel configuration is the same
  • 🌱 Triggering a workflow via the API now returns an error if the actor specified does not yet exist
  • 🌱 We added anchor links to our documentation site so that you can easily deep link to each heading
  • 🐛 We fixed an issue where you could get stuck in an unauthenticated state on the dashboard
  • 🔐 We've been hardening our infrastructure security to lock down any outside attack vectors

Mailgun integration

We now support Mailgun as an email provider within Knock!

If you are currently using Mailgun to send emails to your customers, you can now configure a new email channel with Mailgun in Knock and start using it in your workflows in no time.

Fixes and improvements

  • 👀 We improved the template editor experience where you can now select a different user as an actor or a recipient when crafting your notification template
  • 👀 We added the ability to include a custom message when inviting other team members to your Knock account
  • 🌱 We added support documentation accessible via the '?' icon in dashboard header
  • 🐛 We fixed the user preferences page to be read only (user preferences are updated via the Knock API)
  • 🐛 We fixed a bug in the template editor where switching to text view didn't allow editing email texts
  • 🐛 We fixed small styling inconsistencies across various popover menus in the dashboard header

Variable and state explorer

When you design a cross-channel notification, you use a lot of shared variables across each of its per channel templates. Whether a notification about a new comment is sent across email, push, or in-app, it's always going to include context about the page it was left on and who left it.

We just shipped our variable explorer to manage this shared state across the different channel templates you design within Knock. The variable explorer makes it super easy to see which properties are available for use within a given workflow, whether they are global variables within your Knock account, properties from your notify or identify calls, or even temporary state generated by functions within your workflow.

Create a property once, then use it across all of the channel templates within your notification workflow. Try it out and let us know what you think.

Amazon SES integration

We now support Amazon's Simple Email Service (SES) as an email provider within Knock. This means that if you already use SES to send emails to your customers, you can get a Knock email channel up and running in minutes. We handle all email orchestration and user preferences with SES, all you have to do is configure your notifications within Knock and we take care of the rest.

You can learn more about how to configure SES in your Knock account in our support documentation.

Leave us feedback

We added a new feedback component to the dashboard so you can tell us what you love and don't love about Knock. We want all the feedback we can get so have at it.

Fixes and improvements

  • 👀 We improved the workflow builder so that recently configured channels appear in the builder without a browser refresh
  • 👀 We improved the empty state in the workflow builder to help guide new users to channel configuration
  • 👀 We updated the message details pane to make it more actionable
  • 🐛 We fixed a bug in the message details pane where recipient info was being displayed instead of actor info
  • 🐛 We fixed a bug related to multi-environment channel configuration

Fixes and improvements

  • 👀 We improved the design of the trigger condition UX to make it easier to add conditions to a channel within a workflow (e.g. if you only want to send an email based on the read status of an in-app message)
  • 👀 We added tooltips to our disabled states
  • 🌱 We added a new state for when you switch between environments while viewing a resource that doesn't exist in the target environment. Instead of getting a 404, we tell you why the resource wasn't found and direct you to other environments in which you might find it
  • 🐛 We fixed a bug where deleted users would cause the message log to error
  • 🐛 We fixed a bug where creating a new step in the workflow builder would cause the page to 404
  • 🐛 We fixed a text overflow bug in the variables table
  • 🐛 We fixed a bug where real-time updates to your workflow schema wouldn't appear in the trigger step payload without a refresh

Google auth support

We added support for Google authentication into our login flow. If your organization uses Google Workspace to manage users, those users can log into Knock using their Google credentials.

Passwordless login

We also shipped passwordless authentication as part of this release. Two things we like about passwordless auth. First, if you're an end user you don't need to keep track of a password for Knock. Second, if you're an organization that enforces two-factor authentication through your identity provider (e.g. Google Workspace,) you can rest easy knowing that the only door into Knock is through the email account of that user.

Fixes and improvements

  • 🌱 We added a "get code examples" experience to the trigger step in a workflow. This helps you quickly look at code examples for our supported SDKs and grab the fully formatted notify call (with all necessary data variables included)
  • 🐛 We fixed a bug where the message and user lists wouldn't properly load on first view
  • 🐛 We fixed an issue with real-time updates per tenant on the notification feed component

Multi-environment support

Today we support two environments in Knock—development and production—to give you a way to create and test your notifications before pushing them to your customers. But sometimes two environments aren't enough to map to the logical environments that you use in your application.

We now support adding additional environments to Knock so you can ensure the environment promotion flow you use in Knock mirrors what you use in your own deployment flow.

You can add as many other additional environments as you need to support your software development lifecycle. Each new environment acts as a new branch in the content versioning model, allowing you to test in the isolated environment before releasing to production.

You can read more about versioning and environments in our guide.

Tenancy support

Many SaaS applications today enable a single user to access multiple workspaces (or tenants) with the same login. This tenancy model keep data from different customers separate, while allowing users to easily switch between the workspaces they use within that application. As an example, as a Notion user, I use one workspace for my work and another workspace for my personal needs.

When it comes to notifications, the main place where tenancy comes into play is in-app feeds. In the example above, I wouldn't expect to be notified about activity from my personal workspace when I'm in the workspace I use at work.

Today we're releasing tenancy support to handle this use case. Notifications generated by Knock can now be scoped to a tenant, which ensures that they only appear in that tenant's instance of the Knock in-app feed.

We've completely overhauled our feed logic to support this feature. Everything is taken care of for you—tenant scoped feeds show accurate badge counts for just the notifications within that tenant, updates for that tenant populate in real-time—and support is available out-of-the-box in our latest React notification feed components and Client JS SDK.

You can read more about this feature in our guides.

Fixes and improvements

  • 🐛 Fixed issue where archived workflows would appear on the "changes not yet in x" list
  • 🐛 Fixed issue where new workflows would not show up in the unstaged changes list
  • 🐛 Fixed issue where archiving a workflow with pending changes would still keep it in the destination environment
  • 🌱 Added ability to duplicate workflows
  • 🌱 Added support for displaying custom properties on a user profile page
  • 👀 Improved the styling of account and environment variables to aid with clarity

Preferences support

Preferences are a critical part of any notifications system. They let your users tell you when they want to hear from you, and when they don't. A good preferences system gives its users a way to unsubscribe from entire channels (such as email or push) and from individual notifications themselves.

We now support preferences on the Knock API. You can set preferences for your users at the channel, workflow, and channel-workflow level. This gives you the flexibility to offer your customers the preferences they want, in the format you want. You can keep your preferences high-level and just give your users a way to opt-out of channels, or get detailed and let them opt-out of specific notifications, or both.

The best part: once a user sets their preferences, we handle the rest. You won't have to write a single line of code to figure out whether a user needs to receive a given notification based on their preferences.

You can learn more about how Knock preferences work in our API documentation.

Fixes and improvements

  • Added support for user deletion for when users leave your product
  • Fixed an issue in the template editor where namespaced variables wouldn't save
  • Fixed a layout issue on the dashboard that was causing wonky scrolling behavior
  • Renamed Notification to Workflow in the Knock model to disambiguate between Notifications and Messages
  • Published version 0.2.0 of all Knock SDKs which includes preferences support

How to trigger a workflow

When you're building a new notification workflow, it can be hard to keep track of all of the variables you're using across different channels and what you'll ultimately need to use in your notify call to Knock.

We've made this process easier by giving you a sample notify call right within the context of the Knock workflow builder. Just select your trigger step and you'll see the workflow key and data payload to use in your call to Knock. You can also view code examples in your language of choice to quickly copy-pasta the notify call into your backend.

Fixes and improvements

  • We updated all of our ID fields to include a quick copy action
  • We fixed a bug in the preview variable editor where text wasn't wrapping

Cancel a notification

Here's a standard use case: you schedule a notification to remind a user about a task they need to complete in a few days, then before you send it, they complete the task. You don't want to send a notification to the user about a task they've already completed. You want to cancel that notification before it sends. Introducing Knock notify cancellation.

Now when an event takes place in your product that means you no longer need to send a notification to a user (a task is completed, an invite is accepted,) you can cancel that notification before it gets sent.

Learn more about canceling workflows in our documentation.

Fixes and improvements

  • Added a new default email layout that looks 👨‍🍳😘
  • Cleaned up the channel configuration form to better separate required and optional fields
  • Fixed a bug where the subject line in the preview editor was getting cut off at a certain length
  • Fixed a bug where clicking in the canvas outside of a workflow step wouldn't de-select a step
  • Updated the visual styling of our headers
  • Fixed a bug where navigating to the preview tab would register as a change on the commit log

See the users you've sent to Knock

We added a users page to make it easier to see who you've sent to Knock. We've found this to be super helpful in development when you want to know what user properties you have available to use in a template design, and to see which users you can call via the API to test a given notification.

You can see the general properties of that user, along with the messages they've received from Knock.

To learn more about working with users via the Knock API, check out our documentation.

We open sourced our React notification feed package

Our @knocklabs/react-notification-feed package is now open sourced under an MIT license and available on Github 💃. These components give you an instant, out-of-the-box notification feed that can be dropped into your app and includes real-time updates, accurate badge counts, and marking as "seen" and "read".

If you're not using React, or you want to customize the UI you can use the lower-level client JS SDK, which is exactly what our React feed is built with!

We're huge believers in open sourcing as much as we possibly can at Knock, and welcome contributions back from the community in this or any of our other packages.

Fixes and improvements

  • Added an invite new members flow to make it easier for teams working in Knock to invite their teammates
  • Added API references to our API documentation
  • Fixed a workflow creation bug where typing "-" in label field wouldn't auto-complete "-" in key field
  • Fixed a bug where the timeline of events in a given message's log were out of order
  • Open-sourced our feed components
  • Fixed a bug where concurrent real-time feed updates would sometimes fail to populate both items in real-time

Only send a notification when...

A lot of homegrown notification systems use simple logic when determining whether to notify a user on a given channel: if they can be reached on that channel, notify them. We would know, we shipped plenty of notifications that way at previous companies.

It gets the job done, but it also sends your users redundant email and push notifications about things they may have already seen in your app. There's a ticket in your backlog about sending email based on a condition, but you can never quite get to it.

Now you can user Knock trigger conditions to tell a Knock workflow when it should notify certain channels and when it shouldn't. You can do things such as only send an email if the sibling in-app notification of that email is unread after ten minutes.

We're jazzed about Knock trigger conditions and we're excited to see what you build with them.

Fixes and improvements

  • Added support for archiving workflows. Helpful for when you want to clear a workflow out of your dashboard that you aren't using anymore
  • Added real-time preview variable updates when switching between edit and preview tabs in workflow editor
  • Added local storage for preview variables so they persist as you navigate between different channels within a workflow
  • Added support for filtering by workflow key on feed API
  • Fixed an intermittent issue in feed when badge was only updating on feed open
  • Fixed a bug where unexpected integers were appearing in preview variables
  • Fixed a bug where iterating over workflow activities caused unexpected behavior in preview variables
  • Fixed blockquote markdown issue
  • Fixed a bug where adding variables to action URLs would add unexpected variables to the preview editor
  • Moved data key to the top of the Feed API response payload for better DX
  • Updated the auto-generated step name to be human readable
  • Updated key fields so they don't allow whitespace characters

We're live

We just went live with the Knock private beta. This changelog entry marks the first in what will be a weekly update on the new features, fixes, and improvements we've shipped at Knock.

There's a lot available in the private beta. Here are a few highlights.

  • Send notifications to email and in-app channels
  • Use our in-app feed react component to have a fully featured, real-time feed working in minutes. Want to build your own? Check out our SDKs
  • Build advanced notification workflows with our batch and delay functions
  • Get full visibility into all of the messages sent by Knock and the delivery status of each
  • Manage your notifications using the same commit and environment promotion flow you use in-house

If you want to see the product in action you can check out this six-minute demo.

Want access to the Knock beta? Hit the "get notified" button at the top of this page to add your name to our wait list and to get notified when we have room available.

Fixes and improvements

  • Shipped Elixir, Python, and Node SDKs for working with Knock
  • Shipped a login flow
  • Fixed a bug where environments wouldn't support consistently on the channel configuration page
  • Fixed a bug where batches we're being capped at five items
  • Fixed a bug where liquid conditionals weren't working in our email channels
  • Fixed a bug where feed items weren't always populating in real-time
  • Fixed a bug where the unseen badge wouldn't consistently disappear on feed open
  • Fixed a bug where failed emails were hanging in "queued" status
  • Fixed a bug where new workflows would default to status ON instead of status OFF
  • Added 'key' field to workflow page so it's easier to grab for use with the Knock API
  • Added support for password resets
  • Added relative timestamps to items in the Knock feed
  • Updated template editor so all edits trigger ability to commit changes to current environment