I think we shouldn't assume that the payloads are UTF-8 strings. Maybe it should rather be base64-encoded?