diff --git a/duniter4j-es-user/src/main/java/org/duniter/elasticsearch/user/websocket/WebsocketUserEventEndPoint.java b/duniter4j-es-user/src/main/java/org/duniter/elasticsearch/user/websocket/WebsocketUserEventEndPoint.java
index 552300ca04f7ba29539115c77c4190efa96d2174..6f2c898394748fc3dad5ee8d37f44c65591ef929 100644
--- a/duniter4j-es-user/src/main/java/org/duniter/elasticsearch/user/websocket/WebsocketUserEventEndPoint.java
+++ b/duniter4j-es-user/src/main/java/org/duniter/elasticsearch/user/websocket/WebsocketUserEventEndPoint.java
@@ -38,6 +38,8 @@ package org.duniter.elasticsearch.user.websocket;
     limitations under the License.
 */
 
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import org.duniter.core.client.model.bma.Constants;
 import org.duniter.core.util.StringUtils;
 import org.duniter.elasticsearch.user.PluginSettings;
@@ -59,6 +61,7 @@ import java.util.regex.Pattern;
 public class WebsocketUserEventEndPoint implements UserEventService.UserEventListener {
 
     public static Locale defaultLocale;
+    public static ObjectMapper mapper;
 
     public static class Init {
 
@@ -67,6 +70,10 @@ public class WebsocketUserEventEndPoint implements UserEventService.UserEventLis
             webSocketServer.addEndPoint(WebsocketUserEventEndPoint.class);
             defaultLocale = pluginSettings.getI18nLocale();
             if (defaultLocale == null) defaultLocale = new Locale("en", "GB");
+
+            // Define a static mapper
+            mapper = new ObjectMapper();
+            mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
         }
     }
 
@@ -100,7 +107,18 @@ public class WebsocketUserEventEndPoint implements UserEventService.UserEventLis
 
     @Override
     public void onEvent(UserEvent event) {
-        session.getAsyncRemote().sendText(event.toJson(locale));
+        try {
+            UserEvent copy = new UserEvent(event);
+            copy.setMessage(copy.getLocalizedMessage(locale));
+            String json = mapper.writeValueAsString(copy);
+
+            // Force to serialized 'id' (skip @JsonIgnore) - fix #12
+            json = "{\"id\":\""+event.getId()+"\"," + json.substring(1);
+
+            session.getAsyncRemote().sendText(json);
+        } catch(IOException e) {
+            // silent
+        }
     }
 
     @Override