> ## Documentation Index
> Fetch the complete documentation index at: https://docs.alumio.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Execute SOAP request

> Executes requests to a web service via the SOAP protocol.

export const FormField = ({property, label, required = false, diType, uiPatterns, children}) => {
  const patterns = Array.isArray(uiPatterns) ? uiPatterns : uiPatterns ? [uiPatterns] : [];
  return <div style={{
    margin: '1.5rem 0'
  }}>
      <div style={{
    display: 'flex',
    alignItems: 'baseline',
    flexWrap: 'wrap',
    gap: '0.5rem',
    marginBottom: '0.25rem'
  }}>
        <strong>{label}</strong>
        <span style={{
    fontSize: '0.7rem',
    fontWeight: 600,
    textTransform: 'uppercase',
    letterSpacing: '0.04em',
    color: required ? '#6241f5' : '#6b7280'
  }}>
          {required ? 'Required' : 'Optional'}
        </span>
      </div>

      <div>{children}</div>

      {diType || patterns.length > 0 ? <p style={{
    fontSize: '0.85rem',
    color: '#6b7280',
    marginBottom: 0
  }}>
          {diType ? <>
              See the <a href={`/references/${diType}`}>{diType}</a> reference.{' '}
            </> : null}
          {patterns.length > 0 ? <>
              Accepts a <a href={`/documentation/placeholders-and-patterns/patterns#${patterns[0]}`}>pattern</a>.
            </> : null}
        </p> : null}
    </div>;
};

Calls a function on a SOAP web service and places the response into your data. Use this to talk to systems that speak SOAP, for example looking up an order, creating a shipment, or fetching stock from an ERP. You choose the connection and the function to call, optionally shape the request beforehand, and the response replaces the data flowing through this step so the next steps work with what the service returned. The settings are split across a **General** tab and an **Advanced** tab.

This documentation describes: [Schema](/schemas/transformer/soap-transformer)

## Fields

### General

<FormField property="client" label="SOAP connection" required diType="soap-client">
  The pre-configured connection used to reach the SOAP service, including its address and any credentials. You select an existing SOAP connection here.
</FormField>

<FormField property="method" label="SOAP function" required>
  The name of the function to call on the service, as listed in that service's documentation. Placeholders are supported, so the function name can come from your data.
</FormField>

<FormField property="transformer" label="Input transformer" diType="transformer">
  A transformer that runs first to build the request sent to the SOAP function. Use it to shape your data into the structure the function expects. Leave it empty to send the data as it is.
</FormField>

<FormField property="responseValidators[]" label="Response validator" diType="soap-response-validator">
  One or more checks applied to the response. If a check fails, the run stops with an error. Use this to confirm the service returned what you expect before continuing. You can add more than one.
</FormField>

### Advanced

<FormField property="errorHandling.ignoreSoapErrors" label="Ignore SOAP errors">
  When off (the default), a SOAP error stops the run. Turn it on to let the route continue even when the service returns a fault. Switching it on reveals the two options below.
</FormField>

<FormField property="errorHandling.logSoapErrors" label="Log SOAP errors">
  Records the fault message in the logs for later troubleshooting. Shown when Ignore SOAP errors is on.
</FormField>

<FormField property="errorHandling.includeSoapErrors" label="Include SOAP error in data">
  Writes the fault message into your data so a later step can react to it. Shown when Ignore SOAP errors is on; when this is on, a **Path** field appears for the location of the message.
</FormField>

<FormField property="errorHandling.soapErrorsPath" label="Path" required>
  The location in your data where the fault message is written. Shown and required when Include SOAP error in data is on.
</FormField>

<FormField property="requestOptions.bindingStyle" label="SOAP Binding">
  Controls the message style the service expects, **Document** (the default) or **RPC**. Most services use Document; only change this if the service documentation calls for RPC.
</FormField>

## Sample data

This step makes a live SOAP call, so the result depends on the service and function you call. The example below calls a `GetProduct` function, sending the data through as the request; the service's response replaces the data.

| Field           | Value                          |
| --------------- | ------------------------------ |
| SOAP connection | The configured SOAP connection |
| SOAP function   | `GetProduct`                   |

A typical response then replaces the data:

```json theme={null}
{
    "sku": "SHIRT-RED-M",
    "name": "Red T-Shirt M",
    "price": 19.95,
    "in_stock": true
}
```

With **Ignore SOAP errors** and **Include SOAP error in data** turned on and a **Path** of `soap_error`, a fault no longer stops the run; instead the message is added to your data at that path.

```json Configuration theme={null}
{
  "prototype": "soap-transformer",
  "parameters": {
    "client": "default",
    "method": "GetProduct"
  }
}
```

See [Placeholders](/references/placeholders) for how to reference values from the data when building the request.
