{"id":5901,"date":"2015-09-06T20:51:06","date_gmt":"2015-09-06T20:51:06","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/webdev\/2015\/09\/06\/integrating-with-salesforce-using-asp-net-webhooks-preview\/"},"modified":"2023-09-19T11:22:45","modified_gmt":"2023-09-19T18:22:45","slug":"integrating-with-salesforce-using-asp-net-webhooks-preview","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/dotnet\/integrating-with-salesforce-using-asp-net-webhooks-preview\/","title":{"rendered":"Integrating with Salesforce using ASP.NET WebHooks Preview"},"content":{"rendered":"<p>In the blog <a href=\"http:\/\/blogs.msdn.com\/b\/webdev\/archive\/2015\/09\/04\/introducing-microsoft-asp-net-webhooks-preview.aspx\">Introducing Microsoft ASP.NET WebHooks Preview<\/a>, we gave an overview of how to work with Microsoft ASP.NET WebHooks. Out of the box we provide support for a variety of existing WebHooks providers such as <a href=\"http:\/\/dropbox.com\/\">Dropbox<\/a>, <a href=\"http:\/\/www.github.com\/\">GitHub<\/a>, <a href=\"http:\/\/www.mailchimp.com\/\">MailChimp<\/a>, <a href=\"http:\/\/www.paypal.com\/\">PayPal<\/a>, <a href=\"http:\/\/http\/\/www.slack.com\">Slack<\/a>, <a href=\"http:\/\/www.trello.com\/\">Trello<\/a>, and many more.<\/p>\n<p><a href=\"http:\/\/www.salesforce.com\/\">Salesforce<\/a> does not support classic WebHooks, but they do have a concept called <a href=\"https:\/\/help.salesforce.com\/htviewhelpdoc?id=workflow_defining_outbound_messages.htm\">Outbound Soap Messages<\/a> which shares many of the same characteristics. As a result, it is possible to receive these messages using ASP.NET WebHooks which we will describe here. To support receiving Outbound Soap Messages you need to install the <b><a href=\"https:\/\/www.nuget.org\/packages?q=Microsoft.AspNet.WebHooks.Receivers.Salesforce\">Microsoft.AspNet.WebHooks.Receivers.Salesforce<\/a><\/b> Nuget package into your Web Application but more about that later.<\/p>\n<h3>Configuring Outbound Soap Messages<\/h3>\n<p>In order to setup <a href=\"https:\/\/help.salesforce.com\/htviewhelpdoc?id=workflow_defining_outbound_messages.htm\">Outbound Soap Messages<\/a> you need a Salesforce developer account. Then login to <a href=\"http:\/\/www.salesforce.com\">Salesforce.com<\/a> and select <strong>Setup<\/strong> at the top of the page:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/16\/2018\/10\/1185.SalesforceHome_404FF2DD.png\"><img decoding=\"async\" title=\"SalesforceHome\" style=\"border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;border-top-width: 0px;margin-right: auto\" border=\"0\" alt=\"SalesforceHome\" src=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/7450.SalesforceHome_thumb_6D64DFAB.png\" width=\"600\" height=\"498\" \/><\/a><\/p>\n<p>Then you select <strong>Build<\/strong> | <strong>Create<\/strong> | <strong>Workflow and Approvals<\/strong> | <strong>Outbound Messages<\/strong>.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/16\/2018\/10\/1070.SalesforceCreate_22053BE7.png\"><img decoding=\"async\" title=\"SalesforceCreate\" style=\"border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;border-top-width: 0px;margin-right: auto\" border=\"0\" alt=\"SalesforceCreate\" src=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/6011.SalesforceCreate_thumb_4F865BAA.png\" width=\"600\" height=\"498\" \/><\/a><\/p>\n<p>Here you may see an <strong>Understanding Workflow<\/strong> page, which you can read if desired, and then continue to the <strong>Outbound Message<\/strong> page where you select <strong>New Outbound Message<\/strong>:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/16\/2018\/10\/8171.SalesforceOutbound_1D22882B.png\"><img decoding=\"async\" title=\"SalesforceOutbound\" style=\"border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;border-top-width: 0px;margin-right: auto\" border=\"0\" alt=\"SalesforceOutbound\" src=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/1401.SalesforceOutbound_thumb_5F952A61.png\" width=\"600\" height=\"498\" \/><\/a><\/p>\n<p>Here you pick an object such as <strong>Lead<\/strong> and then you fill in the required information. Just like described in the blog <a href=\"http:\/\/blogs.msdn.com\/b\/webdev\/archive\/2015\/09\/04\/introducing-microsoft-asp-net-webhooks-preview.aspx\">Introducing Microsoft ASP.NET WebHooks Preview<\/a> the URI must be public and have the form <b>https:\/\/&lt;host&gt;\/api\/webhooks\/incoming\/sfsoap<\/b>. If you check <strong>Send Session ID<\/strong>, then the outbound message will contain a session ID which can be used for subsequent calls back to Salesforce. Lastly you pick the message fields you want in the notification.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/16\/2018\/10\/7230.SalesforceEditOutbound_385AE12C.png\"><img decoding=\"async\" title=\"SalesforceEditOutbound\" style=\"border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;border-top-width: 0px;margin-right: auto\" border=\"0\" alt=\"SalesforceEditOutbound\" src=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/6354.SalesforceEditOutbound_thumb_7ACD8362.png\" width=\"600\" height=\"498\" \/><\/a><\/p>\n<p>Now we have defined a message \u2013 next we have to define a workflow rule which uses the message. Select <strong>Build<\/strong> | <strong>Create<\/strong> | <strong>Workflow and Approvals<\/strong> | <strong>Workflow Rules<\/strong>. Here you may again see the <strong>Understanding Workflow<\/strong> page, and after that you select <strong>New Rule<\/strong>:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/5481.SalesforceCreateRule_thumb_55CFC2E9.png\"><img decoding=\"async\" title=\"SalesforceCreateRule\" style=\"border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;border-top-width: 0px;margin-right: auto\" border=\"0\" alt=\"SalesforceCreateRule\" src=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/5481.SalesforceCreateRule_thumb_55CFC2E9.png\" width=\"600\" height=\"498\" \/><\/a><\/p>\n<p>Fill in the required fields, for example like below, and save:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/1732.SalesforceEditRule_thumb_431AC932.png\"><img decoding=\"async\" title=\"SalesforceEditRule\" style=\"border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;border-top-width: 0px;margin-right: auto\" border=\"0\" alt=\"SalesforceEditRule\" src=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/1732.SalesforceEditRule_thumb_431AC932.png\" width=\"600\" height=\"498\" \/><\/a><\/p>\n<p>Finally, it\u2019s important to check that the rule is marked as <strong>Active<\/strong>: <\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/16\/2018\/10\/4353.SalesforceRuleActive_5EBF5528.png\"><img decoding=\"async\" title=\"SalesforceRuleActive\" style=\"border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;border-top-width: 0px;margin-right: auto\" border=\"0\" alt=\"SalesforceRuleActive\" src=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/7382.SalesforceRuleActive_thumb_0C4074EC.png\" width=\"600\" height=\"498\" \/><\/a><\/p>\n<h3>Configuring Receiver<\/h3>\n<p>The next step is to configure the WebHook receiver. First make sure you install the <b><a href=\"https:\/\/www.nuget.org\/packages?q=Microsoft.AspNet.WebHooks.Receivers.Salesforce\">Microsoft.AspNet.WebHooks.Receivers.Salesforce<\/a><\/b> Nuget package into your ASP.NET application. Then the registration happens exactly like in the blog <a href=\"http:\/\/blogs.msdn.com\/b\/webdev\/archive\/2015\/09\/04\/introducing-microsoft-asp-net-webhooks-preview.aspx\">Introducing Microsoft ASP.NET WebHooks Preview<\/a> by adding line 21 to the <strong>WebApiConfig.Register<\/strong> method:<\/p>\n<div id=\"codeSnippetWrapper\">\n<div id=\"codeSnippet\">\n<pre><span id=\"lnum1\" style=\"color: #606060\">   1:<\/span> <span style=\"color: #0000ff\">using<\/span> System.Web.Http;<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum2\" style=\"color: #606060\">   2:<\/span>&#160; <\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum3\" style=\"color: #606060\">   3:<\/span> <span style=\"color: #0000ff\">namespace<\/span> WebHookReceivers<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum4\" style=\"color: #606060\">   4:<\/span> {<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum5\" style=\"color: #606060\">   5:<\/span>     <span style=\"color: #0000ff\">public<\/span> <span style=\"color: #0000ff\">static<\/span> <span style=\"color: #0000ff\">class<\/span> WebApiConfig<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum6\" style=\"color: #606060\">   6:<\/span>     {<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum7\" style=\"color: #606060\">   7:<\/span>         <span style=\"color: #0000ff\">public<\/span> <span style=\"color: #0000ff\">static<\/span> <span style=\"color: #0000ff\">void<\/span> Register(HttpConfiguration config)<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum8\" style=\"color: #606060\">   8:<\/span>         {<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum9\" style=\"color: #606060\">   9:<\/span>             <span style=\"color: #008000\">\/\/ Web API configuration and services<\/span><\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum10\" style=\"color: #606060\">  10:<\/span>&#160; <\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum11\" style=\"color: #606060\">  11:<\/span>             <span style=\"color: #008000\">\/\/ Web API routes<\/span><\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum12\" style=\"color: #606060\">  12:<\/span>             config.MapHttpAttributeRoutes();<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum13\" style=\"color: #606060\">  13:<\/span>&#160; <\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum14\" style=\"color: #606060\">  14:<\/span>             config.Routes.MapHttpRoute(<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum15\" style=\"color: #606060\">  15:<\/span>                 name: <span style=\"color: #006080\">&quot;DefaultApi&quot;<\/span>,<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum16\" style=\"color: #606060\">  16:<\/span>                 routeTemplate: <span style=\"color: #006080\">&quot;api\/{controller}\/{id}&quot;<\/span>,<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum17\" style=\"color: #606060\">  17:<\/span>                 defaults: <span style=\"color: #0000ff\">new<\/span> { id = RouteParameter.Optional }<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum18\" style=\"color: #606060\">  18:<\/span>             );<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum19\" style=\"color: #606060\">  19:<\/span>&#160; <\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum20\" style=\"color: #606060\">  20:<\/span>             <span style=\"color: #008000\">\/\/ Load Salesforce receiver<\/span><\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum21\" style=\"color: #606060\">  21:<\/span>             config.InitializeReceiveSalesforceWebHooks();<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum22\" style=\"color: #606060\">  22:<\/span>         }<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum23\" style=\"color: #606060\">  23:<\/span>     }<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum24\" style=\"color: #606060\">  24:<\/span> }<\/pre>\n<p><!--CRLF--><\/div>\n<\/div>\n<p>Set the <strong>MS_WebHookReceiverSecret_SalesforceSoap<\/strong> application setting to the value of your <strong>Organizational ID<\/strong> which you can find on the <strong>Setup<\/strong> page under <strong>Administer<\/strong> | <strong>Company Profile<\/strong> | <strong>Company Information<\/strong>:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/7536.SalesforceOrgId_thumb_556620A5.png\"><img decoding=\"async\" title=\"SalesforceOrgId\" style=\"border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;border-top-width: 0px;margin-right: auto\" border=\"0\" alt=\"SalesforceOrgId\" src=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/7536.SalesforceOrgId_thumb_556620A5.png\" width=\"600\" height=\"498\" \/><\/a><\/p>\n<p>As stated in the blog <a href=\"http:\/\/blogs.msdn.com\/b\/webdev\/archive\/2015\/09\/04\/introducing-microsoft-asp-net-webhooks-preview.aspx\">Introducing Microsoft ASP.NET WebHooks Preview<\/a>, the preferred way to do this is to set it in the Azure Portal:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/3441.AzureAppSettings_thumb_7BC803F0.png\"><img decoding=\"async\" title=\"AzureAppSettings\" style=\"border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;border-top-width: 0px;margin-right: auto\" border=\"0\" alt=\"AzureAppSettings\" src=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/3441.AzureAppSettings_thumb_7BC803F0.png\" width=\"600\" height=\"322\" \/><\/a><\/p>\n<h3>Defining a Handler<\/h3>\n<p>Let\u2019s define a handler that can process the incoming message from Salesforce \u2013 something like this will do:<\/p>\n<div id=\"codeSnippetWrapper\">\n<div id=\"codeSnippet\">\n<pre><span id=\"lnum1\" style=\"color: #606060\">   1:<\/span> <span style=\"color: #0000ff\">public<\/span> <span style=\"color: #0000ff\">class<\/span> SalesforceHandler : WebHookHandler<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum2\" style=\"color: #606060\">   2:<\/span> {<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum3\" style=\"color: #606060\">   3:<\/span>     <span style=\"color: #0000ff\">public<\/span> <span style=\"color: #0000ff\">override<\/span> Task ExecuteAsync(<span style=\"color: #0000ff\">string<\/span> receiver, WebHookHandlerContext context)<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum4\" style=\"color: #606060\">   4:<\/span>     {<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum5\" style=\"color: #606060\">   5:<\/span>         SalesforceNotifications updates = context.GetDataOrDefault&lt;SalesforceNotifications&gt;();<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum6\" style=\"color: #606060\">   6:<\/span>         <span style=\"color: #0000ff\">string<\/span> sessionId = updates.SessionId;<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum7\" style=\"color: #606060\">   7:<\/span>         <span style=\"color: #0000ff\">string<\/span> company = updates.Notifications.First()[<span style=\"color: #006080\">&quot;Company&quot;<\/span>];<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum8\" style=\"color: #606060\">   8:<\/span>         <span style=\"color: #0000ff\">return<\/span> Task.FromResult(<span style=\"color: #0000ff\">true<\/span>);<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum9\" style=\"color: #606060\">   9:<\/span>     }<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum10\" style=\"color: #606060\">  10:<\/span> }<\/pre>\n<p><!--CRLF--><\/div>\n<\/div>\n<h3>Trying it Out<\/h3>\n<p>After deploying your Web Application, we are now ready to try it out. Do this by creating a new <strong>Lead<\/strong> as follows: Go to the <strong>Leads<\/strong> menu and select <strong>New<\/strong>:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/2055.SalesforceLeadsNew_thumb_092E16F7.png\"><img decoding=\"async\" title=\"SalesforceLeadsNew\" style=\"border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;border-top-width: 0px;margin-right: auto\" border=\"0\" alt=\"SalesforceLeadsNew\" src=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/2055.SalesforceLeadsNew_thumb_092E16F7.png\" width=\"600\" height=\"498\" \/><\/a><\/p>\n<p>Then fill in the entry picking values that match the filter you set up for the Lead rule earlier and then hit <strong>Save<\/strong>.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/8272.SalesForceLeadsEdit_thumb_726ECF6D.png\"><img decoding=\"async\" title=\"SalesForceLeadsEdit\" style=\"border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;border-top-width: 0px;margin-right: auto\" border=\"0\" alt=\"SalesForceLeadsEdit\" src=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/8272.SalesForceLeadsEdit_thumb_726ECF6D.png\" width=\"600\" height=\"498\" \/><\/a><\/p>\n<p>When running with the debugger attached you should see something like this:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/16\/2018\/10\/7026.SalesforceRun_3238B5F3.png\"><img decoding=\"async\" title=\"SalesforceRun\" style=\"border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;border-top-width: 0px;margin-right: auto\" border=\"0\" alt=\"SalesforceRun\" src=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/6204.SalesforceRun_thumb_2B19797B.png\" width=\"600\" height=\"128\" \/><\/a><\/p>\n<p>The session ID is available for subsequent calls and you can inspect the data from the notification (or multiple notifications) as well.<\/p>\n<p>Finally, you can optionally inspect the delivery status of the messages by going to <strong>Build<\/strong> | <strong>Create<\/strong> | <strong>Workflow and Approvals<\/strong> | <strong>Outbound Messages<\/strong> and then select <strong>View Message Delivery Status<\/strong>. It should give you an overview of which messages were delivered:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/2100.SalesforceDelivery_thumb_145A31F2.png\"><img decoding=\"async\" title=\"SalesforceDelivery\" style=\"border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;border-top-width: 0px;margin-right: auto\" border=\"0\" alt=\"SalesforceDelivery\" src=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/2100.SalesforceDelivery_thumb_145A31F2.png\" width=\"600\" height=\"498\" \/><\/a><\/p>\n<p>That\u2019s it \u2013 have fun!<\/p>\n<p>Henrik<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the blog Introducing Microsoft ASP.NET WebHooks Preview, we gave an overview of how to work with Microsoft ASP.NET WebHooks. Out of the box we provide support for a variety of existing WebHooks providers such as Dropbox, GitHub, MailChimp, PayPal, Slack, Trello, and many more. Salesforce does not support classic WebHooks, but they do have [&hellip;]<\/p>\n","protected":false},"author":403,"featured_media":58792,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[197],"tags":[34,7505,7506],"class_list":["post-5901","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-aspnet","tag-asp-net-web-api","tag-asp-net-webhooks","tag-webhooks"],"acf":[],"blog_post_summary":"<p>In the blog Introducing Microsoft ASP.NET WebHooks Preview, we gave an overview of how to work with Microsoft ASP.NET WebHooks. Out of the box we provide support for a variety of existing WebHooks providers such as Dropbox, GitHub, MailChimp, PayPal, Slack, Trello, and many more. Salesforce does not support classic WebHooks, but they do have [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts\/5901","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/users\/403"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/comments?post=5901"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts\/5901\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/media\/58792"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/media?parent=5901"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/categories?post=5901"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/tags?post=5901"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}