outbound-message-setup

Use when configuring Workflow-based Outbound Messages to push SOAP payloads to external endpoints — including endpoint setup, field selection, retry behavior, and delivery monitoring. NOT for Platform Events or Flow-based integrations.

Best use case

outbound-message-setup is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Use when configuring Workflow-based Outbound Messages to push SOAP payloads to external endpoints — including endpoint setup, field selection, retry behavior, and delivery monitoring. NOT for Platform Events or Flow-based integrations.

Teams using outbound-message-setup should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/outbound-message-setup/SKILL.md --create-dirs "https://raw.githubusercontent.com/PranavNagrecha/AwesomeSalesforceSkills/main/skills/admin/outbound-message-setup/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/outbound-message-setup/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How outbound-message-setup Compares

Feature / Agentoutbound-message-setupStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Use when configuring Workflow-based Outbound Messages to push SOAP payloads to external endpoints — including endpoint setup, field selection, retry behavior, and delivery monitoring. NOT for Platform Events or Flow-based integrations.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Outbound Message Setup

This skill activates when a practitioner needs to configure Salesforce Outbound Messages — the built-in SOAP-based notification mechanism that Workflow Rules use to push record data to external endpoints. It covers the acknowledgment format the external endpoint must return, the retry behavior, and the most critical anti-pattern: assuming an HTTP 200 response is sufficient for the external system to stop receiving retries.

---

## Before Starting

Gather this context before working on anything in this domain:

- **Outbound Messages are triggered exclusively by Workflow Rules**: Not Flow, not Apex, not Process Builder (deprecated). Outbound Messages are an action type in Workflow Rules only. If the triggering automation is a Flow or Apex, this skill does not apply — use Platform Events or direct API calls instead.
- **SOAP only — no JSON**: Outbound Messages deliver SOAP 1.1 XML. The external endpoint must be able to parse XML SOAP envelopes and return a specific SOAP acknowledgment response. Systems that only accept JSON cannot use Outbound Messages without a SOAP-to-JSON translation layer.
- **Critical acknowledgment behavior**: The external endpoint must return a SOAP acknowledgment response with `<Ack>true</Ack>` inside the correct Salesforce namespace. An HTTP 200 response with any other body — including empty, JSON, or plain text — is treated as a delivery failure and triggers the full 24-hour retry cycle.

---

## Core Concepts

### Delivery and Acknowledgment

Outbound Messages use at-least-once delivery semantics with SOAP acknowledgment:

1. Salesforce sends a SOAP 1.1 XML payload to the configured endpoint.
2. The external system must return an HTTP 200 response with a specific SOAP body:

```xml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Body>
    <notifications xmlns="http://soap.sforce.com/2005/09/outbound">
      <Ack>true</Ack>
    </notifications>
  </soapenv:Body>
</soapenv:Envelope>
```

If the external system returns HTTP 200 with any body that does not match this structure — including an empty body, a JSON response, or a SOAP body with a different namespace — Salesforce treats it as a failed delivery and begins retrying.

### Retry Behavior

Outbound Message delivery retries follow an exponential backoff pattern up to 24 hours from the first failed delivery:
- Retries occur approximately at: 1 min, 2 min, 4 min, 8 min, 16 min, 32 min, and then hourly.
- After 24 hours, if acknowledgment has not been received, the message is permanently dropped — there is no automatic replay.
- Failed messages are visible in Setup > Process Automation > Outbound Messages (Pending Messages tab).
- Failed messages can be manually requeued from the Outbound Messages setup page, resetting the 24-hour window.

### Field Selection Limitations

Outbound Message payloads include:
- The Salesforce organization ID and session ID (can be used by the external system to call back to Salesforce).
- The record ID of the triggering record.
- Selected fields from the object (chosen when configuring the Outbound Message action).
- Formula fields and related object fields (via cross-object formula fields on the object) can be included.

Limitations:
- Binary fields (file attachments) cannot be included.
- Related records cannot be directly included — only fields on the triggering object and cross-object formula fields.
- The payload is a single record at a time. Outbound Messages are not batch delivery mechanisms.

---

## Common Patterns

### Setting Up an Outbound Message for Record Change Notification

**When to use:** An external ERP system needs to be notified when a Salesforce Opportunity stage changes to "Closed Won."

