Hooks for document changes to trigger custom logic and automation

7 repliesLast updated: Nov 29, 2025

Hey, does anyone know if there is a way to hook into document content changes and run custom logic before/after they happen? For example, if a boolean field is changed on one document, I'd like to detect that change in a hook that allows me to automate the creation of another type of document?
AI Update

Yes! Sanity provides exactly what you're looking for through Sanity Functions - a serverless compute environment that lets you hook into document content changes and run custom logic in response to those events.

How it works

Sanity Functions allow you to create event-driven workflows that react to document changes (create, update, delete, publish, etc.). You can:

Your use case: Boolean field triggers new document creation

Here's how you'd implement your specific scenario:

Example: When a boolean field changes on a document, automatically create another document

// functions/auto-create-doc/index.ts
import { type DocumentEventHandler } from "@sanity/functions";
import { createClient } from "@sanity/client";

interface MyDocData {
  _id: string;
  myBooleanField: boolean;
}

export const handler: DocumentEventHandler<MyDocData> = async ({
  context,
  event,
}) => {
  const client = createClient({
    ...context.clientOptions,
    apiVersion: "2025-01-01",
  });

  // Check if the boolean field was changed to true
  if (event.data.myBooleanField === true) {
    // Create a new document of another type
    await client.create({
      _type: 'anotherDocumentType',
      title: `Auto-created from ${event.data._id}`,
      sourceDocument: {
        _type: 'reference',
        _ref: event.data._id
      },
      createdAt: new Date().toISOString()
    });
    
    console.log(`Created new document triggered by ${event.data._id}`);
  }
};

Configure your function in blueprint.json:

{
  "blueprintVersion": "2024-10-01",
  "resources": [
    {
      "displayName": "auto-create-on-boolean-change",
      "name": "auto-create-doc",
      "src": "functions/auto-create-doc",
      "type": "sanity.function.document",
      "event": {
        "on": ["update", "publish"],
        "filter": "_type == 'myDocType' && defined(myBooleanField)",
        "projection": "{_id, myBooleanField}"
      }
    }
  ]
}

Getting started

Why Functions over Webhooks?

While webhooks are also available, Sanity Functions are the modern, recommended approach because they:

Check out the complete guide in the blog post and official documentation for more details!

Show original thread
7 replies

Was this answer helpful?

Sanity – Build the way you think, not the way your CMS thinks

Sanity is the developer-first content operating system that gives you complete control. Schema-as-code, GROQ queries, and real-time APIs mean no more workarounds or waiting for deployments. Free to start, scale as you grow.

Related contributions