Β 

Changelog

The latest releases and improvements to Knock.

SOC 2

Knock has successfully completed its SOC 2 Type II audit, certifying the effectiveness of our security processes and controls. You can learn more in our blog post announcement.

We've built Knock with security at the forefront of our design and architecture from day one. Now, automated monitoring through Vanta and formal policies allow us to stay up to date on our security posture at all times.

If you're a customer that would like to receive a copy of the report, please send us a note at security@knock.app.

Filter debugger by endpoint

We've added endpoint filtering to our debugger to make it easier to find the requests you're looking for. If you're debugging preferences work, filter to only see requests made to our preferences endpoint. If you're debugging our feed, filter to see feed requests. And so on.

Debugger filters

Fixes and improvements

  • πŸ‘€ We now surface test runner calls in our developer debugger so you can dig into their workflow runs just as you would for normal API calls made to Knock
  • πŸ‘€ We've made actor optional on our workflow trigger endpoint (after some helpful customer feedback!). When you include actor on a request you can use the actor. namespace to access user schema properties about the user or object that triggered the notification
  • πŸ‘€ The debugger now shows linked batched workflows on batch steps so you can know which subsequent events were included in a given batch
  • πŸ‘€ We updated our docs to move our API reference to its own dedicated part of the site. This gives it some breathing room and surfaces each endpoint as its own section of the sidebar for easier navigation
  • πŸ‘€ We added a new page to our API documentation describing the functionality of our Feeds API
  • πŸ› We fixed a bug where browser auto-fills were hijacking the inputs in our test runner
  • πŸ› We fixed a few links in the dashboard that were linking to outdated support documentation
  • πŸ› We fixed a bug where long account names would squish the account icon in the dashboard sidebar

Email is an important and widely used channel for many of our customers. If you are using an email channel in Knock, one of the first things you'll want to do is define the layout template for your emails. Knock already generates a great looking email layout for you as a starting point so you can quickly customize it to meet your needs, such as adding links to the footer section. But right now, this requires jumping into the code editor and fiddling with HTML or text content, which can feel like a hassle. We can do better.

Starting today, we've made our default email layout template available through a visual editor, so you can easily add footer links to our out-of-the-box email layout without having to jump into code. You provide the text and URLs for the footer links, and Knock will automatically translate them into HTML links or text equivalents in the layout template. Of course, you always have the ability to drop into the code editor for complete flexibility.

Merge users API

You may run into a situation where you’ve identified an invited user to send them a notification and then that user β€œgraduates” to a fully fledged user after they sign up, leaving you with two user profiles in Knock. Our merge users API is here to help you in this scenario!

You can now call the users.merge method in our SDKs to merge two user profiles together, moving the properties, channel data, and preferences from one user to another. The merge call will also move the message sending history so you can a nice, clear view on the messages sent.

Read more in the users docs β†’

Fixes and improvements

  • 🌱 We added an ability to override certain email channel settings per template for more flexibility
  • πŸ‘€ [Docs] We updated to include more thorough explanations on workflow functions: batching, delays, and throttling
  • πŸ‘€ [Docs] We added new security page to provide more information on our security posture and policies
  • πŸ‘€ [SDK] We released the latest Client JS SDK that improves TypeScript type definitions and introduces two new types of events (items.received.page and items.received.realtime)
  • πŸ‘€ [API] We added rate limiting on our feeds endpoint (5 reqs/sec/user) as a safety measure for availability of our service
  • πŸ‘€ [SDK] All of our SDKs have been updated to reflect the new merge users API
  • πŸ‘€ We improved how we display workflow steps in the workflow editor to show its description, when available
  • πŸ› We updated the label of the user id filter UI to read "contains" instead of "is equal to" to more accurately describe the fuzzy match logic

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.

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.