Changelog

The latest releases and improvements to Knock.

Introducing typeahead autocomplete and our formatting toolbar

Today we’re launching two enhancements to our template editing experience: typeahead autocomplete and a rich text formatting toolbar. These improvements make it easier to write markdown and liquid within our template editor.

First, autocomplete. Now all of the variables available in your workflow run scope, including trigger data, user properties, and more, are available to you in a typeahead autocomplete experience. We’ve also included all of Liquid’s available filters, so you can easily find the right tool to work with your template data.

Next, we added a new formatting toolbar to apply styling to your markdown templates using a familiar rich text editing interface. This means that whether or not you’re familiar with markdown, you’ll still be able to author rich text content within the Knock template editor.

Fixes and improvements

  • 👀 We overhauled our preferences documentation and introduced a new preferences section into the documentation to better explain the different portions of preferences within Knock
  • 🐛 We updated the version of the WhatsApp API from v14 to v19
  • 🐛 We fixed an issue where app_name and app_url were not being exposed under the "Settings > Variables" section of the dashboard
  • 🐛 We fixed the useAuthenticatedKnockClient hook in @knocklabs/react to prevent re-renders from occurring
  • 🐛 We fixed a type error in our Go SDK where Messages would not work when a recipient was an object

Manage user access with directory sync

Today we’re releasing support for directory sync within Knock. When enabled, organizations leveraging an Identity Management Platform like Okta can auto-provision, de-provision, and assign roles to users based within Knock. If you use Okta as your identity provider, you can map Okta groups to specific roles within Knock.

Directory sync is available to all customers on our enterprise plan. Read our documentation to learn more about using directory sync, and reach out here to learn more about our enterprise offering.

Send push notifications with OneSignal

We’re thrilled to announce that we now support OneSignal as a push notification provider. You can now send push notifications via OneSignal while continuing to orchestrate your multi-channel notifications with Knock.

To set up OneSignal as a provider in Knock, check out our documentation.

Fixes and improvements

  • 🐛 We fixed an issue with our Node SDK where sending a query parameter as undefined would pass it through to the request.
  • 👀 When you create an account in Knock, we now create two default variables for you for app_url and app_name.

Add conditions to workflow triggers

Today we’re adding the ability to set workflow trigger conditions on any trigger step. Previously to stop a workflow from executing, you needed to use a branch step at the start of your workflow with no channel steps in the branch. Now using trigger step conditions, you can halt a workflow from executing before any steps run.

This is especially helpful in cases where you have a high volume event stream that you’d like to point at a Knock workflow and then use a trigger condition to select when the workflow should actually run. As an example, you could have an account-balance-updated event connected to a workflow, with a trigger condition to only run the workflow when the account balance goes under five dollars.

You can access trigger step conditions by selecting any trigger step in the workflow builder or using the conditions object in your workflow definition in our management API.

Fixes and improvements

  • 🐛 We fixed an issue with our React Native SDK that incorrectly referenced document when instantiating a feed
  • 🐛 We fixed an issue with our JS client SDK where extra event listeners could be created when auto-managing sockets is enabled
  • 🐛 We fixed an issue where a deleted schedule could leave ghost schedules running

Introducing: Mobile SDKs for Swift, Kotlin, Flutter and React Native

Today we are releasing v1.0 of our Mobile SDKs. Our mobile SDKs wrap Knock’s client APIs and provide powerful abstractions for setting up push notifications and building in-app notification experiences.

Here is what we’re shipping today:

  • Native support & cross-platform libraries: Available for iOS (Swift), Android (Kotlin), React Native, and Flutter.
  • Streamlined push notifications: We’ve done the schlep work for you: setup is as simple as adding a few lines of code.
  • In-app notifications: Methods for fetching, displaying, and managing in-app notifications, along with the ability to connect to our real-time infrastructure.
  • User preferences: A preferences API and SDK methods make it easy to manage notification preferences within apps, allowing users to customize notification settings.

You can read about all of our SDKs in our documentation.

Fixes and improvements

  • 👀 We renamed the "Defaults" option in the developers menu in the dashboard to be "Preferences"
  • 👀 We added React 16 support to our React SDK and improved the bundle size by removing excess dependencies
  • 🐛 We fixed an issue with our React SDK where event listeners were not being cleaned up
  • 🐛 We fixed an issue with switching environments when setting preference environment defaults that would cause the editor to not be updated
  • 🐛 We fixed an issue with our preference setting endpoints where having null preferences could cause updates to fail
  • 🐛 We fixed an issue with some message webhooks types that would cause them to fail to register

Revert a commit

Today we’re expanding the capabilities of our commit system to include the ability to revert a specific commit. Reverting a commit makes it easy to undo a set of changes you already committed.

Previously when using the Knock commit system, there was no way to reverse a change that had been committed. With revert commits, you can reverse a change directly in the dashboard.

