Β 

Changelog

The latest releases and improvements to Knock.

Introducing Knock in-app messaging components

Today we're excited to announce the launch of a new set of in-app messaging components for our React SDK, making it possible to power a new set of in-app experiences with Knock.

Previously, our in-app SDK was limited to powering feed and inbox experiences, and used to integrate our SlackKit components into your application. Now with today's release, you can use our new <Modal />, <Banner />, and <Card /> components to build out a new set of in-app experiences for your users, all powered by Knock's real-time messaging infrastructure, and seamlessly integrated into our workflow builder.

Our in-app components enable your content editors to create and manage in-app messages directly within Knock's workflow builder as part of a cross-channel messaging strategy. Because in-app messages are just another channel in Knock, you can create them as part of a workflow powered by events, or even when your users enter an audience. That means you can build experiences like:

  • Welcome messages: show a modal when a user signs up for your product.
  • Overage banners: when a user exceeds some usage threshold on their account, show a banner to let them know.
  • Upsell cards: show a persistent message within your product to upsell your users on additional features once they've onboarded.

Each of our out-of-the-box components are fully customizable, with the ability to override the CSS variables or classes associated with each component. Or you can even build your own components on top of our data layer via our hooks, making it easy to integrate Knock's messaging into your existing design system or component library.

Here's a quick look at rendering one of our components to show a banner at the top of your product:

import {
  Banner,
  KnockProvider,
  KnockInAppMessagesChannelProvider,
} from "@knocklabs/react";

const MyApplication = () => {
  const { user } = useCurrentUser();

  return (
    <MyLayout>
      <KnockProvider apiKey={process.env.KNOCK_API_KEY} userId={user.id}>
        <KnockInAppMessagesChannelProvider
          channelId={process.env.KNOCK_IAM_CHANNEL_ID}
        >
          <Banner />
          <MyHeader />
          <MyFooter />
        </KnockInAppMessagesChannelProvider>
      </KnockProvider>
    </MyLayout>
  );
};

Our in-app components are currently in private beta. If you'd like to be added to the beta experience, please reach out to our support team. You can read more about the components in our documentation.

Fixes and improvements

  • πŸ‘€ We made some visual updates to the look and feel of the workflow builder, including a new improved panels architecture.
  • πŸ› We fixed an issue with saving step metadata in the workflow builder.
  • πŸ› We fixed a bug with the branch step in the workflow builder that was hiding a maximum depth reached error.
  • πŸ› We fixed an issue with some modals that meant they were overflowing unexpectedly.
  • πŸ› We fixed an issue with viewing commits and committing workflow changes on the commits page.
  • πŸ› We fixed a bug where computed delay windows were showing the incorrect value in workflow run logs.

SMTP email provider support

We've added support for sending emails via SMTP through Knock. Our SMTP provider allows you to send emails through any SMTP server, giving you the flexibility to use your existing email infrastructure with Knock.

You can get started by configuring your SMTP provider in the "Integrations > Channels" page in the Knock dashboard. You can read more about the SMTP channel in our documentation.

Fixes and improvements

  • πŸ‘€ We've added support for using recipient.preferences as part of the workflow run scope. You can now target any property on recipient preference set within template variables and conditions
  • πŸ› We fixed an issue where overrides for branding and logos were not showing the base versions within the dashboard
  • πŸ› We fixed an issue that was preventing trigger conditions from being saved in certain cases

Introducing Audiences

Today we’re excited to announce a new way to power your notification workflows: Knock Audiences. Audiences bring the concept of user segmentation into Knock.

An audience represents a list of users you define who all share a common set of characteristics. You can build any number of segments of users that you'd like, bring those audiences into Knock, and then use them to power notification behavior.

With this release, you can bring audiences into Knock programmatically through our new Audiences API and direct integrations with reverse ETL tools like Hightouch and Census. Your audiences are then available to view and manage through the Knock dashboard.

Once you start creating audiences in Knock, you can use them to:

  • Trigger workflows when new users are added to an audience. This is great for powering lifecycle messaging (such as new user signups) and transactional messaging (such as payment method updates) use cases
  • Orchestrate branch and conditional logic within your workflows (e.g. if a user is in paid-users audience, opt them out of the workflow)