**How it works:**
1. Create a Workflow Rule on the Opportunity object: "Opportunity Stage changed to Closed Won."
2. Add a Workflow Action: "New Outbound Message."
3. Configure the Outbound Message:
   - Name and unique name.
   - Endpoint URL: `https://erp.example.com/salesforce-webhook/opportunity`.
   - User to send as: integration user (their session ID is included in the payload).
   - Select fields: Id, Name, Amount, StageName, CloseDate, AccountId.
4. Activate the Workflow Rule.
5. Configure the ERP endpoint to parse the SOAP envelope and return the acknowledgment response.
6. Test by closing an Opportunity Won and monitoring delivery in Setup > Process Automation > Outbound Messages.

**Why SOAP acknowledgment matters:** The ERP's HTTP 200 with JSON body is not sufficient. The endpoint must return the SOAP acknowledgment XML. If it returns JSON, Salesforce retries the message every few minutes for 24 hours, delivering the same payload hundreds of times before dropping it.

---

## Decision Guidance

| Situation | Recommended Approach | Reason |
|---|---|---|
| External system needs record change notification, can handle SOAP | Outbound Message on Workflow Rule | Built-in, no code required, at-least-once guaranteed |
| External system only accepts JSON | Platform Event or Apex callout | Outbound Messages deliver SOAP only |
| Need to trigger from Flow or Apex | Platform Event or direct Apex HttpRequest | Outbound Messages are Workflow Rule actions only |
| External system returning HTTP 200 but receiving retries | Fix acknowledgment body to return SOAP Ack:true | HTTP 200 alone is not sufficient — SOAP body must match |
| Message delivery stuck/retrying for hours | Manual requeue from Outbound Messages Setup page | Resets the 24-hour window |
| Messages dropped after 24 hours | No automatic replay — manual requeue or re-trigger | After 24h drop, the message is gone; re-trigger by re-saving the record |
| Need batch delivery | Not suitable — Outbound Messages are single-record | Use Bulk API or batch Apex with platform events for bulk |

---

## Recommended Workflow

Step-by-step instructions for an AI agent or practitioner working on this task:

1. **Confirm Workflow Rule trigger exists** — Outbound Messages require a Workflow Rule as the trigger. Verify a Workflow Rule exists for the triggering event (field change, new record, etc.) or create one. Note: new Workflow Rules cannot be created as of Spring '23 — existing rules can be maintained, and new implementations should use Flow with Platform Events.
2. **Create the Outbound Message action** — From the Workflow Rule, add a Workflow Action > New Outbound Message. Specify the endpoint URL, the "Send As" user (the integration user whose session ID will be in the payload), and select the fields to include.
3. **Configure the external endpoint** — The external system must expose an HTTPS endpoint that accepts SOAP 1.1 XML and returns the specific acknowledgment response. Provide the external team with the SOAP acknowledgment template: HTTP 200 with the `<Ack>true</Ack>` body inside the `http://soap.sforce.com/2005/09/outbound` namespace.
4. **Activate the Workflow Rule** — Activate both the Workflow Rule and ensure it is included in the object's Workflow evaluation.
5. **Test delivery** — Trigger the Workflow by updating a test record. Monitor in Setup > Process Automation > Outbound Messages > Pending and Delivered tabs. Confirm the message moves from Pending to Delivered within a few minutes.
6. **Monitor production** — Schedule a periodic review of the Outbound Messages pending queue. Messages stuck in pending for more than a few hours indicate delivery or acknowledgment failures. Manually requeue to reset the 24-hour window while the underlying issue is investigated.

---

## Review Checklist

Run through these before marking work in this area complete:

- [ ] Workflow Rule is active and triggers on the correct condition
- [ ] Outbound Message action configured with correct endpoint URL and fields
- [ ] External endpoint implements SOAP acknowledgment response (HTTP 200 + SOAP body with Ack:true)
- [ ] Test delivery confirmed — message shows Delivered in Setup > Outbound Messages
- [ ] Monitoring procedure established for pending message queue
- [ ] External team understands the 24-hour retry window and acknowledgment requirement

---

## Salesforce-Specific Gotchas

Non-obvious platform behaviors that cause real production problems:

