If the webhook server returns a non-200 response, Flipt will retry sending the request using an exponential backoff strategy until a maximum elapsed duration. The default maximum elapsed duration is 15 seconds.You can configure the maximum duration using the following configuration:
audit: sinks: webhook: max_backoff_duration: 15s
See the Audit Events - Webhook section of the configuration documentation for more details.
You may provide a signing secret for requests to your webhook. If you specify a signing secret, you will receive a request with the X-Flipt-Webhook-Signature header populated. This value can be set in the Audit Events - Webhook section of the Flipt server configuration.The value in the X-Flipt-Webhook-Signature header is the request body HMAC SHA256 signed with the signing secret you specified. On the webhook server, you can validate the signature by using the same signing secret. It’s strongly recommended that you do this to prevent requests to your webhook server that are from invalid origins.
You can specify a template for the body of an Audit Event Webhook request. This allows you to customize the body of the request to your webhook server.A sample configuration can look something like this:
The Go template contains a toJson utility function that will transform an
input into JSON if it fits the structure.
This configuration tells Flipt to send a POST request when events need to be emitted to the URL https://example.com with the HTTP headers, Content-Type and Authorization, and the body which is a Go template that will be executed when an event comes in.The event structure looks like this:
type Event struct { Version string `json:"version"` Type Type `json:"type"` Action Action `json:"action"` Metadata Metadata `json:"metadata"` Payload interface{} `json:"payload"` Timestamp string `json:"timestamp"`}
Any of the values that are exposed by Flipt are available for inclusion in your HTTP body template.
The above configuration will send a Slack message that looks like this:You can find more information about Slack webhooks here. You can also use the Slack Block Kit Builder to build more complex messages.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Flipt","colors":{"primary":"#7C3AED","light":"#BA97F5","dark":"#4F3292"},"logo":{"light":"https://mintcdn.com/flipt/DEE1Qcfhk5tfKCOi/logo/light-logo.svg?fit=max\u0026auto=format\u0026n=DEE1Qcfhk5tfKCOi\u0026q=85\u0026s=a6aa20ecf9af822ec8f6786b13555d76","dark":"https://mintcdn.com/flipt/DEE1Qcfhk5tfKCOi/logo/dark-logo.svg?fit=max\u0026auto=format\u0026n=DEE1Qcfhk5tfKCOi\u0026q=85\u0026s=74c8d34f5f0e2577e2bfd72dbd3ea254"},"favicon":"https://mintcdn.com/flipt/DEE1Qcfhk5tfKCOi/favicon.svg?fit=max\u0026auto=format\u0026n=DEE1Qcfhk5tfKCOi\u0026q=85\u0026s=7aaeb0cac086fb85002ba070f5ddbc32","api":{"openapi":["https://raw.githubusercontent.com/flipt-io/flipt/main/openapi.yaml","https://raw.githubusercontent.com/flipt-io/flipt/refs/heads/v2/rpc/flipt/openapi.yaml","https://raw.githubusercontent.com/flipt-io/flipt/refs/heads/v2/rpc/v2/environments/openapi.yaml","https://raw.githubusercontent.com/flipt-io/flipt/refs/heads/v2/rpc/v2/evaluation/openapi.yaml"],"playground":{"display":"simple"},"mdx":{"auth":{"method":"bearer"},"server":"http://localhost:8080"}},"background":{"image":"https://mintcdn.com/flipt/VG7J2soXPDNctRM3/background.png?fit=max\u0026auto=format\u0026n=VG7J2soXPDNctRM3\u0026q=85\u0026s=5009659e8144412bf683a7e68d47c78c","color":{"dark":"#121212"}},"navbar":{},"footer":{"socials":{"website":"https://www.flipt.io/","twitter":"https://twitter.com/flipt_io","discord":"https://www.flipt.io/discord","github":"https://git.new/flipt"}},"seo":{"metatags":{"og:type":"website","og:site_name":"Flipt Docs"},"indexing":"all"},"integrations":{"ga4":{"measurementId":"G-Q8MF5LZSNS"}},"banner":{"content":"🎉 **New:** MCP server for Flipt v2. Let AI assistants manage and evaluate your feature flags. [Learn more](https://docs.flipt.io/v2/tooling/model-context-protocol).","dismissible":true},"contextual":{"options":["copy","view","mcp"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"flipt","hasAudioNarration":false,"actualSubdomain":"flipt","customDomains":["docs.flipt.io"],"gitSource":{"type":"github","owner":"flipt-io","repo":"docs","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ad75505fe4769c03a8abf10","collectionId":"a1277b49-034c-4184-8f4e-3c299845f295","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ad75505fe4769c03a8abf10"},"feedback":{"thumbs":true,"edits":true},"entitlements":{},"buildId":"6ad75505fe4769c03a8abf10","clientVersion":"0.0.3952","searchFilterCounts":[{"language":"default","tag":"v1","count":112},{"language":"default","tag":"Documentation","count":109},{"language":"default","tag":"API Reference","count":83},{"language":"default","tag":"v2","count":81},{"language":"default","tag":"Guides","count":25},{"language":"default","tag":"Configuration","count":23},{"language":"default","tag":"CLI","count":22},{"language":"default","tag":"Authentication","count":20},{"language":"default","tag":"Commands","count":20},{"language":"default","tag":"Operations Guides","count":17}]},"assistantConfig":{},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"v1/configuration/auditing/webhooks","slug":"/v1/configuration/auditing/webhooks","pageMetadata":{"title":"Webhooks","description":"This document describes Flipt's webhook support.","href":"/v1/configuration/auditing/webhooks"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"This document describes Flipt’s webhook support.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,p:`p`,pre:`pre`,span:`span`,..._provideComponents(),...props.components},{CodeBlock,Heading,OptimizedImage,Tip}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`You can opt to receive audit events as an HTTP POST to a configured webhook.`}),`\n`,_jsx(_components.p,{children:`Below is an example HTTP POST request made to a webhook URL:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`26`,language:`shellsession`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellsession`,children:_jsxs(_components.code,{language:`shellsession`,numberOfLines:`26`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`POST / HTTP/1.1`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`Content-Length: 275`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`Accept-Encoding: gzip`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`Content-Type: application/json`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`X-Forwarded-For: 136.54.97.144`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`X-Forwarded-Proto: https`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` \"version\": \"0.1\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` \"type\": \"flag\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` \"action\": \"updated\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` \"metadata\": {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` \"actor\": {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` \"authentication\": \"none\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` \"ip\": \"127.0.0.1\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` \"payload\": {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` \"description\": \"\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` \"enabled\": true,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` \"key\": \"maintenance-mode\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` \"name\": \"Maintenance Mode\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` \"namespace_key\": \"default\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` \"timestamp\": \"2023-09-13T13:05:18-04:00\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`automatic-retries`,children:`Automatic Retries`}),`\n`,_jsx(_components.p,{children:`If the webhook server returns a non-200 response, Flipt will retry sending the request using an exponential backoff strategy until a maximum elapsed duration. The default maximum elapsed duration is 15 seconds.`}),`\n`,_jsx(_components.p,{children:`You can configure the maximum duration using the following configuration:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`audit`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` sinks`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` webhook`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` max_backoff_duration`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`15s`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`See the `,_jsx(_components.a,{href:`/v1/configuration/overview#audit-events-webhook`,children:`Audit Events - Webhook`}),` section of the configuration documentation for more details.`]}),`\n`,_jsx(Heading,{level:`2`,id:`security`,children:`Security`}),`\n`,_jsxs(_components.p,{children:[`You may provide a signing secret for requests to your webhook. If you specify a signing secret, you will receive a request with the `,_jsx(_components.code,{children:`X-Flipt-Webhook-Signature`}),` header populated. This value can be set in the `,_jsx(_components.a,{href:`/v1/configuration/overview#audit-events-webhook`,children:`Audit Events - Webhook`}),` section of the Flipt server configuration.`]}),`\n`,_jsxs(_components.p,{children:[`The value in the `,_jsx(_components.code,{children:`X-Flipt-Webhook-Signature`}),` header is the request body HMAC SHA256 signed with the signing secret you specified. On the webhook server, you can validate the signature by using the same signing secret. It’s `,_jsx(_components.em,{children:`strongly recommended`}),` that you do this to prevent requests to your webhook server that are from invalid origins.`]}),`\n`,_jsx(Heading,{level:`2`,id:`templates`,children:`Templates`}),`\n`,_jsx(_components.p,{children:`You can specify a template for the body of an Audit Event Webhook request. This allows you to customize the body of the request to your webhook server.`}),`\n`,_jsx(_components.p,{children:`A sample configuration can look something like this:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`15`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`15`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`audit`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` sinks`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` webhook`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` enabled`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` templates`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`url`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`https://example.com`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` headers`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` Content-Type`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`application/json`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` Authorization`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`Bearer \u003ctoken>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` body`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`|`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"type\": \"{{ .Type }}\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"action\": \"{{ .Action }}\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"payload\": {{ toJson .Payload }}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` }`})}),`\n`]})})}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`The Go template contains a `,_jsx(_components.code,{children:`toJson`}),` utility function that will transform an\ninput into JSON if it fits the structure.`]})}),`\n`,_jsxs(_components.p,{children:[`This configuration tells Flipt to send a `,_jsx(_components.code,{children:`POST`}),` request when events need to be emitted to the URL `,_jsx(_components.code,{children:`https://example.com`}),` with the HTTP headers, `,_jsx(_components.code,{children:`Content-Type`}),` and `,_jsx(_components.code,{children:`Authorization`}),`, and the body which is a `,_jsx(_components.a,{href:`https://pkg.go.dev/text/template`,children:`Go template`}),` that will be executed when an event comes in.`]}),`\n`,_jsx(_components.p,{children:`The event structure looks like this:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`11`,language:`go`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`go`,children:_jsxs(_components.code,{language:`go`,numberOfLines:`11`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`type`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Event`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` struct`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\tVersion`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#4EC9B0`},children:` string`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:' `json:\"version\"`'})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\tType`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Type`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:' `json:\"type\"`'})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\tAction`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Action`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:' `json:\"action\"`'})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\tMetadata`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Metadata`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:' `json:\"metadata\"`'})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\tPayload`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` interface`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{} `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:'`json:\"payload\"`'})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\tTimestamp`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#4EC9B0`},children:` string`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:' `json:\"timestamp\"`'})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Any of the values that are `,_jsx(_components.a,{href:`https://github.com/flipt-io/flipt/blob/v1.28.0/internal/server/audit/audit.go#L51-L61`,children:`exposed`}),` by Flipt are available for inclusion in your HTTP body template.`]}),`\n`,_jsx(Heading,{level:`3`,id:`example-slack`,children:`Example: Slack`}),`\n`,_jsx(_components.p,{children:`Below is an example of a Slack webhook integration that uses the templating feature to send a Slack message when a flag is updated.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`12`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`12`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`audit`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` sinks`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` webhook`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` enabled`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` templates`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`url`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://hooks.slack.com/services/xxxxx\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` headers`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` Content-Type`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"application/json\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` body`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`|`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:' \"text\": \"Flipt Event: {{ .Type }}/{{ .Action }}\\\\n\\\\n```{{ .Payload }}```\"'})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` }`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`The above configuration will send a Slack message that looks like this:`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/flipt/O1Bfdh4QkYyvK5vl/v1/images/configuration/auditing/slack-webhook.png?fit=max\u0026auto=format\u0026n=O1Bfdh4QkYyvK5vl\u0026q=85\u0026s=7f04887e9819c75696610dd8b2e33de8`,alt:`Slack Message`,\"data-og-width\":`1210`,width:`1210`,\"data-og-height\":`272`,height:`272`,\"data-path\":`v1/images/configuration/auditing/slack-webhook.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/flipt/O1Bfdh4QkYyvK5vl/v1/images/configuration/auditing/slack-webhook.png?w=280\u0026fit=max\u0026auto=format\u0026n=O1Bfdh4QkYyvK5vl\u0026q=85\u0026s=0cc02e5bf4bd75c5370df7a79bb7b2b5 280w, https://mintcdn.com/flipt/O1Bfdh4QkYyvK5vl/v1/images/configuration/auditing/slack-webhook.png?w=560\u0026fit=max\u0026auto=format\u0026n=O1Bfdh4QkYyvK5vl\u0026q=85\u0026s=6c0ea7675b4e37f76c9b86266bc2ac06 560w, https://mintcdn.com/flipt/O1Bfdh4QkYyvK5vl/v1/images/configuration/auditing/slack-webhook.png?w=840\u0026fit=max\u0026auto=format\u0026n=O1Bfdh4QkYyvK5vl\u0026q=85\u0026s=46fd4e9bcde4cc2a59d25cc475bcaf1e 840w, https://mintcdn.com/flipt/O1Bfdh4QkYyvK5vl/v1/images/configuration/auditing/slack-webhook.png?w=1100\u0026fit=max\u0026auto=format\u0026n=O1Bfdh4QkYyvK5vl\u0026q=85\u0026s=4877ef6ffcc3d0348293152a1b074320 1100w, https://mintcdn.com/flipt/O1Bfdh4QkYyvK5vl/v1/images/configuration/auditing/slack-webhook.png?w=1650\u0026fit=max\u0026auto=format\u0026n=O1Bfdh4QkYyvK5vl\u0026q=85\u0026s=45c06044a4efad718a39e17d419eda34 1650w, https://mintcdn.com/flipt/O1Bfdh4QkYyvK5vl/v1/images/configuration/auditing/slack-webhook.png?w=2500\u0026fit=max\u0026auto=format\u0026n=O1Bfdh4QkYyvK5vl\u0026q=85\u0026s=95fd5c630bbe9a22d947bbec7131646e 2500w`}),`\n`,_jsxs(_components.p,{children:[`You can find more information about Slack webhooks `,_jsx(_components.a,{href:`https://api.slack.com/messaging/webhooks`,children:`here`}),`. You can also use the `,_jsx(_components.a,{href:`https://app.slack.com/block-kit-builder`,children:`Slack Block Kit Builder`}),` to build more complex messages.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Webhooks","description":"This document describes Flipt's webhook support.","href":"/v1/configuration/auditing/webhooks"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Automatic Retries","slug":"automatic-retries","depth":2,"children":[]},{"title":"Security","slug":"security","depth":2,"children":[]},{"title":"Templates","slug":"templates","depth":2,"children":[{"title":"Example: Slack","slug":"example-slack","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/flipt/40516028525ef955/reo.js"],"subdomain":"flipt","siteName":"Flipt","title":"Webhooks - Flipt","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2025-12-15T14:45:54.667Z","originalFileLocation":"v1/configuration/auditing/webhooks.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"This document describes Flipt\u0026#x27;s webhook support.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Flipt\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/flipt/h9R5ArEC_jBN_kca/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/flipt/h9R5ArEC_jBN_kca/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/flipt/h9R5ArEC_jBN_kca/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/flipt/h9R5ArEC_jBN_kca/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/flipt/h9R5ArEC_jBN_kca/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/flipt/h9R5ArEC_jBN_kca/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/flipt/h9R5ArEC_jBN_kca/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/flipt/h9R5ArEC_jBN_kca/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/flipt/h9R5ArEC_jBN_kca/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Webhooks - Flipt\">\u003cmeta data-mint-head property=\"og:description\" content=\"This document describes Flipt\u0026#x27;s webhook support.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Flipt Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.flipt.io/v1/configuration/auditing/webhooks\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://flipt.mintlify.app/_mintlify/api/og/v2?division=Auditing\u0026amp;title=Webhooks\u0026amp;description=This+document+describes+Flipt%27s+webhook+support.\u0026amp;theme=fab54c02540c97cd47281fa2\u0026amp;signature=592b10e54af12637815aa7d5a85388956ee00b529b2280669e51e97a50631f7d\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Webhooks - Flipt\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"This document describes Flipt\u0026#x27;s webhook support.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://flipt.mintlify.app/_mintlify/api/og/v2?division=Auditing\u0026amp;title=Webhooks\u0026amp;description=This+document+describes+Flipt%27s+webhook+support.\u0026amp;theme=fab54c02540c97cd47281fa2\u0026amp;signature=592b10e54af12637815aa7d5a85388956ee00b529b2280669e51e97a50631f7d\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/flipt/h9R5ArEC_jBN_kca/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Flipt\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#7C3AED\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.flipt.io/v1/configuration/auditing/webhooks\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/v1/configuration/auditing/webhooks.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.flipt.io/#organization\",\"name\":\"Flipt\",\"url\":\"https://docs.flipt.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/flipt/DEE1Qcfhk5tfKCOi/logo/light-logo.svg?fit=max\u0026auto=format\u0026n=DEE1Qcfhk5tfKCOi\u0026q=85\u0026s=a6aa20ecf9af822ec8f6786b13555d76\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.flipt.io#website\",\"name\":\"Flipt\",\"url\":\"https://docs.flipt.io\",\"publisher\":{\"@id\":\"https://docs.flipt.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.flipt.io/v1/configuration/auditing/webhooks#webpage\",\"url\":\"https://docs.flipt.io/v1/configuration/auditing/webhooks\",\"name\":\"Webhooks\",\"description\":\"This document describes Flipt's webhook support.\",\"dateModified\":\"2025-12-15T14:45:54.667Z\",\"isPartOf\":{\"@id\":\"https://docs.flipt.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.flipt.io/v1/configuration/auditing/webhooks#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.flipt.io/v1/configuration/auditing/webhooks#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Configuration\",\"item\":\"https://docs.flipt.io/v1/configuration/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Auditing\",\"item\":\"https://docs.flipt.io/v1/configuration/auditing/overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Webhooks\",\"item\":\"https://docs.flipt.io/v1/configuration/auditing/webhooks\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.flipt.io/v1/configuration/auditing/webhooks#article\",\"headline\":\"Webhooks\",\"name\":\"Webhooks\",\"description\":\"This document describes Flipt's webhook support.\",\"url\":\"https://docs.flipt.io/v1/configuration/auditing/webhooks\",\"mainEntityOfPage\":{\"@id\":\"https://docs.flipt.io/v1/configuration/auditing/webhooks#webpage\"},\"dateModified\":\"2025-12-15T14:45:54.667Z\",\"publisher\":{\"@id\":\"https://docs.flipt.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.flipt.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Flipt\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Flipt","nav":{"global":null,"tabs":[{"tab":"v2","pages":[{"title":"v2","href":"/v2/introduction"}]},{"tab":"v1","anchors":[{"anchor":"Documentation","icon":"book-open","groups":[{"group":"Overview","pages":[{"title":"Getting Started","href":"/v1/introduction"},{"title":"Concepts","href":"/v1/concepts"}]},{"group":"Use Cases","pages":[{"title":"Overview","mode":"wide","href":"/v1/usecases/overview"},{"title":"CloudNative","mode":"wide","href":"/v1/usecases/cloudnative"},{"title":"Edge/IoT","mode":"wide","href":"/v1/usecases/edge"},{"title":"GitOps","mode":"wide","href":"/v1/usecases/gitops"}]},{"group":"Installation","pages":[{"title":"Overview","href":"/v1/installation/overview"},{"title":"Docker","href":"/v1/installation/docker"},{"title":"Kubernetes","href":"/v1/installation/kubernetes"}]},{"group":"Integration","pages":[{"title":"Overview","href":"/v1/integration/overview"},{"group":"Server-Side SDKs","pages":[{"title":"REST SDKs","href":"/v1/integration/server/rest"},{"title":"GRPC SDKs","href":"/v1/integration/server/grpc"}]},{"title":"Client-Side SDKs","href":"/v1/integration/client"},{"title":"OpenFeature","href":"/v1/integration/openfeature"},{"title":"Examples","href":"/v1/integration/examples"}]},{"group":"Guides","pages":[{"group":"User Guides","pages":[{"title":"Get Going with GitOps","href":"/v1/guides/user/get-going-with-gitops"},{"title":"Evaluating with References","href":"/v1/guides/user/using-references"}]},{"group":"Operations Guides","pages":[{"group":"Deployment","pages":[{"title":"Deploy to Fly.io","href":"/v1/guides/operation/deployment/deploy-to-flyio"},{"title":"Deploy to Kubernetes","href":"/v1/guides/operation/deployment/deploy-to-kubernetes"}]},{"group":"Authentication","pages":[{"title":"Login with Google","href":"/v1/guides/operation/authentication/login-with-google"},{"title":"Login with GitHub","href":"/v1/guides/operation/authentication/login-with-github"},{"title":"Login with Keycloak","href":"/v1/guides/operation/authentication/login-with-keycloak"}]},{"group":"Authorization","pages":[{"title":"Role-Based Access Control with Keycloak","href":"/v1/guides/operation/authorization/rbac-with-keycloak"}]}]},{"group":"Migration Guides","pages":[{"title":"Migrating from LaunchDarkly","mode":"wide","href":"/v1/guides/migration/launchdarkly/overview"},{"title":"Migrating from LaunchDarkly SDK to OpenFeature SDK","mode":"wide","href":"/v1/guides/migration/launchdarkly/openfeature"},{"title":"Switching from LaunchDarkly to Flipt","mode":"wide","href":"/v1/guides/migration/launchdarkly/flipt"}]}]},{"group":"Configuration","pages":[{"title":"Overview","href":"/v1/configuration/overview"},{"title":"Analytics","href":"/v1/configuration/analytics"},{"group":"Auditing","pages":[{"title":"Overview","description":"This document describes Flipt's auditing capabilities.","href":"/v1/configuration/auditing/overview"},{"title":"Webhooks","href":"/v1/configuration/auditing/webhooks"}]},{"title":"Authentication","description":"This document describes how to configure Flipt's authentication mechanisms.","href":"/v1/configuration/authentication"},{"title":"Authorization","href":"/v1/configuration/authorization"},{"title":"Observability","href":"/v1/configuration/observability"},{"title":"Storage","href":"/v1/configuration/storage"},{"title":"Caching","href":"/v1/configuration/caching"},{"title":"Telemetry","href":"/v1/configuration/telemetry"},{"title":"Experimental","href":"/v1/configuration/experimental"}]},{"group":"CLI","pages":[{"title":"Overview","href":"/v1/cli/overview"},{"group":"Commands","pages":[{"group":"config","pages":[{"title":"config init","href":"/v1/cli/commands/config/init"},{"title":"config edit","href":"/v1/cli/commands/config/edit"}]},{"group":"bundle","pages":[{"title":"bundle build","href":"/v1/cli/commands/bundle/build"},{"title":"bundle list","href":"/v1/cli/commands/bundle/list"},{"title":"bundle pull","href":"/v1/cli/commands/bundle/pull"},{"title":"bundle push","href":"/v1/cli/commands/bundle/push"}]},{"title":"evaluate","href":"/v1/cli/commands/evaluate"},{"title":"export","href":"/v1/cli/commands/export"},{"title":"import","href":"/v1/cli/commands/import"},{"title":"migrate","href":"/v1/cli/commands/migrate"},{"title":"validate","href":"/v1/cli/commands/validate"}]}]},{"group":"Authentication","pages":[{"title":"Overview","href":"/v1/authentication/overview"},{"title":"Methods","href":"/v1/authentication/methods"},{"title":"Using Client Tokens","href":"/v1/authentication/using-tokens"},{"title":"Using JSON Web Tokens","href":"/v1/authentication/using-jwts"}]},{"group":"Authorization","pages":[{"title":"Overview","href":"/v1/authorization/overview"}]},{"group":"Operations","pages":[{"title":"Architecture","href":"/v1/operations/architecture"},{"title":"Deployment","href":"/v1/operations/deployment"},{"title":"Import/Export","href":"/v1/operations/import-export"},{"title":"Production","href":"/v1/operations/production"},{"title":"Upgrading","href":"/v1/operations/upgrading"}]},{"group":"Tooling","pages":[{"title":"GitHub Actions","href":"/v1/tooling/github-actions"},{"title":"Model Context Protocol (MCP)","href":"/v1/tooling/model-context-protocol"}]}]},{"anchor":"API Reference","icon":"code","pages":[{"title":"API Reference","href":"/v1/reference/overview"}]},{"anchor":"Changelog","icon":"clock","pages":[{"title":"Changelog","href":"/v1/changelog/overview"}]},{"anchor":"Blog","icon":"newspaper","href":"https://blog.flipt.io"},{"anchor":"Discord","icon":"discord","href":"https://flipt.io/discord"},{"anchor":"GitHub","icon":"github","href":"https://git.new/flipt"}]}]},"title":"Webhooks - Flipt","buildId":"dpl_7GUK3ixdQTF3BSNUQYJm8ibGxQWw","deploymentId":"dpl_7GUK3ixdQTF3BSNUQYJm8ibGxQWw","dynamics":["10e4515597","a74be98ba7"],"chunks":["BannerMarkdown-C950do5B.js","dist-B0Np8MLW.js","lib--scc4DXi.js","lib-B8HbPgcC.js","clsx-GOchs0v2.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","zoom-image-lightbox-BVI9Chd9.js","PlusIcon-dPxQtROk.js","lightbox-handle-r17bVUz3.js"]}