Trigger Webhooks in Sanity
Manually trigger Webhooks right from your Studio. Useful for rebuilding your website using static site generator (Astro, SvelteKit, Next.js, 11ty, etc).
By Félix Péault
Install command
npm i sanity-plugin-webhooks-trigger⚡️ 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).
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-triggerUsage
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',
// /** Default event type for GitHub repository dispatch webhooks */
// githubEventType: 'webhook-trigger',
// /** Disable the "Trigger All" button when there are multiple webhooks */
// triggerAll: false,
}),
],
})For GitHub repository dispatch endpoints, each webhook can also define its own custom event type in the Sanity UI. The webhook-specific value takes precedence over the plugin-level githubEventType, which then falls back to webhook-trigger.
⚠️ 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.