With today's release, we’re excited to expand the messaging use cases you can power with Knock and help our customers power a unified messaging motion across their product and lifecycle marketing.

Audiences are currently in beta. If you want to try them out, you can contact our team to request access. To learn more about what's possible with audiences, check out our documentation.

There's a lot more to come with Audiences in the future. They will form a pivotal building block for new features we're working on over the coming months, and we can't wait to share more with you soon.

Fixes and improvements

  • πŸ› We fixed an issue with translations where archiving a namespaced translation would cause other translations for that locale to stop working when previewing and sending
  • πŸ› We fixed an issue where using liquid in a JSON editor would sometimes cause the validation to fail

Expo SDK and React Native SDK updates

Today we've released a new @knocklabs/expo SDK that includes support for mobile and web applications built using the Expo framework. This SDK includes a new KnockExpoPushNotificationProvider component that streamlines the integration with Expo push notifications, helping you to quickly get up and running with push notifications powered by Knock and Expo.

We've also released a new version of our existing @knocklabs/react-native SDK that includes a new KnockPushNotificationProvider that exposes registerPushTokenToChannel and unregisterPushTokenFromChannel methods to support push notification token registration outside of the Expo ecosystem. You can see these in use in our new React Native example app, where we're integrating with Firebase messaging.

To get started with the Expo SDK, check out the documentation.

Fixes and improvements

  • πŸ› We fixed a bug where the test runner could not be accessed in non-development environments
  • πŸ› We fixed an issue with adding email template overrides with liquid variables that resolve to JSON

Workflow builder 3.0

The workflow builder is the visual interface for designing workflows in the Knock dashboard. It allows you to express complex cross-channel notification logic in an easy to reason about way.

After months of development, we're excited to announce a rebuild of the workflow builder with a new architecture, improved performance, and a more intuitive user experience. We've poured a lot of love into this update, and we're excited to share it with you today.

Here are a few of the key differences in the new workflow builder:

  • πŸš€ Performance: The new workflow builder has been rebuilt from the ground up with a focus on performance. You'll notice that actions like adding and removing steps now feel instant, making it a delight to use.
  • 🧩 Refreshed design: We've updated the visual style of the workflow builder to use our Telegraph design system. This includes a new color palette, typography, and iconography.
  • πŸ’ͺ Simplified step editing: Each step panel in the workflow builder has been rebuilt from the ground up to be more intuitive and easier to use.
  • πŸ˜΅β€πŸ’« Goodbye spinners: We've removed virtually all of the loading spinners from the workflow builder as a result of our new architecture, making actions feel more responsive.

Our goal at Knock is to build a powerful product that feels delightful to use, and we're confident that with our new workflow builder foundation, we're well on our way to achieving that goal. We will be making more improvements in the coming weeks, and you'll see us start to roll out these changes to the template editor next as well.

Stay tuned for more updates in the coming weeks, and we'd love to hear your feedback in the meantime.

Fixes and improvements

  • πŸ› We fixed a bug where the test runner could not be accessed in non-development environments

Relative delay windows

Our delay step allows your workflow runs to pause for a certain amount of time before continuing, which is useful for scheduling reminders or other longer lived notifications. Previously, delay windows supported either a fixed amount of time (e.g. 30 minutes) or a dynamic value based on a property available in the workflow run scope.

Now with relative delay windows, you can specify a delay that is relative to a dynamic value provided, such as "30 minutes before the task is due" or "2 days after the task is created".

Relative delay windows are available now under the delay step in the workflow editor. You can get started by reading the documentation.

Fixes and improvements

  • πŸ‘€ We've visually refreshed the date time comparison component in the dashboard to better understand a timestamp relative to the current user's timezone
  • πŸ‘€ We've introduced a new search button to workflows, partials, and users to more easily find an item in the dashboard
  • πŸ› We fixed an issue where certain pages on the dashboard would break out of their parent scroll container, causing the entire page to scroll
  • πŸ› We fixed an issue where a member role could not upload tenant logos

User and preference data, now available in your warehouse

At Knock, we're always looking for more opportunities to give you access to the data that's available within your Knock account so that you can analyze it along with the rest of your product usage data.

