diff --git a/core/src/main/java/io/keen/client/java/KeenClient.java b/core/src/main/java/io/keen/client/java/KeenClient.java
index <HASH>..<HASH> 100644
--- a/core/src/main/java/io/keen/client/java/KeenClient.java
+++ b/core/src/main/java/io/keen/client/java/KeenClient.java
@@ -1092,18 +1092,20 @@ public class KeenClient {
             keenProperties.put("timestamp", timestamp);
         }
 
+        Map<String, Object> mergedKeenProperties = new HashMap<String, Object>();
         // handle global properties
         if (null != globalProperties) {
-            mergeGlobalProperties(getGlobalProperties(), keenProperties, newEvent);
+            mergeGlobalProperties(getGlobalProperties(), mergedKeenProperties, newEvent);
         }
 
         GlobalPropertiesEvaluator globalPropertiesEvaluator = getGlobalPropertiesEvaluator();
         if (globalPropertiesEvaluator != null) {
-            mergeGlobalProperties(globalPropertiesEvaluator.getGlobalProperties(eventCollection), keenProperties,
+            mergeGlobalProperties(globalPropertiesEvaluator.getGlobalProperties(eventCollection), mergedKeenProperties,
                     newEvent);
         }
 
-        newEvent.put("keen", keenProperties);
+        mergedKeenProperties.putAll(keenProperties);
+        newEvent.put("keen", mergedKeenProperties);
 
         // now handle user-defined properties
         newEvent.putAll(event);
Upstream issue keenlabs/KeenClient-Java#<I>
- Merge event keenProperties after the globals