1. **HTTP 200 without SOAP acknowledgment triggers a retry storm** — The most critical behavior to communicate to the external system team. An HTTP 200 response is not sufficient for Outbound Message delivery confirmation. The response body must be a SOAP envelope containing `<Ack>true</Ack>` inside the `http://soap.sforce.com/2005/09/outbound` namespace. Any other body — empty, JSON, plain text, wrong SOAP namespace — is treated as failure. The external system receives the same message repeatedly every few minutes for 24 hours, generating hundreds or thousands of duplicate deliveries before the message is finally dropped.
2. **Messages are permanently dropped after 24 hours with no replay** — After 24 hours of failed delivery retries, the Outbound Message is permanently discarded. There is no dead-letter queue, no automatic replay, and no notification that the message was dropped (beyond the message disappearing from the pending queue). If a message needs to be re-delivered after the 24-hour window, the Workflow must be manually re-triggered by re-saving the record. For critical integrations, implement compensating controls — either periodic reconciliation queries or alerts for messages stuck in pending longer than a threshold.
3. **Outbound Messages can only be triggered by Workflow Rules (not Flow)** — As Salesforce phases out Workflow Rules in favor of Flow, new Outbound Message actions cannot be added to Flows. This is a significant limitation for new integration implementations. If the automation is Flow-based, Platform Events are the equivalent asynchronous notification mechanism and support JSON payload.

---

## Output Artifacts

| Artifact | Description |
|---|---|
| Outbound Message configuration | Endpoint URL, field selection, Send As user setup |
| SOAP acknowledgment template | XML response the external system must return to confirm delivery |
| Monitoring procedure | Steps to check Outbound Messages pending and delivered queues |
| Retry management guide | Steps to manually requeue failed messages and reset the 24-hour window |

---

## Related Skills

- integration-admin-connected-apps — If the external system calls back to Salesforce using OAuth, configure a connected app
- remote-site-settings — Not required for Outbound Messages (Salesforce is the sender, not the receiver)

Related Skills

shield-kms-byok-setup

8
from PranavNagrecha/AwesomeSalesforceSkills

Configure Shield Platform Encryption with customer-supplied (BYOK) or customer-held (Cache-Only Key Service) tenant secrets, rotate them, and recover. NOT for Classic Encryption or field masking.

message-channel-patterns

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when implementing Lightning Message Service (LMS) to enable cross-DOM communication between LWC, Aura, and Visualforce components on the same Lightning page, using message channels. Triggers: 'communicate between unrelated LWC components', 'send data between Visualforce and LWC', 'lightning message service not working', 'APPLICATION_SCOPE vs default scope', 'message channel metadata deployment'. NOT for parent-child component communication (use component-communication) or server-side events.

slack-salesforce-integration-setup

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when setting up or troubleshooting the Salesforce for Slack managed app — including connecting a Salesforce org to a Slack workspace, configuring the three-party admin handshake, linking Slack channels to Salesforce records, enabling record preview sharing, and managing org-level limits. Triggers on: Salesforce for Slack app not connecting, Slack org connection setup, Salesforce record sharing in Slack, Slack workspace admin approval, connecting Salesforce to Slack. NOT for building custom Slack apps or Slack bots (separate development platform), not for Slack Workflow Builder Salesforce connector (use slack-workflow-builder skill), not for Flow-based Slack messaging (use flow-for-slack skill).

salesforce-maps-setup

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when configuring Salesforce Maps (formerly MapAnything) — territory planning, route optimization, live tracking, geo-grid visualizations, and check-in/check-out workflows for Sales or Service field reps not on Field Service. Covers package installation order (Maps + Maps Advanced + Maps Routing/Live Tracking add-ons), the MapsTerritoryPlan / MapsAdvancedRoute / MapsLayer object family, base-data syncs (Geocoding and Routing services), and integration with Sales and Service Cloud records. Triggers: 'Salesforce Maps setup', 'MapAnything migration', 'territory planning by polygon', 'route optimization for sales reps', 'live tracking field reps', 'plot accounts on a map', 'check-in to the closest account'. NOT for Field Service Lightning territory and scheduling (use admin/fsl-scheduling-optimization-design and data/fsl-territory-data-setup) — Maps and FSL are different products. NOT for Consumer Goods Cloud retail visit planning (use admin/consumer-goods-cloud-setup) — RoutePlan/Visit objects are CG-specific. NOT for Tableau / CRM Analytics geo charts.

private-connect-setup

8
from PranavNagrecha/AwesomeSalesforceSkills

Configure Private Connect between Salesforce and AWS/Azure for traffic to stay on private networks. NOT for standard internet callouts.