Read more about commits in the docs.

You can also check out this video to see how you can revert a commit from the dashboard.

Fixes and improvements

  • 🐛 We fixed an issue where skipped message statuses were not always evaluated correctly.
  • 🐛 We fixed an issue where channel data set on a tenant would be incorrectly exposed in the variable pane.
  • 🐛 We fixed an issue where system properties like phone_number were not able to be modified when used as preview data on a workflow.
  • 🐛 We fixed an issue where our Slack auth API would return a 500 without returning a descriptive error.

Preferences in workflow run logs

In workflow run logs, you can now see the exact preference set that was evaluated during that workflow run. Previously, this information was not surfaced.

Beyond the new preferences section, you can find some additional changes to this section of the dashboard:

  • The overview section of a workflow run log now shows workflow run ID, which is useful for debugging.
  • All data about the trigger step is now nested under “trigger” in the workflow run log.
  • We added a refetch button if you need to reload a workflow run log. Previously you needed to reload the entire page.
  • If your workflow has a delay step, the status is updated in real time, indicating when the step has been completed.

Fixes and improvements

  • 👀 We added support for side loading preferences when listing users and objects via the API.
  • 👀 We added support for the sum filter in liquid.
  • 👀 We added support for filtering subscribers of objects by recipients and for filtering the subscriptions of a recipient by objects.
  • 👀 We now show your account name and icon in mobile push previews.
  • 👀 We removed variable management from the developers section. It is now only located under settings.

Announcing: send windows

We're excited to announce our newest addition to the Knock workflow engine: send windows.

With send windows, you can tell any channel step in your workflow when it should execute and send a message to your customers. For example, if you want to ensure your customers only receive a given transactional email from your product during working hours, you can set its send window for Monday to Friday, between 9:00 a.m. and 6:00 p.m. local user time.

At Knock our mission is to provide engineering and product teams with tooling that helps them build more thoughtful notification experiences for their users, and send windows is a big step forward towards that vision.

Learn more about send windows in our docs.

Fixes and improvements

  • 👀 We added "Reset all uncommitted changes" to email layouts, translations, and event action mappings.
  • 👀 We now return an error if the Content-Type header is missing from PUT, POST, PATCH, and DELETE API requests with a body.
  • 👀 We moved the account settings page to be a separate page from the rest of the dashboard and refreshed the design.
  • 🐛 We fixed an issue where pagination within the subscriptions view in the dashboard may have led to no results being returned when clicking "Next".
  • 🐛 We fixed an issue where archived sources were still displaying their events within the event selector on a workflow.

Today we’re releasing SlackKit, a suite of embeddable UIs and APIs that make it simple to connect your product to your customer’s Slack workspace and send notifications to where your customers work.

Behind the scenes, SlackKit:

  • manages your OAuth connection and tokens.
  • helps your customers select which channels they want to receive notifications in.
  • integrates seamlessly with the rest of Knock, so you can easily send notifications to Slack alongside any other channel.

Shipping a Slack integration has never been easier.

Read the full announcement ->

Heap extension for analyzing customer engagement

Today we’re adding support for sending message delivery and engagement data to Heap—a digital insights platform to analyze customer engagement.

This release adds Heap alongside our existing Segment integration as a way to get data out of Knock for analyzing notification usage and engagement.

Note, to correctly analyze custom events in Heap, follow these steps to build new events.

Learn more about our Heap extension in our docs.

Fixes and improvements

  • 👀 We improved the way that event payload data shows in the variable pane.
  • 👀 We added a new onAuthenticationComplete handler to our SlackAuthButton component in the React SDK.
  • 🐛 We fixed an issue with filtering workflows in the workflow run logs view.
  • 🐛 We fixed an issue where calling the set tenant API with an invalid payload would return a 500.
  • 🐛 We fixed an issue where the workflow template gallery in the dashboard would load in an incorrect initial state.
  • 🐛 We fixed an issue where you could pass [null] as valid tokens when setting channel data for push channels.

Introducing our new command menu (cmd+k)

We've added a new way to navigate across the Knock dashboard and perform common actions through our new command menu. The command menu gives you a quick and easy way to:

  • Search and navigate to a particular workflow
  • Switch between your Knock environments
  • Search for a user using their id or email
  • Quick copy your API keys
  • ... and much more!

You can get started using the command menu in the dashboard by clicking the new "Search" link in the sidebar, or for all those keyboard shortcut lovers, by typing cmd+k.

Fixes and improvements

  • 👀 We added a new "Promote" button to the view commit modal to promote the commit to the next environment.
  • 🐛 We fixed an issue where using an event type trigger for a workflow would not default the data section in the variable pane.
  • 🐛 We fixed a regression in our Node SDK where the remove subscriptions objects method would fail.