We’re trying to push outbound caller ID values through a Data Action, and the legacy system only accepts formatted US numbers. The raw attribute comes in as +1XXXXXXXXXX. I’ve been piecing together an Architect expression to strip the country code and inject parentheses and a hyphen. Here’s the logic I built: {{CONCAT("(", SUBSTR({{contact.phoneNumber}}, 3, 3), ")", " ", SUBSTR({{contact.phoneNumber}}, 6, 3), "-", SUBSTR({{contact.phoneNumber}}, 9, 4))}}. The expression builder validates it without errors. Running the flow shows the actual POST to our endpoint keeps returning a 400. The payload shows the number is either blank or just the raw E.164 string. I’ve stepped through the substring math manually. The indices should line up if the input is exactly 14 characters. If there’s a leading space or a different country code, the whole thing shifts. I tried wrapping it in a REPLACE call to strip the plus sign first, but the parser throws a syntax error when I nest it too deep. Honestly, the docs are vague on string padding behavior. It’s supposed to parse cleanly in the sandbox. The expression evaluates to a blank string whenever the input has any whitespace. I don’t want to spin up a full Studio snippet just to handle a simple format change, but the native functions seem brittle. The Data Action JSON looks standard enough: { "target": "https://api.example.com/webhook", "method": "POST", "body": "{{formattedPhone}}" }. Has anyone got a working expression that handles the padding correctly without choking on variable input lengths? The endpoint times out after three retries.