Hi @richarda Welcome to the n8n community! This happens because n8n doesn’t auto-evaluate expressions stored inside ‘strings’ , once your JSON has something like "{{ $json.body?.query }}" inside it, it’s just plain text and n8n won’t re-run that expression later. The community thread shows that expressions injected as strings won’t be evaluated automatically by other nodes.
To fix this, you need to evaluate or substitute the value before the final node runs:
-
Build the JSON where you use it, put the
{{ }}expression directly in the node that has the actual data. -
Replace placeholders in a Code/Set node before sending.
-
Or explicitly evaluate the stored expression in a Code node if you really need dynamic expression evaluation.
Reference: You Can Take A Look Here