Migrate from Braze to Knock
Learn how to migrate your notifications from Braze to Knock.
Knock's APIs and developer tools make it easy to migrate your notification templates and user data from other notifications platforms into Knock. In this tutorial, we will walk you through planning and executing a migration from Braze into Knock, focusing on transactional messaging workflows.
Mapping Braze concepts to Knock concepts#
Before migrating any data into Knock, it's helpful to understand how the resources in your Braze account map to concepts and resources in Knock.
Integrations#
In Braze, you configured messaging channels (email, SMS, push, etc.) to deliver notifications through various providers. In Knock, we refer to these delivery platforms as channels.
Channels are configured under the Integrations tab in your Knock dashboard. You can see a full list of supported channel types and providers here.
In addition to first-party integrations with message delivery platforms, Knock also offers convenient connections to customer data platforms (CDPs) and reverse ETL providers to bring your data into Knock (sources), as well as to popular analytics and data warehousing tools to enable you to export important data out of Knock (extensions).
Users#
Braze uses the concept of users to represent the recipients of notifications, with custom attributes and profile data associated with each user.
Knock uses a similar concept of user objects on which you can store any number of custom properties related to your notifications' recipients.
Campaigns and workflows#
In Braze, your transactional messaging is handled through transactional email campaigns, API-triggered campaigns, and Canvases.
Knock combines these into a single resource called a workflow, which serves as a container for all of the logic and message templates associated with a given notification in your system.
When you’re ready to start sending notifications, you’ll do so by triggering your workflows, similarly to how you trigger Braze campaigns.
Template management#
Braze uses Content Blocks for reusable content and Liquid templating for personalization within campaigns.
Knock provides similar functionality through partials for reusable content blocks and also supports Liquid templating for personalization within workflow templates.
Multi-language support and translations#
Braze provides multi-language settings that enable you to target users with messages in different languages within a single email campaign, based on their locale. Braze keeps every translation file inside the campaign (or Canvas/email template) that uses it. download a translation template CSV, fill it in, and re-upload each time that specific campaign's copy changes. Braze also supports managing translations via API endpoints.
Knock helps you to power notifications in multiple locales and languages using translations. You can work with translations directly in your dashboard or programmatically via API, and Knock supports both json
and .po
file formats.
When using the t
tag method of referencing translations in your message templates, Knock will automatically generate the associated translation files for each of your registered locales behind the scenes. You can then translate the default content into additional locales by manually editing your translation files or programmatically updating them using the Knock API and a translation service.
Multi-tenancy#
In Braze, there isn't a direct equivalent to Knock's tenant functionality. Most Braze customers handle customer/organization segmentation through custom attributes (like organization_id
, account_id
, company_name
) combined with segments built on those attributes. This approach requires manual campaign targeting, complex segmentation logic, and offers no native support for per-organization branding, preferences, or scoped in-app feeds.
In Knock, tenants provide native multi-tenancy support that eliminates these workarounds. Tenants represent organizations your users belong to—what you might call "accounts" or "workspaces." Per-tenant branding attributes are stored directly on a tenant in Knock rather than requiring separate campaigns or complex attribute management. Knock tenants are applied as context to workflow triggers to automatically apply per-tenant branding, manage per-tenant preferences, and scope in-app feed messages to particular tenants.
Key advantages of Knock's tenant approach:
- Single workflow, multiple tenants. One workflow can serve all organizations with tenant-specific customizations.
- Native branding support. Per-tenant logos, colors, and styling without template duplication.
- In-app feed scoping. In-app notifications can be filtered by tenant context.
- Simplified preference management. Per-user, per-tenant preferences without complex attribute juggling.
Subscriptions and preferences#
Braze manages user subscription preferences through subscription groups and global subscription states (email_subscribe
and push_subscribe
). Users can be subscribed, unsubscribed, or opted-in to different messaging channels and specific subscription groups. See Braze's documentation on email subscription management and SMS subscription groups for more details.
Knock provides two features that together replace Braze subscription groups:
-
Preferences handle communication opt-outs similarly to Braze's marketing-focused subscription groups, but with enhanced flexibility for channel-specific, category-based, or workflow-specific preferences that can be tenant-specific or conditional.
-
Subscriptions express relationships between recipients and objects in your data model, enabling you to notify large numbers of recipients by triggering workflows for a single object recipient and letting Knock handle the recipient fanout for you rather than resolving recipient lists in your system when you trigger your notifications.
At a high level, Braze subscription groups migrated to Knock could look like:
- Braze global subscription states (
email_subscribe
,push_subscribe
) → Knock channel-type preferences - Braze subscription groups for communication types (newsletters, promotions) → Knock category and/or workflow-level preferences
- Braze subscription groups for specific entities (project alerts, account updates) → Knock object subscriptions
Migrating your data into Knock#
Now that you have a good understanding of how the resources in your Braze account map to concepts and resources in Knock, you can start planning your migration.
Knock offers APIs and developer tools that make a migration smooth and efficient:
- A Management API that enables you to work programmatically with the resources that you can also create directly in your Knock dashboard (like workflows and their associated message templates, email layouts, and translations.)
- A command line interface (Knock CLI) that wraps the Management API, enabling you to work with your dashboard resources from the command line.
- Bulk endpoints that enable you to upsert large amounts of data in a single API request (more on specific endpoints below.)
- Knock MCP server that enables AI assistants to help migrate workflows and templates from other platforms.
We recommend migrating data into Knock in the following order to ensure that certain resources which are dependencies of other resources are migrated first: