Skip to content

Trigger webhooks right from your Sanity Studio to rebuild websites

License

Notifications You must be signed in to change notification settings

flayks/sanity-plugin-webhooks-trigger

Repository files navigation

⚡️ Trigger Webhooks in Sanity ⚡️

Trigger webhooks right from your Sanity Studio.
Useful for rebuilding your website using a static site generator (Astro, SvelteKit, Next.js, 11ty, Jekyll, Hugo, etc).

screenshot

Motivation

Instead of rebuilding your site every single time a document is published using the GROQ-powered webhooks, just do it when you (or your client) are done editing content!

For instance, you can trigger a build on Vercel, Netlify, Cloudflare Pages, GitHub Actions, or any webhook.

Behind the scenes, it stores a document in your Sanity dataset for each webhook, with its name, URL, method (POST/GET) and the encrypted auth token if needed. It also shows the last run status and date.

Openly –and heavily– inspired from sanity-plugin-vercel-deploy by ndimatteo.

Installation

# npm
npm i sanity-plugin-webhooks-trigger

# yarn
yarn install sanity-plugin-webhooks-trigger

# pnpm
pnpm i sanity-plugin-webhooks-trigger

# bun
bun i sanity-plugin-webhooks-trigger

Usage

Add it as a plugin in sanity.config.ts (or .js):

import { defineConfig } from 'sanity'
import { webhooksTrigger } from 'sanity-plugin-webhooks-trigger'

export default defineConfig({
  //...
  plugins: [
    webhooksTrigger({
      // title: 'Deploy',
      // text: 'Custom text',
      // encryptionSalt: 'replace-me-with-a-strong-string',
      // /** You can customize the event type name to trigger on your Github workflows */
      // githubEventType: 'webhook-trigger',
      // /** Disable the "Trigger All" button when there are multiple webhooks */
      // triggerAll: false,
    })
  ],
})

⚠️ If you are using an auth token with your webhook, it is strongly recommended to use an encryption salt, otherwise it could be exposed! You can generate one using openssl rand -hex 64 or any other method.

License

MIT © Félix Péault (Flayks)

Develop & test

This plugin uses @sanity/plugin-kit with default configuration for build & watch scripts.

See Testing a plugin in Sanity Studio on how to run this plugin with hotreload in the studio.