Changelog

The latest releases and improvements to Knock.

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