With today's release, you can now receive a stream of user and preferences changes directly into your data warehouse. This makes it easy to build models that analyze your notification opt-out rates and how user profile information in Knock changes over time.

This feature is available to Enterprise customers who have set up a data warehouse sync. Read our documentation to learn more.

Fixes and improvements

  • πŸ‘€ We've moved trigger data into the data property in the template editor, so you now access properties as {{ data.property_name }}
  • πŸ‘€ We added a link to the billing portal for all customers to see their current daily usage quotas
  • πŸ‘€ We added support for base_logo_url and base_icon_url when applying tenant branding so that the original branding properties can still be referenced
  • πŸ› We removed support from our editor for unsupported liquid tags like date_to_string
  • πŸ› We fixed an issue where creating a new HTML partial would not immediately appear in the blocks sidebar
  • πŸ› We fixed an issue where committing a change to a partial would not be reflected in the workflows and templates that use it
  • πŸ› We fixed an issue where the member role in the account could not upload tenant branding
  • πŸ› We fixed an issue with our RadioCard component to ensure the selected state is reflected correctly
  • πŸ› We fixed an issue where passing created_at to Segment identifies could cause an error

Validating workflow trigger data

The data you pass into your Knock workflows is essential to ensure your notifications have the right content and context. Previously, if you omitted a value or passed through the wrong type of data into your workflow triggers, you could lead to malformed or incorrect notifications. Given how critical this data is, we're rolling out the ability to validate the incoming data for your workflow trigger by providing a JSON schema that describes the expected data.

When provided, if the data does not match the schema the workflow trigger API will return a 422 Unprocessable Entity response with a list of errors. This ensures that your workflows are not run should incorrect data be provided.

You can configure a validation schema for your workflow trigger under the "Trigger step" in the workflow builder. It's also possible to supply the workflow trigger schema via our management API and CLI via the trigger_data_json_schema field.

Trigger data validation is available today to all Knock customers. Read our documentation to learn more about how this feature works.

Fixes and improvements

  • πŸ‘€ We added support for MessageMedia as a new SMS provider
  • πŸ‘€ We added support for event idempotency through source events (docs)
  • πŸ‘€ We now expose url and any message interaction data to Segment and Heap for link click and interacted events respectively
  • πŸ› We fixed an issue where saving and committing a partial would not update the underlying schema
  • πŸ› We fixed an issue where some JSON editors would not scroll correctly

Reuse content across templates with Partials

Today we’re releasing support for Partials, a new way to author pieces of content for reuse across templates. Partials are independently updated, versioned, and archived, and can be managed programmatically with the Knock CLI and management API.

Partials are now available to all customers. Read our documentation to learn more about how this feature works.

Fixes and improvements

  • πŸ‘€ We've made some UI and UX improvements to the workflow list and show pages in the dashboard
  • πŸ‘€ We've improved the pagination of the workflow list in the dashboard. Paginating will now update the URL, so that refreshing the page or going back will take you to the correct page
  • πŸ‘€ We added a keyboard shortcut to save translations (cmd + enter)
  • πŸ‘€ We added new autocomplete suggestions for liquid tags in the template editor. Now when you type {% you'll see suggestions for common tags like assign, if, for, etc
  • πŸ› We fixed a performance issue when typing in the create workflow modal
  • πŸ› We fixed an issue where the billing page could be cut off at certain screen sizes

Trigger workflows only once per recipient

Today we’re releasing support for configuring workflow trigger frequency. You can now set a workflow to only trigger once per recipient (user, object or tenant) and never again. When enabled, if a workflow is run more than once for the same recipient, we will not execute the workflow.

Workflow trigger frequency is now available to all customers. Read our documentation to learn more about how this setting works.

Fixes and improvements

  • πŸ‘€ We added support for a timezone in the date filter in the template editor
  • πŸ‘€ We improved the scroll behavior around the dashboard, so returning to pages will restore your previous scroll position
  • πŸ‘€ We disabled the per-word highlighting in commit diffs to improve readability
  • πŸ› We loosened the required Expo and React Native versions for our React Native SDKs
  • πŸ› We improved the consistency of the timezone and date filters in the template editor between editing and previewing templates