Skip to content

fictivekin/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',
      // /** 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.

About

Manually trigger Webhooks right from your Sanity Studio to rebuild websites

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 95.1%
  • JavaScript 4.9%