Browse Guides

Incoming Webhook Processing Service
Reading mode
Copy Link
Link Copied!
Print
Feedback
This guide has multiple versions available:
<style>p { margin: 0; }span.fr-emoticon.fr-emoticon-img { background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle; } span.fr-emoticon { font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0; } blockquote { border-left: solid 2px #5e35b1; color: #5e35b1; margin-left:0; padding-left:5px;}blockquote blockquote{ border-color: #00bcd4; color: #00bcd4;}blockquote blockquote blockquote{ border-color: #43a047; color: #43a047;} table.grid{ border-collapse: collapse;} table.grid td, table.grid th { border: 1px solid #ddd;} .fr-fic.fr-dib{ display: block; margin: 5px auto;}.fr-fic.fr-dib.fr-fir{ text-align: right; margin: 5px 0 5px auto;}.fr-fic.fr-dib.fr-fil{ text-align: left; margin: 5px auto 5px 0;}.fr-fic.fr-dii{ float: none; margin: 5px auto;}.fr-fic.fr-dii.fr-fil{ float: left; margin: 5px auto;}.fr-fic.fr-dii.fr-fir{ float: right; margin: 5px auto;}img.fr-dib.fr-fir { margin-right: 0; text-align: right;}img.fr-dib.fr-fil { margin-left: 0; text-align: left;}img.fr-dib { margin: 5px auto; display: block; float: none;}img.fr-bordered { box-sizing: content-box; border: solid 5px #CCC;}img.fr-shadow { box-shadow: 10px 10px 5px 0px #cccccc;}img.fr-rounded { border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box;}</style><p><strong>In this guide we will cover:</strong></p><p><strong>- What is the Incoming Webhook Service?</strong></p><p><strong>- Available Integrations</strong></p><p><strong>- Processing Methods</strong></p><p><strong>- Viewing Webhook Logs</strong></p><p id="isPasted"><strong>- Viewing Individual Webhooks and Managing Attempts</strong></p><p><br></p><p><br></p><p id="isPasted"><strong><span style="font-size: 14pt;">What is the Incoming Webhook Service?</span></strong></p><p>The incoming webhook service allows behaviour customisation of how Halo processes webhooks from integrations. In addition to the previous functionality, two additional methods have been added through this service.</p><p><br></p><p>This service can be enabled in Configuration &gt; Advanced Settings &gt; Backend Monitoring, and will allow the service to then be configured per integration.</p><p><br></p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjcwYjRlYmIzLWUxYTgtNDQyYy1hZjRjLTk5MmM0MGU0NmVhNCJ9.Vta9D7_MbvS1EYALgvDCjeucahRxcQAKoerZXlwEnLw" class="fr-fic fr-fil fr-dib" width="667" height="56"></p><p><strong><span style="font-size: 10pt;">Fig 1. Enabling incoming webhook service.</span></strong></p><p><br></p><p><strong><span style="font-size: 14pt;">Available Integrations</span></strong></p><p>This method is currently available for the following integrations:</p><p><br></p><ul><li>QuickBooks Online</li><li>Xero</li></ul><p><br></p><p><strong><span style="font-size: 14pt;">Processing Methods</span></strong></p><p>Once the above is enabled, you can then go to each integration to configure the processing method. Below is the example dropdown within the Xero integration.</p><p><br></p><p><br></p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjM2M2Q0NDQ0LTFlN2QtNGQ2My04MGU4LTI5ZmQ2ZGY5YmU1YyJ9.n9yDW4MgLmdQ8ANWlvDzg_IFP8JTCVpOqv6eTN2jwZU" class="fr-fic fr-fil fr-dib" width="1217" style="width: 1219px; height: 235.29px;" height="235"></p><p><strong><span style="font-size: 10pt;">Fig 2. Webhook processing options.</span></strong></p><p><br></p><p id="isPasted"><strong>1. Use the default webhook processing functionality.</strong></p><p>This is the default option. Each incoming webhook will be processed immediately, and failed webhooks will not be retried.</p><p><br></p><p><strong>2. Use the incoming webhook service with immediate processing</strong></p><p>This means the webhook service is in use for the integration. Each incoming webhook will be processed immediately, and any failed webhooks will then be automatically retried a further 2 times via the task scheduling service. This is the recommended option.</p><p><br></p><p><strong>3. Use the incoming webhook service with delayed processing</strong></p><p>The same as option 2, but webhooks are not processed immediately when they are received. Instead, they are automatically queued and picked up by the task scheduling service. This option is only necessary if option 2 is failing to process webhooks after 3 attempts due to rate limits, i.e. the webhook result is returning 429 too many requests.</p><p><br></p><p>Logic has been added to the task scheduler to retrieve webhook resource data in batches. This greatly reduces the number of requests made to the third-party API, thus reducing the chance of hitting third-party rate limits. This logic is always used for option 3, and is used before retrying webhooks when using option 2.</p><p><br></p><p><strong><span style="font-size: 14pt;">Viewing Webhook Logs</span></strong></p><p id="isPasted">If the integration has an &quot;Inbound Requests&quot; tab, incoming webhooks can be viewed there as before.</p><p><br></p><p>Another &quot;Incoming Webhook Log&quot; tab is available in Configuration &gt; Advanced &gt; Backend Monitoring, and can be used to view inbound webhooks for any integration that has enabled the incoming webhook service.</p><p><br></p><p><img data-fr-image-pasted="true" src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImMyYTY1Yzg5LWFkNTktNGNiMC1hYzkwLWZiODA2N2RkNTM5NCJ9.Ll031CqfSja6H5Ub5SICP8URiSc8WoiQ6Los_UXckT0" width="1190" style="box-sizing: inherit; border-style: none; cursor: pointer; padding: 0px 1px; user-select: none; text-align: left; color: rgb(0, 0, 0); font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; width: 1192px; height: 401.866px; max-width: none !important;" id="isPasted" class="fr-fil fr-dib" height="402"></p><p><strong><span style="font-size: 10pt;">Fig 3. Incoming Webhook Log tab.</span></strong></p><p><br></p><p id="isPasted">Webhooks can still be viewed on the &quot;Integration Inbound Requests&quot; tab in the Backend Monitoring area. When viewing these requests, the response tab will show a &quot;202 Accepted&quot; result with the following message if they have been deferred to the new service:</p><p><br></p><p><img data-fr-image-pasted="true" src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImI3MDdkZWM1LTQ5YzUtNGFlNi1hNTAxLTU0NjEzYzExYjgzZSJ9.qhbs-ZajpW0VqL0dgZGdfB3wUWuHW4PNmfoF6rBHiQs" width="472" style="box-sizing: inherit; border-style: none; cursor: pointer; padding: 0px 1px; user-select: none; text-align: left; color: rgb(0, 0, 0); font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; max-width: none !important; width: 474px; height: 263.219px;" id="isPasted" class="fr-fil fr-dib" height="263"></p><p><strong><span style="font-size: 10pt;">Fig 4. 202 message example.</span></strong></p><p><br></p><p id="isPasted"><strong><span style="font-size: 14pt;">Viewing Individual Webhooks and Managing Attempts</span></strong></p><p>When viewing an incoming webhook that is processed by the new service, additional tabs will now be displayed when compared to the old method.</p><p><br></p><p>The &quot;Details&quot; tab records the current status of the webhook and how many automatic attempts are remaining. Unprocessed webhooks can be manually retried individually using the &quot;Retry&quot; button when viewing the webhook, or in batch by selecting multiple webhooks from the list. Each attempt can be viewed on the &quot;Attempts&quot; tab of the webhook.&nbsp;</p><p><br></p><p><img data-fr-image-pasted="true" src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjQxMzk5YjBkLTQ4MjEtNGNjYy1hOGJhLTJlNDk2MWRlZmU5MyJ9.7xckk9iAN5k0Zj0RujXkGDSqRu2UB6ODCVHxsrE59_4" width="331" style="box-sizing: inherit; border-style: none; cursor: pointer; padding: 0px 1px; user-select: none; text-align: left; color: rgb(0, 0, 0); font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; width: 333px; height: 439.016px; max-width: none !important;" id="isPasted" class="fr-fil fr-dib" height="439"></p><p><strong><span style="font-size: 10pt;">Fig 5. Webhook log tabs.</span></strong></p><p><br></p><p id="isPasted">The &quot;Resource Data&quot; tab on successful webhooks shows any resource data that has been downloaded during the request processing, as well as the date that the data was downloaded. This date is used to prevent the service from processing stale webhooks if newer webhooks are received and processed for an entity before the previous one has been processed.</p><p><br></p><p><img data-fr-image-pasted="true" src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjYxZDIwNDk4LTRkZmYtNDc5Ny05N2MzLTg5MWI0NjFkMWY0YyJ9.JguRz6VXZtuhBNFgdVkxE7HStMC4WeW-83tfqMWELaI" width="470" style="box-sizing: inherit; border-style: none; cursor: pointer; padding: 0px 1px; user-select: none; text-align: left; color: rgb(0, 0, 0); font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; width: 472px; height: 490.833px; max-width: none !important;" id="isPasted" class="fr-fil fr-dib" height="491"></p><p><strong><span style="font-size: 10pt;">Fig 6. Resource Data tab.</span></strong></p><p><br></p><p><br></p>
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.