Introducing the t tag: draft content in your default language and auto-generate translations

Today we’re introducing a new way to create and manage translations in Knock: the t tag.

With our user-friendly t tag, you can draft message templates in your default language (e.g. english), then wrap the content in a t tag to auto-generate a default language translation file for you behind the scenes.

You can then automate translations to other languages by using our API to fetch your translation files, send them to your translation provider (e.g. Transifex), and programmatically bring translations back into Knock.


Here’s why we shipped the t tag.

In our Translations 1.0 release we introduced the concept of Translations into Knock. Translations are JSON objects you use to define a set of translation keys (for example, “WelcomeMessage”) and the translations they map to in each locale you support (en: “Welcome to Knock”, es: “Bienvenidos a Knock”). You then use our t filter to reference that translated content in your message templates.

Our first approach to Translations works great for teams that already have translations for their messages. But, as we’ve grown and seen customers bring more of their organization into Knock, we heard feedback that we needed a way to make translations more accessible for non-technical users creating content in Knock—that’s where our new t tag comes in.

t tags are now generally available for all enterprise customers. To get started, check out the documentation for Translations.

Fixes and improvements

  • 👀 When a collection contains more than 10,000 records, we now correctly reflect that in the result count.
  • 👀 We improved our recipient inline identify calls to accept a dictionary with just an id in it, rather than requiring an id and at least one property before it was identified.
  • 👀 We rolled out our new code editor everywhere in the UI.
  • 🐛 We fixed an issue where our pagination controls would show 0 instead of a result count.
  • 🐛 We fixed an issue where our markdown validation was overly strict and did not allow for some valid HTML elements and attributes.