Changelog

The latest releases and improvements to Knock.

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