I recently learned Outbound Messaging and how powerful it is. It seems really good feature for integration. It has following features

  1. Point and click setup so very easy
  2. Inbuilt retry mechanize too.
  3. We can pass Session ID to get callback
  4. Inbuilt monitoring mechanism

But still most projects use an API (REST, SOAP etc).

So, I am wondering why its not very popular among developers? Why do most developers seem to use an API instead Outbound Messaging?


For me it has been frustrating to have them in place because there is no response logging mechanism, as far as I'm aware. This lack exacerbates the difficulty of having asymmetric validations in place. In practice, that means that often, a record will save but fail to sync. And we can't determine why simply by looking at Salesforce. Thankfully we have external logs to fall back on, but it's a pain and the main reason we plan to switch to a custom implementation.

| improve this answer | |
  • 2
    This is the most significant point. A lack of logging, or even notifications on failure, makes the system less than ideal. Even just a report with the failures and related records would be immensely useful. – sfdcfox Sep 5 '16 at 19:08

I can't say there are any drawbacks.. Its just finding the right use case and applying which option to go with when integrating Salesforce with an external system..

With so many options around to integrate Salesforce with other applications,

  • Lightning Connect
  • Callouts
  • Outbound Messaging
  • Appexchange Packages
  • Middleware / ETL Tools

it comes down to identifying

  • the capabilities of the system you are integrating with,
  • what tools and technologies you already have in place to reuse,
  • time and effort you have to complete the integration
  • buy vs build decisions

To me you can go with Outbound messaging, If you have control over the system you are integrating with and you can develop / build a custom listener to handle the outbound message and if your requirement to raise a notification is simple (since you have to depend on workflow rule to trigger the outbound message)

| improve this answer | |

This biggest drawback for me is the fact the order that Outbound Messages arrive cannot be guaranteed.

Because of the re-try mechanism, it's possible that an Outbound Message may arrive 24 hours after it was sent, meaning Outbound Messages sent after the first may arrive before it.

From Considerations for Outbound Messages

Messages are retried independent of their order in the queue. This may result in messages being delivered out of order.

| improve this answer | |

Nick, actually messages older than 24hrs aren't delivered at all. From the same document:

If the endpoint is unavailable, messages will stay in the queue until sent successfully
or until they are 24 hours old. After 24 hours, messages are dropped from the queue.

Many customers/developers/architects/consultants often mistake outbound messaging to provide guaranteed delivery indefinitely vs just 24hrs.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.