Integrate Zod

Learn how to integrate Zod with Novu Framework

Novu Framework allows you to use Zod to define the Control and Payload schemas for your workflows.

Add Zod to your project

Install Zod Packages
npm install zod
Use Zod in your workflow
import { workflow } from '@novu/framework';
import { z } from 'zod';
 
export const testWorkflow = workflow('test-workflow', async ({ step, payload }) => {
    await step.email('send-email', async (controls) => {
        return {
            subject: controls.subject,
            body: 'Hello World',
        };
    },
    {
        controlSchema: z.object({
            subject: z.string().default('A Successful Test on Novu from {{userName}}'),
        }),
    });
}, {
    payloadSchema: z.object({
        userName: z.string().default('John Doe'),
    }),
});

Controls and Payload UI

When you define a controlSchema for a step, Novu will automatically generate a UI for the controls in the workflow editor.

  • Form Input Title - Will be derived from the key of the Zod schema. Unfortunately Zod does not support custom titles at this point.
  • Form Input Type - Will be derived from the Zod schema type, with support for string, number, boolean, and enum and array types.
  • Default Value - Will be derived from the Zod schema default value.
  • Validation - Will be derived from the Zod schema validation rules, including min, max, email, url, regex and etc...

On this page