SharePoint multi-select choice columns return an array of objects in Power Automate, not a simple string or array of strings. Your trigger condition needs to extract the values from these objects before checking if the array contains "Acme".
Working trigger condition
Use this expression in your trigger condition settings:
@contains(xpath(xml(json(concat('{"body":{"value":', triggerOutputs()?['body/Location'], '}}'))), '/body/value/Value/text()'), 'Acme')
Replace Location with the internal name of your column if different. This expression extracts the selected values into a clean array and checks if it contains "Acme".
Why your expressions failed
Array of objects structure
Multi-select columns output as [{"@odata.type":"#Microsoft.Azure.Connectors.SharePoint.SPListExpandedReference","Id":1,"Value":"Acme"}]. Direct @contains() on this structure fails because you're checking objects, not strings.
Join and coalesce limitations
The join() function works on string arrays, but your Location column returns object arrays. You must extract the Value property first using xpath() or iterate with json() parsing.
Null handling
When Location is empty, triggerOutputs()?['body/Location'] returns null, causing "The template language function 'contains' expects its first parameter to be an array" errors. The xpath expression handles this gracefully.
Alternative using Select action
If trigger conditions prove too complex, add a Condition action after your trigger:
- Add a Select action with From set to triggerOutputs()?['body/Location']
- Map the output to item()?['Value']
- Power Automate wraps this in Apply to each, drag Select out and delete the loop
- Use contains(outputs('Select'), 'Acme') in your Condition
This approach bypasses trigger condition complexity and gives you better debugging visibility.
Thank you!
Proud to be a Super User!
📩 Need more help?
✔️ Don’t forget to Accept as Solution if this guidance worked for you.
💛 Your Like motivates me to keep helping