outbound-webhook-from-salesforce

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when Salesforce must POST a webhook to a third-party endpoint after a record change — with signed payloads, retries, dead-lettering, rate limits, and idempotency. Covers design choice between Outbound Message, Flow HTTP Callout, Apex Queueable callout, and Event Relay. Does NOT cover inbound webhooks into Salesforce (see inbound-webhook or apex-rest-webhook).

outbound-messages-and-callbacks

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when implementing or troubleshooting Salesforce Outbound Messages — the workflow-triggered SOAP notification mechanism that pushes record field values to an external HTTPS endpoint. Trigger keywords: outbound message not delivering, configure outbound message endpoint, SOAP callback from Salesforce, workflow rule sends notification to external system, outbound message retry loop, acknowledgment SOAP response, session ID in outbound message. NOT for Platform Events, Change Data Capture, REST callouts from Apex, or selecting between event-driven mechanisms (use event-driven-architecture-patterns for selection).

net-zero-cloud-setup

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when configuring Salesforce Net Zero Cloud — including Scope 1/2/3 emission source modeling via the StnryAssetCrbnFtprnt / VehicleAssetCrbnFtprnt / Scope3CrbnFtprnt object families, emission factor library setup (EmssnFctr / EmssnFctrSet), DPE-driven carbon calculation jobs, supplier engagement scoring, and CSRD / ESRS / TCFD disclosure pack mapping. Triggers on: Net Zero Cloud setup, Sustainability Cloud carbon accounting, Scope 1 2 3 emissions Salesforce, emission factor library, supplier engagement Net Zero, ESG disclosure pack mapping. NOT for ESG content scoring (use Marketing Cloud), NOT for general financial reporting (use Accounting Subledger), NOT for energy-only utility billing (use Energy & Utilities Cloud).

named-credentials-setup

8
from PranavNagrecha/AwesomeSalesforceSkills

Named Credentials and External Credentials configuration for secure outbound callouts: per-user vs per-org authentication, legacy vs enhanced Named Credentials, external credential principal types (Named Principal, Per User, Anonymous), OAuth 2.0 and JWT flows, and credential deployment. NOT for callout code patterns, Apex HTTP implementation, or OAuth server-side flow debugging.

manufacturing-cloud-setup

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when configuring Salesforce Manufacturing Cloud — including Sales Agreement setup, Account-Based Forecasting (ABF) recalc jobs, run-rate management, Rebate Management programs, channel inventory tracking via Channel Revenue Management, and Group Membership / OrderItem-to-SalesAgreement reconciliation. Triggers on: Manufacturing Cloud setup, Sales Agreement Salesforce, account-based forecast recalculation, run rate manufacturing, rebate program setup, channel revenue management. NOT for general Sales Cloud opportunity-to-order flow (use standard Opportunity / Order), NOT for Field Service install-base management (use FSL skills), NOT for Automotive Cloud dealer modeling (use automotive-cloud-setup).

loyalty-management-setup

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when setting up or extending Salesforce Loyalty Management — including program and currency creation, tier group design, qualifying vs. non-qualifying point currency separation, DPE batch job activation, partner loyalty configuration, and member portal setup on Experience Cloud. Triggers on: Loyalty Management setup, loyalty tier setup Salesforce, qualifying points vs redemption points, DPE batch job for loyalty, partner loyalty program Salesforce, loyalty member portal. NOT for Marketing Cloud engagement program design (separate product), not for B2B loyalty via Sales Cloud (standard opportunity, not loyalty program), not for general Experience Cloud site setup (use experience-cloud-setup skill).

automotive-cloud-setup

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when setting up or extending Salesforce Automotive Cloud — including the Vehicle / VehicleDefinition data model, dealer-OEM relationship modeling via AccountAccountRelation, ActionableEvent orchestration for service campaigns and recalls, FinancialAccount lifecycle for retail-credit deals, and DriverQualification / WarrantyTerm extensions. Triggers on: Automotive Cloud setup, Salesforce Automotive Cloud data model, Vehicle vs VehicleDefinition, dealer hierarchy AccountAccountRelation, Automotive Cloud actionable events, recall campaign Salesforce. NOT for general Sales Cloud opportunity work on a vehicle product (use standard Opportunity), NOT for Manufacturing Cloud sales agreements (use manufacturing-cloud-setup), NOT for Field Service vehicle inventory (use FSL skills).