Your endpoint may receive several HTTP calls for the same event, depending on the event.When a transaction reaches a final status such as failed or successful, the related webhook is normally sent once.For intermediate statuses such as pending or action_required, the webhook may be sent more than once. This happens when the provider data changes: the HUB2 API received an update from the provider, but not one that determines the final status of the transaction.A delivery that is retried (see below) also reaches your endpoint more than once. Every attempt for the same event carries the same event id, which you can use to ignore duplicates.A status can also be notified again as a new event with a new id, for example when HUB2 support re-sends a webhook. Make your processing idempotent on the object (data.id) and its status, not only on the event id.
If the target URL cannot be reached for any reason (network failure, server unavailable, etc.), the HTTP call fails.To handle this, the HUB2 API retries failed deliveries.This is the default behavior. With the no_retry strategy set in the dashboard, a failed delivery is not retried and the webhook is not disabled.
After a failed delivery, the webhook is sent again after an initial delay of 60 seconds.
Each new failure extends this delay exponentially, following this formula:
function exponential(delay) { return function (attemptsMade) { return Math.round((Math.pow(2, attemptsMade) - 1) * delay); };}
This gives the following delays before each retry:
1 minute
3 minutes
7 minutes
15 minutes
31 minutes
63 minutes
127 minutes
and so on, doubling each time.
Retries do not last forever. If the delivery still fails after 10 retries (11 attempts in total, about 34 hours after the first one), the HUB2 API considers the target URL unreachable, stops retrying and automatically disables the webhook.
A disabled webhook stays disabled until you enable it again. Events that occur while it is disabled are not delivered, so make sure this never happens. Deliveries still pending or being retried when the webhook is disabled are dropped as well. After re-enabling it, retrieve the status of the affected transactions through the API.You can enable the webhook again at any time by setting its status back to enabled through the API.
To prevent deactivation, the endpoint receiving the webhook must always return a 2xx HTTP status code.Any other response, or no response at all, counts as a failure. Do not rely on redirects: register the final URL of your endpoint. Once the retries are exhausted, the webhook is disabled automatically.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"HUB2 Documentation","colors":{"primary":"#0D9373","light":"#07C983","dark":"#0D9373"},"logo":{"light":"https://mintcdn.com/hub2-83/aPkTvmVeXN9HXpuW/assets/logo/hub2.png?fit=max\u0026auto=format\u0026n=aPkTvmVeXN9HXpuW\u0026q=85\u0026s=18f9f70abbe4d6234bad47152927237a","dark":"https://mintcdn.com/hub2-83/aPkTvmVeXN9HXpuW/assets/logo/hub2.png?fit=max\u0026auto=format\u0026n=aPkTvmVeXN9HXpuW\u0026q=85\u0026s=18f9f70abbe4d6234bad47152927237a"},"favicon":"https://mintcdn.com/hub2-83/aPkTvmVeXN9HXpuW/assets/favicon.png?fit=max\u0026auto=format\u0026n=aPkTvmVeXN9HXpuW\u0026q=85\u0026s=d71426a9f8f85b6c6ccce6d36247bf39","api":{"openapi":"https://api.hub2.io/docs-json"},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/hub2","website":"https://www.hub2.io"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"hub2-83","hasAudioNarration":false,"actualSubdomain":"hub2-83","customDomains":["docs.hub2.io"],"gitSource":{"type":"github","owner":"technohub2","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae16defdd9644647b4200dd","collectionId":"57fb640c-62d6-4c13-a1f8-78fc452635ea","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae16defdd9644647b4200dd"},"entitlements":{},"buildId":"6ae16defdd9644647b4200dd","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"default","tag":"Référence de l'API","count":86},{"language":"default","tag":"Integration","count":44},{"language":"default","tag":"Intégration","count":44},{"language":"default","tag":"Payments","count":18},{"language":"default","tag":"Webhooks","count":17},{"language":"default","tag":"Documentation","count":16},{"language":"default","tag":"Transfers","count":11},{"language":"default","tag":"Compliance","count":10},{"language":"default","tag":"Payment Links","count":10},{"language":"default","tag":"Processing Only","count":10}]},"assistantConfig":{},"basePath":"","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":"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":"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":"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":"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":"full-page-search","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":"turbopuffer-dual-write","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},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"assets/style.css","content":"table{display:table!important}.table-scroll{overflow:scroll}table tbody tr:nth-child(odd){background:#fafafa}html.dark table tbody tr:nth-child(odd){background:#1a1a1a}"}],"page":{"pagePath":"integration/en/webhooks/webhooks_behavior","slug":"/integration/en/webhooks/webhooks_behavior","pageMetadata":{"title":"Webhooks behavior","description":null,"href":"/integration/en/webhooks/webhooks_behavior"},"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`,..._provideComponents(),...props.components},{CodeBlock,Heading,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`number-of-http-calls-sent`,children:`Number of HTTP calls sent`}),`\n`,_jsx(_components.p,{children:`Your endpoint may receive several HTTP calls for the same event, depending on the event.`}),`\n`,_jsxs(_components.p,{children:[`When a transaction reaches a final status such as `,_jsx(_components.code,{children:`failed`}),` or `,_jsx(_components.code,{children:`successful`}),`, the related webhook is normally sent once.`]}),`\n`,_jsxs(_components.p,{children:[`For intermediate statuses such as `,_jsx(_components.code,{children:`pending`}),` or `,_jsx(_components.code,{children:`action_required`}),`, the webhook may be sent more than once. This happens when the provider data changes: the HUB2 API received an update from the provider, but not one that determines the final status of the transaction.`]}),`\n`,_jsxs(_components.p,{children:[`A delivery that is retried (see below) also reaches your endpoint more than once. Every attempt for the same event carries the same event `,_jsx(_components.code,{children:`id`}),`, which you can use to ignore duplicates.`]}),`\n`,_jsxs(_components.p,{children:[`A status can also be notified again as a new event with a new `,_jsx(_components.code,{children:`id`}),`, for example when HUB2 support re-sends a webhook. Make your processing idempotent on the object (`,_jsx(_components.code,{children:`data.id`}),`) and its status, not only on the event `,_jsx(_components.code,{children:`id`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`in-case-of-http-failure`,children:`In case of HTTP failure`}),`\n`,_jsx(_components.p,{children:`If the target URL cannot be reached for any reason (network failure, server unavailable, etc.), the HTTP call fails.`}),`\n`,_jsx(_components.p,{children:`To handle this, the HUB2 API retries failed deliveries.`}),`\n`,_jsxs(_components.p,{children:[`This is the default behavior. With the `,_jsx(_components.code,{children:`no_retry`}),` strategy set in the dashboard, a failed delivery is not retried and the webhook is not disabled.`]}),`\n`,_jsx(Heading,{level:`3`,id:`retry-strategy`,children:`Retry strategy`}),`\n`,_jsxs(_components.p,{children:[`After a failed delivery, the webhook is sent again after an initial delay of `,_jsx(_components.code,{children:`60`}),` seconds.\nEach new failure extends this delay exponentially, following this formula:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`javascript`,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:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` exponential`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`delay`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`\treturn`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` function`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`attemptsMade`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`\t\treturn`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Math`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`round`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`((`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Math`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`pow`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`attemptsMade`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`-`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`*`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` delay`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\t};`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`This gives the following delays before each retry:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`1 minute`}),`\n`,_jsx(_components.li,{children:`3 minutes`}),`\n`,_jsx(_components.li,{children:`7 minutes`}),`\n`,_jsx(_components.li,{children:`15 minutes`}),`\n`,_jsx(_components.li,{children:`31 minutes`}),`\n`,_jsx(_components.li,{children:`63 minutes`}),`\n`,_jsx(_components.li,{children:`127 minutes`}),`\n`,_jsx(_components.li,{children:`and so on, doubling each time.`}),`\n`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Retries do not last forever. If the delivery still fails after `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`10`})}),` retries (11 attempts in total, about 34 hours after the first one), the HUB2 API considers the target URL unreachable, stops retrying and automatically disables the webhook.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`timeout`,children:`Timeout`}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`If the target URL takes longer than 5 seconds to respond, the HUB2 API stops waiting and counts the call as a failure.`})}),`\n`,_jsx(_components.p,{children:`A timeout triggers the retry strategy, so a slow endpoint is a common reason for receiving the same webhook several times.`}),`\n`,_jsx(Heading,{level:`2`,id:`automatic-deactivation`,children:`Automatic deactivation`}),`\n`,_jsx(_components.p,{children:`A disabled webhook stays disabled until you enable it again. Events that occur while it is disabled are not delivered, so make sure this never happens. Deliveries still pending or being retried when the webhook is disabled are dropped as well. After re-enabling it, retrieve the status of the affected transactions through the API.`}),`\n`,_jsxs(_components.p,{children:[`You can enable the webhook again at any time by setting its `,_jsx(_components.code,{children:`status`}),` back to `,_jsx(_components.code,{children:`enabled`}),` through the API.`]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:_jsx(_components.a,{href:`/api-reference/webhooks/update-a-webhook`,children:`Update a webhook`})})}),`\n`,_jsx(_components.p,{children:`To prevent deactivation, the endpoint receiving the webhook must always return a 2xx HTTP status code.`}),`\n`,_jsx(_components.p,{children:`Any other response, or no response at all, counts as a failure. Do not rely on redirects: register the final URL of your endpoint. Once the retries are exhausted, the webhook is disabled automatically.`})]})}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 behavior","description":null,"href":"/integration/en/webhooks/webhooks_behavior"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Number of HTTP calls sent","slug":"number-of-http-calls-sent","depth":2,"children":[]},{"title":"In case of HTTP failure","slug":"in-case-of-http-failure","depth":2,"children":[{"title":"Retry strategy","slug":"retry-strategy","depth":3,"children":[]},{"title":"Timeout","slug":"timeout","depth":3,"children":[]}]},{"title":"Automatic deactivation","slug":"automatic-deactivation","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/hub2-83/0ef60d836fa10d10/assets/mermaid.js"],"subdomain":"hub2-83","siteName":"HUB2 Documentation","title":"Webhooks behavior - HUB2 Documentation","navMaps":{"firstHrefInVersion":{"English":{"href":"/integration/en/webhooks/webhooks_behavior","matchLevel":0},"Français":{"href":"/integration/fr/webhooks/webhooks_behavior","matchLevel":1}},"firstHrefInLanguage":{}},"lastModified":"2026-10-28T03:37:31.640Z","originalFileLocation":"integration/en/webhooks/webhooks_behavior.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=\"application-name\" content=\"HUB2 Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/hub2-83/2cSAgZof76cJIDy-/_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/hub2-83/2cSAgZof76cJIDy-/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/hub2-83/2cSAgZof76cJIDy-/_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/hub2-83/2cSAgZof76cJIDy-/_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/hub2-83/2cSAgZof76cJIDy-/_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/hub2-83/2cSAgZof76cJIDy-/_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/hub2-83/2cSAgZof76cJIDy-/_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/hub2-83/2cSAgZof76cJIDy-/_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/hub2-83/2cSAgZof76cJIDy-/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Webhooks behavior - HUB2 Documentation\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"HUB2 Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.hub2.io/integration/en/webhooks/webhooks_behavior\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://hub2-83.mintlify.app/_mintlify/api/og/v2?division=Webhooks\u0026amp;title=Webhooks+behavior\u0026amp;theme=92cb3d561e9d2318e8ed5cd1\u0026amp;signature=2939141d050626e82db06c780487e61075a5d447df630c234b81616d29f601e9\">\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 behavior - HUB2 Documentation\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://hub2-83.mintlify.app/_mintlify/api/og/v2?division=Webhooks\u0026amp;title=Webhooks+behavior\u0026amp;theme=92cb3d561e9d2318e8ed5cd1\u0026amp;signature=2939141d050626e82db06c780487e61075a5d447df630c234b81616d29f601e9\">\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/hub2-83/2cSAgZof76cJIDy-/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"HUB2 Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0D9373\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.hub2.io/integration/en/webhooks/webhooks_behavior\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/integration/en/webhooks/webhooks_behavior.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.hub2.io/#organization\",\"name\":\"HUB2 Documentation\",\"url\":\"https://docs.hub2.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/hub2-83/aPkTvmVeXN9HXpuW/assets/logo/hub2.png?fit=max\u0026auto=format\u0026n=aPkTvmVeXN9HXpuW\u0026q=85\u0026s=18f9f70abbe4d6234bad47152927237a\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.hub2.io#website\",\"name\":\"HUB2 Documentation\",\"url\":\"https://docs.hub2.io\",\"publisher\":{\"@id\":\"https://docs.hub2.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.hub2.io/integration/en/webhooks/webhooks_behavior#webpage\",\"url\":\"https://docs.hub2.io/integration/en/webhooks/webhooks_behavior\",\"name\":\"Webhooks behavior\",\"dateModified\":\"2026-10-28T03:37:31.640Z\",\"isPartOf\":{\"@id\":\"https://docs.hub2.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.hub2.io/integration/en/webhooks/webhooks_behavior#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.hub2.io/integration/en/webhooks/webhooks_behavior#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Webhooks\",\"item\":\"https://docs.hub2.io/integration/en/webhooks/webhooks_overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Webhooks behavior\",\"item\":\"https://docs.hub2.io/integration/en/webhooks/webhooks_behavior\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.hub2.io/integration/en/webhooks/webhooks_behavior#article\",\"headline\":\"Webhooks behavior\",\"name\":\"Webhooks behavior\",\"url\":\"https://docs.hub2.io/integration/en/webhooks/webhooks_behavior\",\"mainEntityOfPage\":{\"@id\":\"https://docs.hub2.io/integration/en/webhooks/webhooks_behavior#webpage\"},\"dateModified\":\"2026-10-28T03:37:31.640Z\",\"publisher\":{\"@id\":\"https://docs.hub2.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.hub2.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"HUB2 Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"HUB2 Documentation","nav":{"global":null,"versions":[{"version":"English","tabs":[{"tab":"HUB2"},{"tab":"Integration","groups":[{"group":"Getting started","pages":[{"title":"Introduction","href":"/integration/en/getting_started/introduction"},{"title":"API Operation","href":"/integration/en/getting_started/api_operation"},{"title":"Security","href":"/integration/en/getting_started/security_considerations"},{"title":"Understand errors","href":"/integration/en/getting_started/understand_errors"},{"title":"API keys","href":"/integration/en/getting_started/api_keys"}]},{"group":"Transfers","pages":[{"title":"Introduction","href":"/integration/en/transfers/transfers_introduction"},{"title":"Integration","href":"/integration/en/transfers/transfers_integration"},{"title":"Failure causes","href":"/integration/en/transfers/transfers_failure_causes"},{"title":"MSISDN - Blacklist","href":"/integration/en/transfers/transfers_msisdn_blacklist"},{"title":"Sandbox MSISDN","href":"/integration/en/transfers/transfers_sandbox_msisdn"}]},{"group":"Payments","pages":[{"title":"Introduction","href":"/integration/en/payments/payments_introduction"},{"title":"Integration","href":"/integration/en/payments/payments_integration"},{"title":"Authentication","href":"/integration/en/payments/payments_authentication"},{"title":"List payments","href":"/integration/en/payments/payments_list"},{"title":"Object samples","href":"/integration/en/payments/payments_examples"},{"title":"Failure causes","href":"/integration/en/payments/payments_failure_causes"},{"title":"Sandbox MSISDN","href":"/integration/en/payments/payments_sandbox_msisdn"}]},{"group":"Instant Payment","pages":[{"title":"Introduction","href":"/integration/en/instant_payment/instant_payment_introduction"},{"title":"Integration","href":"/integration/en/instant_payment/instant_payment_integration"}]},{"group":"Webhooks","pages":[{"title":"Introduction","href":"/integration/en/webhooks/webhooks_overview"},{"title":"Integration","href":"/integration/en/webhooks/webhooks_integration"},{"title":"List of available events","description":null,"href":"/integration/en/webhooks/webhooks_events_list"},{"title":"Webhooks behavior","href":"/integration/en/webhooks/webhooks_behavior"},{"title":"Best practices","description":null,"href":"/integration/en/webhooks/webhooks_bestpractices"},{"title":"Samples","href":"/integration/en/webhooks/webhooks_examples"}]},{"group":"Processing Only","pages":[{"title":"Introduction","href":"/integration/en/processing_only/processing_only_introduction"},{"title":"Setup","href":"/integration/en/processing_only/processing_only_setup"},{"title":"Integration","href":"/integration/en/processing_only/processing_only_integration"}]},{"group":"Payment Links","pages":[{"title":"Introduction","href":"/integration/en/payment_links/payment-links_introduction"},{"title":"Configuration","href":"/integration/en/payment_links/payment-links_setup"},{"title":"Integration","href":"/integration/en/payment_links/payment-links_integration"}]},{"group":"Subscriptions","pages":[{"title":"Introduction","href":"/integration/en/subscriptions/subscriptions_introduction"},{"title":"Integration","href":"/integration/en/subscriptions/subscriptions_integration"}]},{"group":"Submerchants","pages":[{"title":"Introduction","href":"/integration/en/submerchants/submerchants_introduction"},{"title":"Configuration","href":"/integration/en/submerchants/submerchants_setup"},{"title":"Integration","href":"/integration/en/submerchants/submerchants_integration"}]},{"group":"Other","pages":[{"title":"Balances","href":"/integration/en/other_products/balances"},{"title":"Refunds","href":"/integration/en/other_products/refunds"},{"title":"Account Provisioning","href":"/integration/en/other_products/provisioning"},{"title":"Settlement requests","href":"/integration/en/other_products/settlement_requests"},{"title":"Public data","href":"/integration/en/other_products/public_data"},{"title":"Bank collection","href":"/integration/en/other_products/bank_collection"},{"title":"Recipients","href":"/integration/en/other_products/recipients"},{"title":"Payload signature","href":"/integration/en/other_products/payload_signature"}]}]},{"tab":"Documentation","pages":[{"title":"Documentation","href":"/documentation/en/glossary"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/data/get-countries"}]}]},{"version":"Français","pages":[{"title":"Français","href":"/integration/fr/webhooks/webhooks_behavior"}]}]},"basePath":"","title":"Webhooks behavior - HUB2 Documentation","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":[],"chunks":[]}