Changelog

The latest releases and improvements to Knock.

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 hello@knock.app 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