Code Steps

Every channel step in a Novu Workflow can now be managed as TypeScript in your codebase - email, SMS, push, chat, and in-app.

Contributors

  • Adam Chmara

Details

Apr 8, 2026

Each step now has two modes: Editor (visual) and Custom Code (developer-managed via code). Switch any step to Custom Code mode, and the dashboard shows a pre-filled CLI command.

Switch any step to Custom Code mode and the dashboard shows the publish command, pre-filled and ready to run.

Run it to scaffold a placeholder handler and deploy it:

npx novu step publish \
  --workflow your-workflow-id \
  --step your-step-id \
  --secret-key nv-sk-...

React Email for Email Steps

For email steps, pass --template to wire a React Email component directly:

npx novu step publish \
  --workflow onboarding \
  --step welcome-email \
  --template ./emails/welcome.tsx \
  --secret-key nv-sk-...

Your React Email components stay in your repo, go through PR review, and are versioned alongside your application code.

Controls: Dashboard Editing Without Code Changes

Define a controlSchema in your code steps to expose editable fields in the Novu dashboard. Developers set the structure and defaults - non-technical teammates override copy without touching code.

Once published, controls defined in your handler appear as editable fields in the dashboard - no code change needed to update copy.

Mix Custom Code steps and Editor steps freely within the same Workflow.

Switch any step to Custom Code mode and copy the pre-filled command from the step editor to get started.