The expression is not what expected in that value attribute:
<xsd:attribute name="value" type="xsd:string">
<xsd:annotation>
<xsd:documentation>
A value of the evaluation token that will be mapped to a channel reference
(e.g., mapping value='foo' channel='myChannel')
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
This value is exactly what the mentioned top-level expression returns.
So, let's imaging your expression="#jsonPath(payload, '$.entity')" may return foo or bar, therefore the mapping must be like:
<int:mapping value="foo" channel="toWeb_send"/>
<int:mapping value="bar" channel="find_preferences"/>
If there is some logic around those headers, they have to be included in the expression evaluation. Or you may choose some other way to calculate the routing key.