Using n8n with Custom Link
Every Custom Link command — RequestDateTime, StoreOrdersNormal,
RequestTracesGoods, and everything else in the
command reference — goes through the same single
SOAP operation, ExecuteRequest
(how calls work).
That means every Custom Link workflow in n8n uses the same four-node
shape, whatever command you’re calling. This page documents that shape once;
individual guides link back here instead of re-explaining it.
Why a Set node instead of an n8n credential
Section titled “Why a Set node instead of an n8n credential”Custom Link authentication is a UserName/Password pair sent in the
TAuthenticationHeader SOAP header, inside the XML envelope itself — not
in an HTTP header, the query string, or a JSON body. n8n’s credential system
can only inject values into those three places, so it can’t reach inside a
raw XML body. The workaround used throughout this portal’s SOAP examples is a
plain Set node named SOAP credentials holding two fields
(soapUserName, soapPassword) that a later Code node reads and writes into
the envelope.
The four-node shape, worked through with the smallest command
Section titled “The four-node shape, worked through with the smallest command”The smallest possible Custom Link call — asking the TMS for its current date/time — makes a good first import: it confirms your endpoint URL and SOAP credentials work before you build a real integration.
The payload:
<?xml version="1.0" encoding="windows-1252"?><EoCustomLinkRequestDateTime Type="TEoCustomLinkRequestDateTime"/>The envelope — the payload goes entity-escaped into the ARequest
parameter of the single ExecuteRequest operation
(how calls work):
<?xml version="1.0" encoding="utf-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Header> <h:TAuthenticationHeader xmlns:h="urn:UCoSoapDispatcherBase"> <UserName>YOUR_SOAP_NAME</UserName> <Password>YOUR_SOAP_PASSWORD</Password> </h:TAuthenticationHeader> </SOAP-ENV:Header> <SOAP-ENV:Body> <m:ExecuteRequest xmlns:m="urn:UCoSoapDispatcherCustomLink-ICustomLinkSoap"> <ARequest xsi:type="xsd:string"><?xml version="1.0" encoding="windows-1252"?><EoCustomLinkRequestDateTime Type="TEoCustomLinkRequestDateTime"/></ARequest> </m:ExecuteRequest> </SOAP-ENV:Body></SOAP-ENV:Envelope>Import soap-server-time.json
(Workflows → Import from File), fill in the SOAP credentials node and
replace <your-client-name>. The workflow is four nodes:
SOAP credentials(Set node) — two string fields,soapUserNameandsoapPassword, holding your tenant’s Custom Link credentials. The single place to fill them in per workflow.Build SOAP envelope(Code node) — constructs the command-specific Eo payload (e.g.EoCustomLinkRequestDateTime,EoCustomLinkStoreOrdersNormal), entity-escapes it (&→&,<→<,>→>), and wraps it in theExecuteRequestenvelope together with the credentials from step 1.Call ExecuteRequest(HTTP Request node) —POSTtohttps://<your-client-name>.mendrix.cloud:5564/soap/ICustomLinkSoapwithContent-Type: text/xml; charset=utf-8andSOAPAction: "urn:UCoSoapDispatcherCustomLink-ICustomLinkSoap#ExecuteRequest", body = the envelope above (raw/text). Leave Options → Response → Response Format on its default, Autodetect — forcing Text causes errors against this endpoint.- Unwrap the response (Code node) — extracts the
returnelement from the SOAP body, unescapes it, checks for aTEoCustomLinkExceptionbefore treating it as a successful result, and outputsserverTime.
The response — the result XML comes back entity-escaped inside return:
<?xml version="1.0"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:NS1="urn:UCoSoapDispatcherCustomLink-ICustomLinkSoap"> <NS1:ExecuteRequestResponse> <return xsi:type="xsd:string"><?xml version="1.0" encoding="windows-1252"?><EoCustomLinkResponseDateTime Type="TEoCustomLinkResponseDateTime"> <DateTime>2026-07-22T12:40:13+02:00</DateTime></EoCustomLinkResponseDateTime></return> </NS1:ExecuteRequestResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>Unescaped, the return payload is:
<?xml version="1.0" encoding="windows-1252"?><EoCustomLinkResponseDateTime Type="TEoCustomLinkResponseDateTime"> <DateTime>2026-07-22T12:40:13+02:00</DateTime></EoCustomLinkResponseDateTime>With wrong credentials you still receive an HTTP 200 SOAP response, but the
return payload is a TEoCustomLinkException
(ExceptionClassName: EWrongUserPassword) — see
errors.
Adapting the shape to a different command
Section titled “Adapting the shape to a different command”To call a different Custom Link command, only step 2 changes:
- Replace the Eo payload with the command you need (see the
command reference for the full list and
GdxEoStructures.xsdfor every field). - Steps 1, 3, and 4 are identical for every command — the credentials, the endpoint/headers, and the unwrap-and-check-for-exception logic don’t change.
For example, to poll for order status changes instead of creating an order,
swap the payload for EoCustomLinkRequestOrdersNormal (see Order retrieval
& sync) or EoCustomLinkRequestTracesGoods (see
Traces (track & trace)) — this is exactly what Order status
& track-and-trace does.
Related
Section titled “Related”- SOAP overview — the
ExecuteRequestenvelope mechanics and authentication in full. - Order intake — the same shape for
StoreOrdersNormal, importable asorder-intake.json. - Order status & track-and-trace — the same
shape for reading order state, importable as
order-status-tracking.json.