The app runs on port 3000 by default.You can confirm it’s running by visiting http://localhost:3000.
The app logs request headers and body in the terminal and shows a message in the browser.
LaunchDarkly sends different request body contents depending on the event.
To trigger new calls from LaunchDarkly to your app, make a change in your account.
For this example, create a segment.Confirm your localhost app receives the event and logs both headers and body in the terminal.
ngrok’s Traffic Inspector captures all requests made through your ngrok endpoint to your localhost app.
Select any request to view detailed information about both the request and response.
To avoid exposing secrets, accounts only collect traffic metadata by default.
You must enable full capture in the Traffic Inspector section of your account settings to capture complete request and response data.
Use the Traffic Inspector to:
Validate webhook payloads and response data
Debug request headers, methods, and status codes
Troubleshoot integration issues without adding logging to your app
ngrok can verify that incoming requests are from your LaunchDarkly webhook so only that traffic reaches your app.
Webhook verification is limited to 500 validations per month on free accounts.
If you need more, you can upgrade to Hobbyist or Pay-as-you-go.
See TPU Pricing for details.
To add verification:
Create a Traffic Policy file named launchdarkly_policy.yml.
Replace {your webhook secret} with the Secret you copied when creating the webhook:
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"ngrok documentation","colors":{"primary":"#273FC3","light":"#699AFC","dark":"#699AFC"},"logo":{"light":"https://mintcdn.com/ngrok/uPrboN8usISU3fq0/logo/light.svg?fit=max\u0026auto=format\u0026n=uPrboN8usISU3fq0\u0026q=85\u0026s=6a4a2c8995f8731e1bac3f795a68130d","dark":"https://mintcdn.com/ngrok/uPrboN8usISU3fq0/logo/dark.svg?fit=max\u0026auto=format\u0026n=uPrboN8usISU3fq0\u0026q=85\u0026s=e363c8b6e09a92e726a981e0156ba233","href":"https://ngrok.com/docs"},"favicon":"https://mintcdn.com/ngrok/BQQt-CHCs_8OwVmS/favicon.ico?fit=max\u0026auto=format\u0026n=BQQt-CHCs_8OwVmS\u0026q=85\u0026s=294907ab135b589ed607e4888e1a10a4","background":{"color":{"dark":"#121212"}},"navbar":{"links":[{"href":"https://ngrok.com/","label":"Homepage"},{"href":"https://dashboard.ngrok.com/","label":"Dashboard"}],"primary":{"type":"button","label":"Sign up","href":"https://dashboard.ngrok.com/signup"}},"footer":{"socials":{"x":"https://x.com/ngrokhq","github":"https://github.com/ngrok","linkedin":"https://linkedin.com/company/ngrok","youtube":"https://www.youtube.com/@ngrokHQ"},"links":[{"header":"Product","items":[{"label":"Gateway","href":"https://ngrok.com/docs/gateway/overview"},{"label":"AI Gateway","href":"https://ngrok.ai"},{"label":"Traffic Policy","href":"https://ngrok.com/docs/traffic-policy"},{"label":"Secure Tunnels","href":"https://ngrok.com/docs/agent/overview"},{"label":"Traffic Observability","href":"https://ngrok.com/docs/obs"},{"label":"Kubernetes Operator","href":"https://ngrok.com/docs/k8s"}]},{"header":"Problems we solve","items":[{"label":"API gateway","href":"https://ngrok.com/docs/guides/api-gateway/get-started"},{"label":"AI gateway","href":"https://ngrok.ai/"},{"label":"Webhook gateway","href":"https://ngrok.com/docs/gateway/examples/webhook-gateway"},{"label":"Ephemeral workloads","href":"https://ngrok.com/docs/gateway/examples/ephemeral-workloads"},{"label":"Customer connectivity","href":"https://ngrok.com/use-cases/saas-customer-connectivity"},{"label":"Device gateway","href":"https://ngrok.com/docs/guides/device-gateway/overview"},{"label":"Remote access","href":"https://ngrok.com/docs/guides/ssh-rdp"},{"label":"Share localhost","href":"https://ngrok.com/use-cases/share-localhost"},{"label":"Connect MCPs to AI providers","href":"https://ngrok.com/docs/gateway/api-gateway/mcp-gateway"},{"label":"Test webhooks","href":"https://ngrok.com/docs/share-localhost/webhooks"},{"label":"Access remote K8s clusters","href":"https://ngrok.com/docs/k8s/guides/local-projection"},{"label":"Minecraft","href":"https://ngrok.com/docs/gateway/examples/minecraft"}]},{"header":"Resources","items":[{"label":"Docs","href":"https://ngrok.com/docs/start"},{"label":"Guides","href":"https://ngrok.com/docs/guides"},{"label":"Pricing","href":"https://ngrok.com/pricing"},{"label":"Download","href":"https://ngrok.com/download"},{"label":"Security","href":"https://ngrok.com/security"},{"label":"Trust","href":"https://trust.ngrok.com/"},{"label":"Case studies","href":"https://ngrok.com/customers"},{"label":"Integrations","href":"https://ngrok.com/docs/integrations"},{"label":"Support","href":"https://ngrok.com/support"},{"label":"Abuse","href":"https://ngrok.com/abuse"},{"label":"Status","href":"https://status.ngrok.com/"}]},{"header":"Company","items":[{"label":"About","href":"https://ngrok.com/about"},{"label":"Contact","href":"https://ngrok.com/contact"},{"label":"Blog","href":"https://ngrok.com/blog"},{"label":"Newsletter","href":"https://ngrok.com/newsletter"},{"label":"Press","href":"https://ngrok.com/press"},{"label":"Brand","href":"https://ngrok.com/brand"},{"label":"Careers","href":"https://ngrok.com/careers"}]}]},"seo":{"metatags":{"canonical":"https://ngrok.com/docs"},"indexing":"navigable"},"fonts":{"heading":{"family":"Roobert","weight":600,"source":"https://assets.ngrok.com/fonts/roobert/roobert-proportional-vf.woff2","format":"woff2"},"body":{"family":"Roobert","weight":400,"source":"https://assets.ngrok.com/fonts/roobert/roobert-proportional-vf.woff2","format":"woff2"}},"integrations":{"posthog":{"apiKey":"phc_mUGMN4JlTzthGcz0XNK0z6NKUqdeQMn7rPRAM3mifjQ","apiHost":"https://e.ngrok.com"}},"contextual":{"options":["copy","view","mcp","add-mcp","claude","cursor","vscode","assistant","chatgpt","perplexity","grok","aistudio","devin","windsurf","devin-mcp","download-spec"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"ngrok","hasAudioNarration":false,"actualSubdomain":"ngrok","customDomains":["ngrok.com"],"gitSource":{"type":"github","owner":"ngrok","repo":"ngrok-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae2787cd102965dd135f294","collectionId":"0e8bd8bf-ac5d-4919-a9a7-4883f664ab05","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae2787cd102965dd135f294"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6ae355d7344aa043c1334184","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"Reference","count":266},{"language":"default","tag":"Gateway","count":242},{"language":"default","tag":"Platform API","count":239},{"language":"default","tag":"Integrations","count":150},{"language":"default","tag":"AI Gateway","count":119},{"language":"default","tag":"Connectivity","count":91},{"language":"default","tag":"Webhooks","count":65},{"language":"default","tag":"Kubernetes Operators","count":58},{"language":"default","tag":"Traffic Policy","count":58},{"language":"default","tag":"Examples","count":46}],"searchSettings":{"isFiltersEnabled":false}},"assistantConfig":{"enableAskAiButton":false,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"support@ngrok.com","showHelpButton":true}},"basePath":"/docs","hasChatPermissions":false,"hasWebMcpPermissions":true,"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":"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":"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":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","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},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"img{max-width:100%;height:auto}.tooltip{font-weight:700;text-decoration:none!important;position:relative}.tooltip::after{content:\"\";position:absolute;bottom:0;left:0;width:100%;height:1px;border-bottom:1px dotted rgba(0,0,0,.8)}.light .tooltip,:root .tooltip,[data-theme=light] .tooltip{color:rgba(0,0,0,.8)}.light .tooltip::after,:root .tooltip::after,[data-theme=light] .tooltip::after{border-bottom-color:rgba(0,0,0,.8)}.dark .tooltip,[data-theme=dark] .tooltip{color:rgba(255,255,255,.8)}.dark .tooltip::after,[data-theme=dark] .tooltip::after{border-bottom-color:rgba(255,255,255,.8)}@media (prefers-color-scheme:light){.tooltip{color:rgba(0,0,0,.8)}.tooltip::after{border-bottom-color:rgba(0,0,0,.8)}}@media (prefers-color-scheme:dark){.tooltip{color:rgba(255,255,255,.8)}.tooltip::after{border-bottom-color:rgba(255,255,255,.8)}}:root td .tooltip{font-weight:inherit;color:inherit}td button[data-state]{text-align:start}td button[data-state] code{white-space:nowrap;word-break:normal;overflow-wrap:normal}td:first-child:has(>button[data-state] code){width:100%}table:has(td:first-child>button[data-state] code) td,table:has(td:first-child>button[data-state] code) th{min-width:0;white-space:nowrap}td .icon{mask-size:contain;-webkit-mask-size:contain}td .tooltip:has(>.icon){text-decoration:none}td .tooltip:has(>.icon)::after{display:none}td code,td pre{word-wrap:break-word;overflow-wrap:break-word;word-break:break-word}td pre{white-space:pre-wrap;min-width:200px}td:has(code),td:has(pre){min-width:240px;width:auto}td code{min-width:150px}@font-face{font-family:\"Roobert\";src:url(https://assets.ngrok.com/fonts/roobert/roobert-proportional-vf.woff2) format(\"woff2 supports variations\"),url(https://assets.ngrok.com/fonts/roobert/roobert-proportional-vf.woff2) format(\"woff2-variations\");font-weight:300 900;font-display:swap;font-style:normal}@font-face{font-family:\"JetBrains Mono\";src:url(https://assets.ngrok.com/fonts/jetbrains/jetbrainsmono-wght.woff2) format(\"woff2 supports variations\"),url(https://assets.ngrok.com/fonts/jetbrains/jetbrainsmono-wght.woff2) format(\"woff2-variations\");font-weight:100 800;font-display:swap;font-style:normal}@font-face{font-family:\"JetBrains Mono\";src:url(https://assets.ngrok.com/fonts/jetbrains/jetbrainsmono-italic-wght.woff2) format(\"woff2 supports variations\"),url(https://assets.ngrok.com/fonts/jetbrains/jetbrainsmono-italic-wght.woff2) format(\"woff2-variations\");font-weight:100 800;font-display:swap;font-style:italic}.hljs,.token,code,pre,pre code{font-family:\"JetBrains Mono\",ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace!important}#topbar-cta-button span.bg-primary-dark{background-color:#121212!important;transition:background-color!important}#topbar-cta-button a:hover span.bg-primary-dark{background-color:#171717!important}#topbar-cta-button span.text-white,#topbar-cta-button svg{color:#fff!important}.dark #topbar-cta-button span.bg-primary-dark,[data-theme=dark] #topbar-cta-button span.bg-primary-dark{background-color:rgba(255,255,255,.85)!important;transition:background-color!important}.dark #topbar-cta-button a:hover span.bg-primary-dark,[data-theme=dark] #topbar-cta-button a:hover span.bg-primary-dark{background-color:#fff!important}.dark #topbar-cta-button span.text-white,.dark #topbar-cta-button svg,[data-theme=dark] #topbar-cta-button span.text-white,[data-theme=dark] #topbar-cta-button svg{color:#000!important}footer#footer a{overflow:visible;text-overflow:clip;white-space:nowrap}@media (min-width:768px) and (max-width:880px){footer#footer a{white-space:normal}}.nav-tabs-item>div.absolute.bottom-0{height:2px!important}.ngrok-consent{--ngrok-consent-surface:#ffffff;--ngrok-consent-border:#d4d4d4;--ngrok-consent-text:#121212;--ngrok-consent-action-bg-hover:rgb(115 115 115 / 10%);--ngrok-consent-focus-ring:rgb(39 63 195 / 35%);--ngrok-consent-shadow:0 1px 13px 0 rgb(0 0 0 / 5%),\n 0 4px 6px -4px rgb(0 0 0 / 10%),\n 0 10px 15px -3px rgb(0 0 0 / 10%);position:fixed;inset-inline:0;bottom:1rem;z-index:2147483000;display:flex;justify-content:center;padding-inline:1rem;pointer-events:none}:is(html.dark, html[data-theme=\"dark\"]) .ngrok-consent{--ngrok-consent-surface:#171717;--ngrok-consent-border:#404040;--ngrok-consent-text:#ffffff;--ngrok-consent-focus-ring:rgb(105 154 252 / 35%);--ngrok-consent-shadow:0 1px 13px 0 rgb(0 0 0 / 15%),\n 0 4px 6px -4px rgb(0 0 0 / 30%),\n 0 10px 15px -3px rgb(0 0 0 / 30%)}@media (min-width:640px){.ngrok-consent{bottom:2.5rem}}.ngrok-consent-panel{pointer-events:auto;display:flex;align-items:center;gap:.75rem;width:fit-content;max-width:100%;padding:.5rem .75rem;border:1px solid var(--ngrok-consent-border);border-radius:1rem;background-color:var(--ngrok-consent-surface);color:var(--ngrok-consent-text);box-shadow:var(--ngrok-consent-shadow);transition-property:opacity,translate;transition-timing-function:cubic-bezier(0,0,.2,1);transition-duration:400ms}.ngrok-consent-panel[hidden]{display:none}.ngrok-consent-panel[data-state=closed]{pointer-events:none;opacity:0;transition-duration:200ms}@media (prefers-reduced-motion:no-preference){.ngrok-consent-panel[data-state=closed]{translate:0 calc(100% + 2.5rem)}}.ngrok-consent-message{margin:0;font-size:.875rem;line-height:1.25rem}.ngrok-consent-actions{display:flex;align-items:center;gap:.375rem}.ngrok-consent-icon-button{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;padding:0;border:1px solid transparent;border-radius:.375rem;background-color:transparent;color:var(--ngrok-consent-text);cursor:pointer;outline:2px solid transparent;outline-offset:2px;text-decoration:none;transition:transform 150ms cubic-bezier(0,0,.2,1)}.ngrok-consent-icon-button:hover{background-color:var(--ngrok-consent-action-bg-hover)}.ngrok-consent-icon-button:active{transform:scale(.97)}.ngrok-consent-icon-button:focus-visible{box-shadow:0 0 0 4px var(--ngrok-consent-focus-ring)}.ngrok-consent-icon-button svg{width:1.25rem;height:1.25rem;flex-shrink:0}"}],"page":{"pagePath":"integrations/webhooks/launchdarkly-webhooks","slug":"/integrations/webhooks/launchdarkly-webhooks","pageMetadata":{"title":"LaunchDarkly Webhooks","sidebarTitle":"LaunchDarkly","description":"Develop and test LaunchDarkly webhooks from localhost.","href":"/integrations/webhooks/launchdarkly-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: \"Develop and test LaunchDarkly webhooks from localhost.\"\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`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Info,Note,Tip}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(Note,{title:`Need a different webhook provider?`,children:_jsxs(_components.p,{children:[`If you don’t see your preferred webhook provider, you can `,_jsx(_components.a,{href:`https://dashboard.ngrok.com/early-access#webhook-providers`,children:`request support for it`}),`.`]})}),`\n`,_jsx(_components.p,{children:`This guide walks you through using ngrok to receive LaunchDarkly webhooks on your localhost app.`}),`\n`,_jsx(_components.p,{children:`By integrating ngrok with LaunchDarkly, you can:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Develop and test LaunchDarkly webhooks locally without deploying to a public environment or setting up HTTPS.`}),`\n`,_jsx(_components.li,{children:`Inspect and troubleshoot requests from LaunchDarkly in real time via the inspection UI and API.`}),`\n`,_jsx(_components.li,{children:`Modify and replay LaunchDarkly webhook requests with a single click instead of reproducing events manually in your LaunchDarkly account.`}),`\n`,_jsx(_components.li,{children:`Secure your app with LaunchDarkly webhook validation provided by ngrok.\nInvalid requests are blocked by ngrok before reaching your app.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`what-you’ll-need`,children:`What you’ll need`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`An `,_jsx(_components.a,{href:`https://ngrok.com/signup`,children:`ngrok account`}),` and your `,_jsx(_components.a,{href:`https://dashboard.ngrok.com/get-started/your-authtoken`,children:`authtoken`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`The `,_jsx(_components.a,{href:`https://ngrok.com/download`,children:`ngrok agent`}),` installed.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`https://nodejs.org/`,children:`Node.js`}),` installed (for the sample app, or use your own app).`]}),`\n`,_jsx(_components.li,{children:`A LaunchDarkly account.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`1-start-your-app`,children:`1. Start your app`}),`\n`,_jsxs(_components.p,{children:[`For this tutorial, you can use the `,_jsx(_components.a,{href:`https://github.com/ngrok/ngrok-webhook-nodejs-sample`,children:`sample Node.js app on GitHub`}),`.`]}),`\n`,_jsx(_components.p,{children:`To install the sample, run the following in a terminal:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`git`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` clone`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://github.com/ngrok/ngrok-webhook-nodejs-sample.git`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`cd`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ngrok-webhook-nodejs-sample`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`npm`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Then start the app:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`npm`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` start`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`The app runs on port 3000 by default.`}),`\n`,_jsxs(_components.p,{children:[`You can confirm it’s running by visiting `,_jsx(_components.code,{children:`http://localhost:3000`}),`.\nThe app logs request headers and body in the terminal and shows a message in the browser.`]}),`\n`,_jsx(Heading,{level:`2`,id:`2-expose-your-app-with-ngrok`,children:`2. Expose your app with ngrok`}),`\n`,_jsx(_components.p,{children:`Once your app is running locally, you’re ready to put it online securely using ngrok.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Copy `,_jsx(_components.a,{href:`https://dashboard.ngrok.com/get-started/your-authtoken`,children:`your ngrok authtoken`}),` from the dashboard.`]}),`\n`]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`The ngrok agent uses your authtoken to authenticate when you start a tunnel.`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Start ngrok:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`ngrok`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` http`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 3000`})]}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Copy the URL ngrok displays.\nYour app is now exposed at that URL for use with LaunchDarkly.`}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`3-configure-launchdarkly-to-send-webhooks`,children:`3. Configure LaunchDarkly to send webhooks`}),`\n`,_jsxs(_components.p,{children:[`Follow `,_jsx(_components.a,{href:`https://launchdarkly.com/docs/home/infrastructure/webhooks`,children:`LaunchDarkly’s documentation for creating a webhook`}),`, and set the following:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`URL`}),`: your ngrok URL (for example, `,_jsx(_components.code,{children:`https://1a2b-3c4d-5e6f-7g8h-9i0j.ngrok.app`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Signing`}),`: enable signing so ngrok can verify requests, and note the generated secret for the `,_jsx(_components.a,{href:`#secure-webhook-requests`,children:`verification step`}),` below.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`After you save, LaunchDarkly sends a request to your app.\nConfirm your localhost app receives the POST and logs both headers and body in the terminal.`}),`\n`,_jsx(Heading,{level:`3`,id:`run-webhooks-with-launchdarkly-and-ngrok`,children:`Run webhooks with LaunchDarkly and ngrok`}),`\n`,_jsx(_components.p,{children:`LaunchDarkly sends different request body contents depending on the event.\nTo trigger new calls from LaunchDarkly to your app, make a change in your account.\nFor this example, create a segment.`}),`\n`,_jsx(_components.p,{children:`Confirm your localhost app receives the event and logs both headers and body in the terminal.`}),`\n`,_jsx(Heading,{level:`3`,id:`inspecting-requests`,children:`Inspecting requests`}),`\n`,_jsxs(_components.p,{children:[`ngrok’s `,_jsx(_components.a,{href:`https://dashboard.ngrok.com/traffic-inspector`,children:`Traffic Inspector`}),` captures all requests made through your ngrok endpoint to your localhost app.\nSelect any request to view detailed information about both the request and response.`]}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`To avoid exposing secrets, accounts only collect traffic metadata by default.\nYou must enable full capture in the `,_jsx(_components.strong,{children:`Traffic Inspector`}),` section of `,_jsx(_components.a,{href:`https://dashboard.ngrok.com/settings`,children:`your account settings`}),` to capture complete request and response data.`]})}),`\n`,_jsx(_components.p,{children:`Use the Traffic Inspector to:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Validate webhook payloads and response data`}),`\n`,_jsx(_components.li,{children:`Debug request headers, methods, and status codes`}),`\n`,_jsx(_components.li,{children:`Troubleshoot integration issues without adding logging to your app`}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`replaying-requests`,children:`Replaying requests`}),`\n`,_jsx(_components.p,{children:`Test your webhook handling code without triggering new events from your service using the Traffic Inspector’s replay feature:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Send a test webhook from your service to generate traffic in your Traffic Inspector.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Select the request you want to replay in the Traffic Inspector.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Choose your replay option:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Replay`}),` to send the exact same request again`]}),`\n`,_jsxs(_components.li,{children:[`Select `,_jsx(_components.strong,{children:`Replay with modifications`}),` to edit the request before sending`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`(Optional) Modify the request: Edit any part of the original request, such as changing field values in the request body.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Send the request by clicking `,_jsx(_components.strong,{children:`Replay`}),`.`]}),`\n`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Your local application will receive the replayed request and log the data to the terminal.`}),`\n`,_jsx(Heading,{level:`2`,id:`secure-webhook-requests`,children:`Secure webhook requests`}),`\n`,_jsx(_components.p,{children:`ngrok can verify that incoming requests are from your LaunchDarkly webhook so only that traffic reaches your app.`}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Webhook verification is limited to 500 validations per month on free accounts.\nIf you need more, you can upgrade to Hobbyist or Pay-as-you-go.\nSee `,_jsx(_components.a,{href:`/pricing-limits/traffic-policy-unit-pricing/`,children:`TPU Pricing`}),` for details.`]})}),`\n`,_jsx(_components.p,{children:`To add verification:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Create a Traffic Policy file named `,_jsx(_components.code,{children:`launchdarkly_policy.yml`}),`.\nReplace `,_jsx(_components.code,{children:`{your webhook secret}`}),` with the `,_jsx(_components.strong,{children:`Secret`}),` you copied when creating the webhook:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,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:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`on_http_request`}),_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:`actions`}),_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:`type`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`verify-webhook`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` config`}),_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:` provider`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`launch_darkly`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` secret`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"{your webhook secret}\"`})]}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Restart ngrok with the policy file:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`ngrok`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` http`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 3000`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --traffic-policy-file`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` launchdarkly_policy.yml`})]}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Create a new segment in LaunchDarkly to trigger the webhook.`}),`\n`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Your app should receive the request and log it in the terminal.`})]})}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":"LaunchDarkly Webhooks","sidebarTitle":"LaunchDarkly","description":"Develop and test LaunchDarkly webhooks from localhost.","href":"/integrations/webhooks/launchdarkly-webhooks"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"What you’ll need","slug":"what-you’ll-need","depth":2,"children":[]},{"title":"1. Start your app","slug":"1-start-your-app","depth":2,"children":[]},{"title":"2. Expose your app with ngrok","slug":"2-expose-your-app-with-ngrok","depth":2,"children":[]},{"title":"3. Configure LaunchDarkly to send webhooks","slug":"3-configure-launchdarkly-to-send-webhooks","depth":2,"children":[{"title":"Run webhooks with LaunchDarkly and ngrok","slug":"run-webhooks-with-launchdarkly-and-ngrok","depth":3,"children":[]},{"title":"Inspecting requests","slug":"inspecting-requests","depth":3,"children":[]},{"title":"Replaying requests","slug":"replaying-requests","depth":3,"children":[]}]},{"title":"Secure webhook requests","slug":"secure-webhook-requests","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/ngrok/05d9da4b27f4fed8/redirect-to-ngrok.js","/docs/_mintlify/custom/ngrok/cabe0d94bdb3d370/persist-query-params.js","/docs/_mintlify/custom/ngrok/09633916ed60fa29/definition-wrapper.js","/docs/_mintlify/custom/ngrok/6167f7a3c0c9913f/consent.js"],"subdomain":"ngrok","siteName":"ngrok documentation","title":"LaunchDarkly Webhooks - ngrok documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-20T15:59:10.036Z","originalFileLocation":"integrations/webhooks/launchdarkly-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=\"Develop and test LaunchDarkly webhooks from localhost.\">\u003cmeta data-mint-head name=\"application-name\" content=\"ngrok documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/ngrok/EDFj7szN2_Vn64sM/_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=\"/docs/mintlify-assets/_mintlify/favicons/ngrok/EDFj7szN2_Vn64sM/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/ngrok/EDFj7szN2_Vn64sM/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/ngrok/EDFj7szN2_Vn64sM/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/ngrok/EDFj7szN2_Vn64sM/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/ngrok/EDFj7szN2_Vn64sM/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/ngrok/EDFj7szN2_Vn64sM/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/ngrok/EDFj7szN2_Vn64sM/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/ngrok/EDFj7szN2_Vn64sM/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"LaunchDarkly Webhooks - ngrok documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Develop and test LaunchDarkly webhooks from localhost.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"ngrok documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://ngrok.com/docs/integrations/webhooks/launchdarkly-webhooks\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://ngrok.mintlify.app/_mintlify/api/og/v2?division=Webhooks\u0026amp;title=LaunchDarkly+Webhooks\u0026amp;description=Develop+and+test+LaunchDarkly+webhooks+from+localhost.\u0026amp;theme=dd59335b8ec10833612cbd2f\u0026amp;signature=50cd17bcd49a05090ff3679892eb926f2a19a4a696a3d2af1f5af0f25aaeff33\">\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=\"LaunchDarkly Webhooks - ngrok documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Develop and test LaunchDarkly webhooks from localhost.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://ngrok.mintlify.app/_mintlify/api/og/v2?division=Webhooks\u0026amp;title=LaunchDarkly+Webhooks\u0026amp;description=Develop+and+test+LaunchDarkly+webhooks+from+localhost.\u0026amp;theme=dd59335b8ec10833612cbd2f\u0026amp;signature=50cd17bcd49a05090ff3679892eb926f2a19a4a696a3d2af1f5af0f25aaeff33\">\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=\"/docs/mintlify-assets/_mintlify/favicons/ngrok/EDFj7szN2_Vn64sM/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"ngrok documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#273FC3\">\u003clink data-mint-head rel=\"canonical\" href=\"https://ngrok.com/docs/integrations/webhooks/launchdarkly-webhooks\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/integrations/webhooks/launchdarkly-webhooks.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://ngrok.com/#organization\",\"name\":\"ngrok documentation\",\"url\":\"https://ngrok.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/ngrok/uPrboN8usISU3fq0/logo/light.svg?fit=max\u0026auto=format\u0026n=uPrboN8usISU3fq0\u0026q=85\u0026s=6a4a2c8995f8731e1bac3f795a68130d\"}},{\"@type\":\"WebSite\",\"@id\":\"https://ngrok.com/docs#website\",\"name\":\"ngrok documentation\",\"url\":\"https://ngrok.com/docs\",\"publisher\":{\"@id\":\"https://ngrok.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://ngrok.com/docs/integrations/webhooks/launchdarkly-webhooks#webpage\",\"url\":\"https://ngrok.com/docs/integrations/webhooks/launchdarkly-webhooks\",\"name\":\"LaunchDarkly Webhooks\",\"description\":\"Develop and test LaunchDarkly webhooks from localhost.\",\"dateModified\":\"2026-10-20T15:59:10.036Z\",\"isPartOf\":{\"@id\":\"https://ngrok.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://ngrok.com/docs/integrations/webhooks/launchdarkly-webhooks#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://ngrok.com/docs/integrations/webhooks/launchdarkly-webhooks#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Webhooks\",\"item\":\"https://ngrok.com/docs/integrations/webhooks/aftership-webhooks\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"LaunchDarkly Webhooks\",\"item\":\"https://ngrok.com/docs/integrations/webhooks/launchdarkly-webhooks\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://ngrok.com/docs/integrations/webhooks/launchdarkly-webhooks#article\",\"headline\":\"LaunchDarkly Webhooks\",\"name\":\"LaunchDarkly Webhooks\",\"description\":\"Develop and test LaunchDarkly webhooks from localhost.\",\"url\":\"https://ngrok.com/docs/integrations/webhooks/launchdarkly-webhooks\",\"mainEntityOfPage\":{\"@id\":\"https://ngrok.com/docs/integrations/webhooks/launchdarkly-webhooks#webpage\"},\"dateModified\":\"2026-10-20T15:59:10.036Z\",\"publisher\":{\"@id\":\"https://ngrok.com/#organization\"},\"isPartOf\":{\"@id\":\"https://ngrok.com/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"ngrok documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"ngrok documentation","nav":{"global":null,"tabs":[{"tab":"Start","pages":[{"title":"Start","href":"/start"}]},{"tab":"Gateway","pages":[{"title":"Gateway","href":"/gateway/overview"}]},{"tab":"AI Gateway","pages":[{"title":"AI Gateway","href":"/ai-gateway/overview"}]},{"tab":"Share Localhost","pages":[{"title":"Share Localhost","href":"/share-localhost/overview"}]},{"tab":"For AI Agents","pages":[{"title":"For AI Agents","href":"/for-agents"}]},{"tab":"Integrations","pages":[{"title":"Integrations Hub","mode":"wide","href":"/integrations"},{"group":"General Guides","pages":[{"title":"How to access Home Assistant from anywhere with ngrok","sidebarTitle":"Home Assistant","href":"/integrations/guides/home-assistant-with-ngrok"},{"title":"MQTT","href":"/integrations/guides/mqtt"},{"title":"Expose Local Services Behind CGNAT Without Port Forwarding","sidebarTitle":"CGNAT","href":"/using-ngrok-with/cgnat"},{"group":"Docker","pages":[{"title":"Using ngrok with Docker","sidebarTitle":"Overview","href":"/using-ngrok-with/docker/index"},{"title":"Using ngrok with Docker Compose","sidebarTitle":"Docker Compose","href":"/using-ngrok-with/docker/compose"},{"title":"Using ngrok Docker Desktop","sidebarTitle":"Docker Desktop","href":"/using-ngrok-with/docker/desktop"}]},{"title":"Configuring GoDaddy DNS for ngrok Reserved Domains","sidebarTitle":"GoDaddy","href":"/using-ngrok-with/godaddy"},{"title":"Using ngrok with Google Colab","sidebarTitle":"Google Colab","href":"/using-ngrok-with/googleColab"},{"title":"Using ngrok with Java","sidebarTitle":"Java","href":"/using-ngrok-with/java"},{"title":"Using ngrok with Minecraft","sidebarTitle":"Minecraft","href":"/using-ngrok-with/minecraft"},{"title":"Using ngrok with OpenVPN Connect","sidebarTitle":"OpenVPN Connect","href":"/using-ngrok-with/openvpn"},{"title":"Using ngrok with Puppet","sidebarTitle":"Puppet","href":"/using-ngrok-with/puppet"},{"title":"Using ngrok with Visual Studio / IIS Express","sidebarTitle":"Visual Studio / IIS Express","href":"/using-ngrok-with/visualStudio"},{"title":"Using ngrok with VSCode","sidebarTitle":"VSCode","href":"/using-ngrok-with/vsCode"}]},{"group":"CLI Credentials","pages":[{"title":"How to secure your ngrok CLI credentials with 1Password","sidebarTitle":"1Password","href":"/integrations/cli-credentials/1password"}]},{"group":"Dashboard SSO","pages":[{"title":"Configure Auth0 Single Sign-On with SAML","sidebarTitle":"Auth0 (SAML)","href":"/integrations/dashboard-sso/auth0-dashboard-sso-saml"},{"title":"Microsoft Entra ID SSO (SAML)","sidebarTitle":"Microsoft Entra ID (SAML)","href":"/integrations/dashboard-sso/microsoft-sso-saml"},{"title":"Configure Okta Single Sign-On (SSO) Using OpenID Connect (OIDC)","sidebarTitle":"Okta (OpenID Connect)","href":"/integrations/dashboard-sso/okta-dashboard-sso-oidc"},{"title":"Configure Okta Single Sign-On (SSO)","sidebarTitle":"Okta (SAML)","href":"/integrations/dashboard-sso/okta-dashboard-sso-saml"},{"title":"Automate user provisioning via SCIM with Okta","sidebarTitle":"Okta (SCIM)","href":"/integrations/dashboard-sso/okta-dashboard-sso-scim"},{"title":"Salesforce Dashboard Single Sign-On (SSO) Using OIDC","sidebarTitle":"Salesforce (OpenID Connect)","href":"/integrations/dashboard-sso/salesforce-dashboard-sso-oidc"}]},{"group":"Databases","pages":[{"title":"Using ngrok with MySQL","sidebarTitle":"MySQL","href":"/using-ngrok-with/mysql"},{"title":"Using ngrok with MongoDB","sidebarTitle":"MongoDB","href":"/using-ngrok-with/mongodb"},{"title":"Using ngrok with PostgreSQL","sidebarTitle":"PostgreSQL","href":"/using-ngrok-with/postgresql"},{"title":"Using ngrok with Redis","sidebarTitle":"Redis","href":"/using-ngrok-with/redis"}]},{"group":"Endpoints SSO","pages":[{"title":"Auth0 Endpoint SSO (OpenID Connect)","sidebarTitle":"Auth0 (OpenID Connect)","href":"/integrations/endpoint-sso/auth0-sso-oidc"},{"title":"Azure Active Directory B2C SSO (SAML)","sidebarTitle":"Azure AD B2C (SAML)","href":"/integrations/endpoint-sso/azure-sso-saml"},{"title":"Secure Your Endpoints with Curity Identity Server SSO (OpenID Connect)","sidebarTitle":"Curity (OpenID Connect)","href":"/integrations/endpoint-sso/curity-sso-oidc"},{"title":"Secure Your Endpoints with Descope SSO (OpenID Connect)","sidebarTitle":"Descope (OpenID Connect)","href":"/integrations/endpoint-sso/descope-sso-oidc"},{"title":"Secure Your Endpoints with Descope SSO (SAML)","sidebarTitle":"Descope (SAML)","href":"/integrations/endpoint-sso/descope-sso-saml"},{"title":"Secure Your Endpoints with Frontegg SSO (OpenID Connect)","sidebarTitle":"Frontegg (OpenID Connect)","href":"/integrations/endpoint-sso/frontegg-sso-oidc"},{"title":"Secure Your Endpoints with Frontegg SSO (SAML)","sidebarTitle":"Frontegg (SAML)","href":"/integrations/endpoint-sso/frontegg-sso-saml"},{"title":"FusionAuth Endpoint SSO (OpenID Connect)","sidebarTitle":"FusionAuth (OpenID Connect)","href":"/integrations/endpoint-sso/fusionauth-sso-oidc"},{"title":"JumpCloud Endpoint SSO (OpenID Connect)","sidebarTitle":"JumpCloud (OpenID Connect)","href":"/integrations/endpoint-sso/jumpcloud-sso-oidc"},{"title":"JumpCloud SSO (SAML)","sidebarTitle":"JumpCloud (SAML)","href":"/integrations/endpoint-sso/jumpcloud-sso-saml"},{"title":"miniOrange Endpoint SSO (OpenID Connect)","sidebarTitle":"miniOrange (OpenID Connect)","href":"/integrations/endpoint-sso/miniorange-sso-oidc"},{"title":"miniOrange SSO (SAML)","sidebarTitle":"miniOrange (SAML)","href":"/integrations/endpoint-sso/miniorange-sso-saml"},{"title":"Secure Your Endpoints with Okta SSO (OpenID Connect)","sidebarTitle":"Okta (OpenID Connect)","href":"/integrations/endpoint-sso/okta-sso-oidc"},{"title":"Secure Your Endpoints with Okta SSO (SAML)","sidebarTitle":"Okta (SAML)","href":"/integrations/endpoint-sso/okta-sso-saml"},{"title":"Secure ngrok Endpoints Using Salesforce OpenID Connect","sidebarTitle":"Salesforce (OpenID Connect)","href":"/integrations/endpoint-sso/salesforce-sso-oidc"},{"title":"Wallix Trustelem Endpoint SSO (OpenID Connect)","sidebarTitle":"Wallix Trustelem (OpenID Connect)","href":"/integrations/endpoint-sso/trustelem-sso-oidc"},{"title":"Wallix Trustelem SSO (SAML)","sidebarTitle":"Wallix Trustelem (SAML)","href":"/integrations/endpoint-sso/trustelem-sso-saml"}]},{"group":"Event Destinations","pages":[{"title":"Send Network Logs from ngrok to AWS CloudWatch","sidebarTitle":"AWS CloudWatch","href":"/integrations/event-destinations/amazon-cloudwatch-event-destination"},{"title":"Send Network Logs from ngrok to AWS Firehose","sidebarTitle":"AWS Firehose","href":"/integrations/event-destinations/amazon-firehose-event-destination"},{"title":"Send Network Logs from ngrok to AWS Kinesis","sidebarTitle":"AWS Kinesis","href":"/integrations/event-destinations/amazon-kinesis-event-destination"},{"title":"Integrate with the Azure Logs Ingestion API","sidebarTitle":"Azure Logs Ingestion","href":"/integrations/event-destinations/azure-logs-event-destination"},{"title":"Send Network Logs from ngrok to Datadog","sidebarTitle":"Datadog","href":"/integrations/event-destinations/datadog-event-destination"}]},{"group":"Frameworks","pages":[{"title":"Using ngrok with FastAPI","sidebarTitle":"FastAPI","href":"/using-ngrok-with/fastAPI"},{"title":"Using ngrok with Flask","sidebarTitle":"Flask","href":"/using-ngrok-with/flask"},{"title":"Using ngrok with Laravel","sidebarTitle":"Laravel","href":"/using-ngrok-with/laravel"}]},{"group":"JWT Validation","pages":[{"title":"Enable JWT validation with Auth0","sidebarTitle":"Auth0","href":"/integrations/jwt-validation/auth0"}]},{"group":"Kubernetes Ingress","pages":[{"title":"Kubernetes Ingress Integrations","sidebarTitle":"Overview","href":"/integrations/kubernetes-ingress/index"},{"title":"Deploy a production API and gateway with APIOps using Argo CD and ngrok","sidebarTitle":"APIOps with Argo CD","href":"/integrations/kubernetes-ingress/apiops"},{"title":"Ingress to apps secured by Microsoft Entra ID in Kubernetes","sidebarTitle":"Microsoft Entra ID","href":"/integrations/kubernetes-ingress/azure-ad-k8s"},{"title":"Ingress to Kubernetes apps deployed on Azure Kubernetes Service (AKS)","sidebarTitle":"Azure Kubernetes Service","href":"/integrations/kubernetes-ingress/azure-aks-k8s"},{"title":"Kubernetes ingress to services in a Consul service mesh","sidebarTitle":"Consul Service Mesh","href":"/integrations/kubernetes-ingress/consul-k8s"},{"title":"Ingress to Kubernetes apps on clusters managed by DigitalOcean","sidebarTitle":"DigitalOcean","href":"/integrations/kubernetes-ingress/digitalocean-k8s"},{"title":"Kubernetes ingress to services hosted on EKS","sidebarTitle":"EKS","href":"/integrations/kubernetes-ingress/eks"},{"title":"ngrok External Secrets integration","sidebarTitle":"External Secrets","href":"/integrations/kubernetes-ingress/external-secrets"},{"title":"Kubernetes ingress to GKE services with ngrok","sidebarTitle":"GKE","href":"/integrations/kubernetes-ingress/google-kubernetes-engine"},{"title":"Use ngrok's Global Server Load Balancing with DigitalOcean","sidebarTitle":"Global Server Load Balancing","href":"/integrations/kubernetes-ingress/gslb"},{"title":"Ingress to a microservices-based application connected via Linkerd's service mesh","sidebarTitle":"Linkerd","href":"/integrations/kubernetes-ingress/k8s"},{"title":"Kubernetes ingress to apps/APIs on clusters managed by Canonical MicroK8s","sidebarTitle":"MicroK8s","href":"/integrations/kubernetes-ingress/microk8s-k8s"},{"title":"Ingress to Kubernetes apps managed by Rafay","sidebarTitle":"Rafay","href":"/integrations/kubernetes-ingress/rafay-k8s"},{"title":"Kubernetes ingress to applications and clusters managed by Rancher","sidebarTitle":"Rancher","href":"/integrations/kubernetes-ingress/rancher-k8s"},{"title":"Ingress to Kubernetes apps deployed on Spectro Cloud Palette","sidebarTitle":"Spectro Cloud Palette","href":"/integrations/kubernetes-ingress/spectro-cloud-k8s"},{"title":"Ingress to Kubernetes apps and services with vcluster","sidebarTitle":"vcluster","href":"/integrations/kubernetes-ingress/vcluster-k8s"}]},{"group":"OAuth","pages":[{"title":"Facebook OAuth","sidebarTitle":"Facebook","href":"/integrations/oauth/facebook-oauth"},{"title":"GitHub OAuth","sidebarTitle":"GitHub","href":"/integrations/oauth/github-oauth"},{"title":"GitLab OAuth","sidebarTitle":"GitLab","href":"/integrations/oauth/gitlab-oauth"},{"title":"Google OAuth","sidebarTitle":"Google","href":"/integrations/oauth/google-oauth"},{"title":"LinkedIn OAuth","sidebarTitle":"LinkedIn","href":"/integrations/oauth/linkedin-oauth"},{"title":"Microsoft OAuth","sidebarTitle":"Microsoft","href":"/integrations/oauth/microsoft-oauth"},{"title":"Amazon OAuth","sidebarTitle":"Amazon","href":"/integrations/oauth/oauth"},{"title":"Twitch OAuth","sidebarTitle":"Twitch","href":"/integrations/oauth/twitch-oauth"}]},{"group":"Protocols","pages":[{"title":"Using ngrok with SSH","sidebarTitle":"SSH","href":"/using-ngrok-with/ssh"},{"title":"Using ngrok with FTP, FTPS, SFTP","sidebarTitle":"FTP, FTPS, SFTP","href":"/using-ngrok-with/ftp"},{"title":"Using ngrok with Websockets","sidebarTitle":"Websockets","href":"/using-ngrok-with/websockets"},{"title":"Using ngrok with Real-Time Messaging Protocol (RTMP)","sidebarTitle":"Real-Time Messaging Protocol (RTMP)","href":"/using-ngrok-with/rtmp"}]},{"group":"Webhooks","pages":[{"title":"AfterShip Webhooks","sidebarTitle":"AfterShip","href":"/integrations/webhooks/aftership-webhooks"},{"title":"Airship Webhooks","sidebarTitle":"Airship","href":"/integrations/webhooks/airship-webhooks"},{"title":"Alchemy Webhooks","sidebarTitle":"Alchemy","href":"/integrations/webhooks/alchemy-webhooks"},{"title":"Amazon SNS Webhooks","sidebarTitle":"Amazon SNS","href":"/integrations/webhooks/amazon-sns-webhooks"},{"title":"Autodesk Platform Services Webhooks","sidebarTitle":"Autodesk Platform Services","href":"/integrations/webhooks/autodesk-webhooks"},{"title":"Bitbucket Repository Webhooks","sidebarTitle":"Bitbucket Repository","href":"/integrations/webhooks/bitbucket-webhooks"},{"title":"Box Webhooks","sidebarTitle":"Box","href":"/integrations/webhooks/box-webhooks"},{"title":"Brex Webhooks","sidebarTitle":"Brex","href":"/integrations/webhooks/brex-webhooks"},{"title":"Buildkite Webhooks","sidebarTitle":"Buildkite","href":"/integrations/webhooks/buildkite-webhooks"},{"title":"Calendly Webhooks","sidebarTitle":"Calendly","href":"/integrations/webhooks/calendly-webhooks"},{"title":"Castle Webhooks","sidebarTitle":"Castle","href":"/integrations/webhooks/castle-webhooks"},{"title":"Chargify Webhooks","sidebarTitle":"Chargify","href":"/integrations/webhooks/chargify-webhooks"},{"title":"CircleCI Webhooks","sidebarTitle":"CircleCI","href":"/integrations/webhooks/circleci-webhooks"},{"title":"Clerk Webhooks","sidebarTitle":"Clerk","href":"/integrations/webhooks/clerk-webhooks"},{"title":"Coinbase Webhooks","sidebarTitle":"Coinbase","href":"/integrations/webhooks/coinbase-webhooks"},{"title":"Contentful Webhooks","sidebarTitle":"Contentful","href":"/integrations/webhooks/contentful-webhooks"},{"title":"DocuSign Webhooks","sidebarTitle":"DocuSign","href":"/integrations/webhooks/docusign-webhooks"},{"title":"Dropbox Webhooks","sidebarTitle":"Dropbox","href":"/integrations/webhooks/dropbox-webhooks"},{"title":"Facebook Messenger Webhooks","sidebarTitle":"Facebook Messenger","href":"/integrations/webhooks/facebook-messenger-webhooks"},{"title":"Facebook Webhooks","sidebarTitle":"Facebook","href":"/integrations/webhooks/facebook-webhooks"},{"title":"Frame.io Webhooks","sidebarTitle":"Frame.io","href":"/integrations/webhooks/frameio-webhooks"},{"title":"GitHub Repository Webhooks","sidebarTitle":"GitHub Repository","href":"/integrations/webhooks/github-webhooks"},{"title":"GitLab Repository Webhooks","sidebarTitle":"GitLab Repository","href":"/integrations/webhooks/gitlab-webhooks"},{"title":"Heroku Webhooks","sidebarTitle":"Heroku","href":"/integrations/webhooks/heroku-webhooks"},{"title":"HostedHooks Webhooks","sidebarTitle":"HostedHooks","href":"/integrations/webhooks/hostedhooks-webhooks"},{"title":"HubSpot Webhooks","sidebarTitle":"HubSpot","href":"/integrations/webhooks/hubspot-webhooks"},{"title":"Hygraph Webhooks","sidebarTitle":"Hygraph","href":"/integrations/webhooks/hygraph-webhooks"},{"title":"Instagram Webhooks","sidebarTitle":"Instagram","href":"/integrations/webhooks/instagram-webhooks"},{"title":"Intercom Webhooks","sidebarTitle":"Intercom","href":"/integrations/webhooks/intercom-webhooks"},{"title":"Jira Webhooks","sidebarTitle":"Jira","description":"Develop and test Jira webhooks from localhost.","href":"/integrations/webhooks/jira-webhooks"},{"title":"LaunchDarkly Webhooks","sidebarTitle":"LaunchDarkly","href":"/integrations/webhooks/launchdarkly-webhooks"},{"title":"Linear Webhooks","sidebarTitle":"Linear","description":"Develop and test Linear webhooks from localhost.","href":"/integrations/webhooks/linear-webhooks"},{"title":"Mailchimp Webhooks","sidebarTitle":"Mailchimp","href":"/integrations/webhooks/mailchimp-webhooks"},{"title":"Mailgun Webhooks","sidebarTitle":"Mailgun","href":"/integrations/webhooks/mailgun-webhooks"},{"title":"Modern Treasury Webhooks","sidebarTitle":"Modern Treasury","href":"/integrations/webhooks/modern-treasury-webhooks"},{"title":"MongoDB Webhooks","sidebarTitle":"MongoDB","href":"/integrations/webhooks/mongodb-webhooks"},{"title":"Mux Webhooks","sidebarTitle":"Mux","href":"/integrations/webhooks/mux-webhooks"},{"title":"Okta Webhooks","sidebarTitle":"Okta","href":"/integrations/webhooks/okta-webhooks"},{"title":"PagerDuty Webhooks","sidebarTitle":"PagerDuty","href":"/integrations/webhooks/pagerduty-webhooks"},{"title":"Pinwheel Webhooks","sidebarTitle":"Pinwheel","href":"/integrations/webhooks/pinwheel-webhooks"},{"title":"Plivo Webhooks","sidebarTitle":"Plivo","href":"/integrations/webhooks/plivo-webhooks"},{"title":"Pusher Webhooks","sidebarTitle":"Pusher","href":"/integrations/webhooks/pusher-webhooks"},{"title":"SendGrid Webhooks","sidebarTitle":"SendGrid","href":"/integrations/webhooks/sendgrid-webhooks"},{"title":"Sentry Webhooks","sidebarTitle":"Sentry","href":"/integrations/webhooks/sentry-webhooks"},{"title":"Shopify Webhooks","sidebarTitle":"Shopify","href":"/integrations/webhooks/shopify-webhooks"},{"title":"Signal Sciences Webhooks","sidebarTitle":"Signal Sciences","href":"/integrations/webhooks/signalsciences-webhooks"},{"title":"Slack Webhooks","sidebarTitle":"Slack","href":"/integrations/webhooks/slack-webhooks"},{"title":"Sonatype Nexus Webhooks","sidebarTitle":"Sonatype Nexus","href":"/integrations/webhooks/sonatype-nexus-webhooks"},{"title":"Square Webhooks","sidebarTitle":"Square","href":"/integrations/webhooks/square-webhooks"},{"title":"Stripe Webhooks","sidebarTitle":"Stripe","href":"/integrations/webhooks/stripe-webhooks"},{"title":"Svix Webhooks","sidebarTitle":"Svix","href":"/integrations/webhooks/svix-webhooks"},{"title":"Microsoft Teams Webhooks","sidebarTitle":"Microsoft Teams","href":"/integrations/webhooks/teams-webhooks"},{"title":"Terraform Cloud Webhooks","sidebarTitle":"Terraform Cloud","href":"/integrations/webhooks/terraform-webhooks"},{"title":"TikTok Webhooks","sidebarTitle":"TikTok","href":"/integrations/webhooks/tiktok-webhooks"},{"title":"Trend Micro Webhooks","sidebarTitle":"Trend Micro","href":"/integrations/webhooks/trendmicro-webhooks"},{"title":"Twilio SMS Webhooks","sidebarTitle":"Twilio SMS","href":"/integrations/webhooks/twilio-webhooks"},{"title":"X (formerly Twitter) Webhooks","sidebarTitle":"X (Twitter)","href":"/integrations/webhooks/twitter-webhooks"},{"title":"Typeform Webhooks","sidebarTitle":"Typeform","href":"/integrations/webhooks/typeform-webhooks"},{"title":"VMware Workspace ONE Webhooks","sidebarTitle":"VMware Workspace ONE","href":"/integrations/webhooks/vmware-webhooks"},{"title":"Cisco Webex Webhooks","sidebarTitle":"Cisco Webex","href":"/integrations/webhooks/webex-webhooks"},{"title":"WhatsApp Webhooks","sidebarTitle":"WhatsApp","href":"/integrations/webhooks/whatsapp-webhooks"},{"title":"Worldline Webhooks","sidebarTitle":"Worldline","href":"/integrations/webhooks/worldline-webhooks"},{"title":"Xero Webhooks","sidebarTitle":"Xero","href":"/integrations/webhooks/xero-webhooks"},{"title":"Zendesk Webhooks","sidebarTitle":"Zendesk","href":"/integrations/webhooks/zendesk-webhooks"},{"title":"Zoom Webhooks","sidebarTitle":"Zoom","href":"/integrations/webhooks/zoom-webhooks"}]},{"group":"Web Servers","pages":[{"title":"Using ngrok with SMTP Mail Servers","sidebarTitle":"SMTP Mail Servers","href":"/using-ngrok-with/smtp"},{"title":"Using ngrok with NGINX","sidebarTitle":"NGINX","href":"/using-ngrok-with/nginx"},{"title":"Using ngrok with an outbound proxy","sidebarTitle":"Outbound Proxies","href":"/using-ngrok-with/outboundProxy"},{"title":"Using ngrok with Virtual hosts (MAMP, WAMP, etc)","sidebarTitle":"Virtual hosts (MAMP, WAMP, etc)","href":"/using-ngrok-with/virtualHosts"},{"title":"Using ngrok with gRPC","sidebarTitle":"gRPC","href":"/using-ngrok-with/gRPC"}]}]},{"tab":"Reference","menu":[{"item":"Platform API","pages":[{"title":"Platform API","href":"/api"}]},{"item":"Agent API","pages":[{"title":"Agent API","href":"/gateway/agent/api"}]},{"item":"Agent CLI","pages":[{"title":"Agent CLI","href":"/gateway/agent/cli"}]},{"item":"Agent Config File","pages":[{"title":"Agent Config File","href":"/gateway/agent/config"}]},{"item":"Agent SDKs","pages":[{"title":"Agent SDKs","href":"/agent-sdks"}]},{"item":"Errors","pages":[{"title":"Errors","href":"/errors"}]},{"item":"Changelogs","pages":[{"title":"Changelogs","href":"/gateway/agent/changelog"}]}],"pages":[{"title":"Reference","href":"/api"}]},{"tab":"Pricing","pages":[{"title":"Pricing","href":"/pricing-limits"}]},{"tab":"About","pages":[{"title":"About","href":"/about"}]}]},"title":"LaunchDarkly Webhooks - ngrok documentation","buildId":"dpl_AUojGTPodKNPTVaxVPcxnNvkSVqo","deploymentId":"dpl_AUojGTPodKNPTVaxVPcxnNvkSVqo","dynamics":[],"chunks":[]}