Β 

Changelog

The latest releases and improvements to Knock.

Send Discord notifications with Knock

Now you can use Knock to power the notifications you send to Discord.

We support incoming webhooks and Discord bots, so whether you're sending notifications to an internal Discord channel or to a bot that your users are OAuth'ing into their own Discord servers, Knock has you covered.

Like all channels in Knock, once you've configured Discord you're ready to add it into any of your notification workflows. Plus, you'll get full observability into the responses we receive from the Discord API so you can debug as needed.

Learn more about our Discord integration β†’

Fixes and improvements

  • 🌱 We shipped a new request buffer to help buffer incoming workflow trigger requests at scale
  • 🌱 We shipped our new push documentation to our docs after it had previously lived in our legacy support feature guides
  • πŸ‘€ We made a number of improvements to the variable pane editor. Now when you remove all references to a variable in your templates, its corresponding variable is automatically removed from the pane. If you rename all instances of a variable, its corresponding variable in the pane is renamed. This is a big win for variable pane usability πŸ™Œ
  • πŸ‘€ We improved our messaging in the debugger about skipped batch steps when a batch key could not be found in the data payload of the workflow trigger
  • πŸ› We fixed a bug where new users could be created by calling the preferences endpoint with a non-existing user_id
  • πŸ› We fixed a bug where certain template schemas would cause the app to crash upon attempting to view a workflow
  • πŸ› We fixed a bug where the email preview pane would hang when it couldn't find a layout with which to render the preview

Fixes and improvements

It's been a whirlwind of a week here at Knock HQ with our official launch yesterday πŸŽ‰

And now, we are back to our regularly scheduled programs β€” shipping!

  • 🌱 knock.app got a facelift with brand new designs!
  • 🌱 We added a system status page: status.knock.app
  • 🌱 We added JSON editor support for Slack
  • 🌱 We added email attachments support for Mailgun
  • πŸ‘€ Improved the design of toast alerts throughout dashboard
  • πŸ‘€ Improved the design of associated activities in the message overview
  • πŸ‘€ Improved the description of the batch key behavior in the workflow editor
  • πŸ‘€ Improved the empty state display for objects, and non-development environments
  • πŸ‘€ Added an ability to add a short description (up to 280 chars) to your workflows
  • πŸ‘€ Added an ability to use liquid syntax for email overrides
  • πŸ‘€ [Docs] Added a language selector for all of code examples
  • πŸ‘€ We now automatically set the default retention period of 365 days when creating an in-app channel
  • πŸ‘€ We now automatically create a message template when creating a new channel step in a workflow
  • πŸ‘€ We now consistently refer to "uncommitted" changes instead of "unstaged" in some places previously
  • πŸ‘€ We now display a configured provider logo when choosing a channel step in the workflow editor
  • πŸ› Added the missing chat type to the workflows filter
  • πŸ› Fixed an issue of accidental duplicate user accounts when signing up by handling user emails case insensitive
  • πŸ› Fixed the "View Workflow" link in the popover menu in the Workflows table
  • πŸ› Fixed an issue where cloning a workflow with overrides was erroring
  • πŸ› Fixed a request timeout issue with viewing certain log items
  • πŸ› Fixed the message status logic to use the highest status when there are multiple messages (if one message is "read" and another is "seen", then the evaluated status is "read")
  • πŸ› [Docs] Fixed the "Flash of Unstyled Text" (FOUT) issue

Power your Microsoft Teams notifications with Knock

Following our recent Slack support release, we are delighted to announce we now support Microsoft Teams as a new provider for our chat channel type πŸŽ‰.

Learning how to integrate with a new 3rd-party chat app provider can be a pain. You have to read through a lot of documentation just to understand how their integration model works, and you have to learn their message formatting syntax. With our Teams integration, we're abstracting away the schlep so you can focus on what matters: delivering great messaging.

You can add a Teams step to any of your workflows, just like any other channel. Once you do, we let you use basic markdown to edit your notification templatesβ€”we handle the translation into Microsoft's Adaptive Card syntax. If you want to build more advanced Teams messages, we give you a JSON editor so you can write Adaptive Cards yourself.

Like all channels in Knock when you use Teams you get full observability into the responses we receive from the Teams API, and you can store Teams channel data on user or non-user recipients.

Learn more about our Microsoft Teams integration β†’

Workflows: read-only mode

Knock was built with isolated environments from day one to ensure our customers didn't accidentally make changes to notifications in production. As of today, you can navigate into your production workflows in a safe, read-only mode so you can see which version is live in your production environment (and send test notifications as you need to.)

Fixes and improvements

  • 🌱 We added support for users to change their user names within the Knock dashboard
  • πŸ‘€ We updated the template editor theme to make it easier to parse liquid keywords, variables, and control flow operators

Email attachments

As of today you can include attachments in the email notifications you send with Knock.

Knock already enables you to dynamically update the content of your notifications with variable injection using the data you pass to us in your notify calls, and now you can include one or more attachments within that payload and we'll attach them to your email messages at workflow runtime.

We had to do some interesting work under the hood here to support large incoming data payloads (more on that another time), but we're now able to process multiple files (up to 10mb each) in a rock solid way. We hope you're as attached to this feature as we are. 😁

Learn more in our docs

Fixes and improvements

  • πŸ‘€ Batch keys are no longer required on batch functions. When no batch key is provided we batch by the recipient and workflow by default
  • πŸ‘€ We added a new "commit all" action in your development environment under the commits panel
  • πŸ‘€ We improved the commits panel in the dashboard
  • πŸ‘€ We made the logs page more obvious and not hidden under the "Developers" section
  • πŸ‘€ Large binaries sent in your data payloads will now be truncated in API logs
  • πŸ› We fixed a bug with our trigger condition logic where steps that didn't produce a message would always evaluate to false on trigger conditions referencing that output
  • πŸ› We fixed an issue where Slack summaries were not optional (as they should have been)

New customer onboarding

When you start with a new developer tool, it can be hard to know how to go from tinkering in your local environment to going live in production. Our new onboarding flow shows the basic steps you need to complete to send notifications to your customers in production using Knock.

We've included the relevant context for making your first API calls to Knock, and we show your progress so you know what to do next. We're excited to see how this guide helps new customers implement notifications in their product even faster than before.

Set notification preferences by workflow category

As of today you can add categories to your workflows in Knock and use those categories in your notification preferences.

Sometimes you want to enable your users to set a preference for a broad category of notifications instead of presenting them with preference controls for every type of notification you send. For example, you might have a category for direct notifications that includes everything from mentions to approvals to tasks due in the next 24 hours. You can learn more about how to power use cases such as this one in our preferences documentation.

Use multiple email layouts in Knock

Many of our customers use a default email layout across all of their transactional notifications, but sometimes you want a different layout for when you're sending a welcome notification from a founder (no styling at all) or an email from your marketing team (a bit more pizzazz). Now you can create multiple email layouts in Knock to use in the different workflows you power with our product.

Fixes and improvements

  • πŸ› We fixed a caching issue with cloning workflows
  • πŸ‘€ We added an explicit save button for our email layouts to make the editing experience better

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