Novu changelog
Zod Integration with Novu
![changelog cover](/_next/image?url=https%3A%2F%2Fuploads.productlane.com%2F964e534564304aeda3111174b0d55869.png&w=3840&q=75)
You can now use Zod Schemas for defining your payload and step controls schemas. The Framework SDK will infer those zod
schemas and provide a run-time validation and autocompletion for usage.
Here is an example of a Zod-based validation:
import { workflow } from '@novu/framework';
import { z } from 'zod';
workflow('comment-workflow', async ({ step }) => {
await step.email('digest-email', async (controls) => ({
subject: controls.subject,
body: 'body'
}), {
controlSchema: z.object({
subject: z.string().default('Hi {{subscriber.firstName}}'),
openAiModel: z.enum(['gpt-3.5-turbo', 'gpt-4o']).default('gpt-4o'),
aiPrompt: z.string().default('Produce a concise comment digest'),
})
});
}, {
payloadSchema: z.object({
name: z.string(),
comment: z.string()
})
});
Common usecases
Validate trigger payload contents to make sure that null or undefined data ends up in your notifications.
Provide default values for non-required attributes
Create custom validation logic based on backend logic
Define UI step controls and expose UI elements from zod schemas
To learn more about Zod integration, read our documentation.