sanity-plugin-webhooks-trigger
v0.7.0
Published
<h2 align="center"> ⚡️ Trigger Webhooks in Sanity ⚡️ </h2> <p align="center"> Trigger webhooks right from your Sanity Studio.<br/ > Useful for rebuilding your website using a static site generator (Astro, SvelteKit, Next.js, 11ty, Jekyll, Hugo, etc)
Readme
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',
// /** 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.
