Novu changelog

Digest Step Upgrades: Create Beautiful Summaries in Minutes

cover image

We’ve reimagined how you build and present digested notifications—saving time, reducing complexity, and making templates look great out of the box.

This release introduces powerful new features that let you effortlessly summarize events, with ready-made summaries, visual tools, and editor enhancements.


Why This Matters

Digest notifications used to be painfully manual. Developers had to:

  • Write custom loops for every channel

  • Handle pluralization, list formatting, and grammar by hand

  • Repeat code across email, in-app, and chat

  • Build complex HTML for emails

  • Maintain state (e.g., list limits, summaries) themselves

All of this made digest creation slow, error-prone, and hard to maintain.

Now? You can build a polished digest in minutes, without touching LiquidJS or duplicating logic.

Note: Digest-specific variables and helpers are only available in steps that follow the Digest Step.


At-a-Glance: What’s New

  • countSummary, sentenceSummar
    Quickly generate concise, one-line digests without the need for additional logic.

  • eventCount, events
    Directly access and work with summarized event data for streamlined analysis.

  • Digest Block
    Render visual digests effortlessly, eliminating the need to write LiquidJS code.

  • Card Blocks
    Achieve clean and consistent layouts without any coding required.

  • LiquidJS Filter Pills
    Easily view variable formatting at a glance—now available in all emails.


Summary Helpers

Count summary

Skip the logic - countSummary auto-generates the correct phrasing.

You have {{steps.digest-step.countSummary}} available.

Examples:
- With 1 event → You have 1 notification available.
- With 3 events → You have 3 notifications available.

This is “syntactic sugar” for templating—under the hood, it uses eventCount formatting filters.


sentenceSummary

Creates natural language lists from the event data.

{{steps.digest-step.sentenceSummary path="payload.name" limit=2 suffix="collaborators"}} commented on your post.

Result:
- With Alex, Jordan, and 3 others → “Alex, Jordan, and 3 collaborators commented.”

Customization Options:

  • path: Which field to extract (e.g., payload.name)

  • limit: Max names before grouping

  • suffix: Label for grouped names (e.g., “others”, “collaborators”, “team members”)


Visual Digest Components

Digest Block (Email Editor)

Stop looping manually.

The new Digest Block in the email editor:

  • Automatically loops through steps.digest-step.events

  • Uses current to reference each item

  • Requires no Liquid code

Built-in logic handles iteration, list rendering, and structure.

When looping in the Digest Block or a Repeat Block, use the current variable:

{{current.payload.message}}

Card Blocks: Prebuilt, Polished

New digest-ready Card Blocks offer:

  • Clean layouts

  • Visual consistency across digests

  • Designed specifically for list-like events

Skip HTML headaches—just pick a block and go.


Raw Access: Structured Variables

steps.digest-step.eventCount

Access the number of collected events.

You have {{steps.digest-step.eventCount | pluralize: "new comment", "new comments"}}.

Results:
1 → “You have 1 new comment.”
3 → “You have 3 new comments.”

steps.digest-step.events

Full access to the digested event array.

Note: for loops aren’t supported in LiquidJS—use the Repeat Block in the Email Editor.

Editor Enhancements

LiquidJS Filter Pills (Now Everywhere)

Every variable now shows its first LiquidJS filter visually:

  • Quickly scan for formatting

  • Easier debugging

  • Reduces mistakes

This isn’t limited to digests—it’s available for all emails, including newsletters and announcements.


OSZAR »