diff --git a/src/app/contact/controllers/ContactController.php b/src/app/contact/controllers/ContactController.php
index 9e58e823af61ff417d41eec681533abfbfa3a0b9..875a028ed3d6f8eff22d3645cf1e7e50878ea6d7 100755
--- a/src/app/contact/controllers/ContactController.php
+++ b/src/app/contact/controllers/ContactController.php
@@ -1302,7 +1302,7 @@ class ContactController
                         }
                     }
                 }
-                $contactToCreate['custom_fields'] = json_encode($contactToCreate['custom_fields']);
+                $contactToCreate['custom_fields'] = !empty($contactToCreate['custom_fields']) ? json_encode($contactToCreate['custom_fields']) : '{}';
 
                 ContactModel::create($contactToCreate);
             } else {
@@ -1325,8 +1325,9 @@ class ContactController
 
 
                 $oldContact = ContactModel::getById(['id' => $contact['id'], 'select' => ['custom_fields']]);
+                $oldContact['custom_fields'] = json_decode($oldContact['custom_fields'], true);
                 if (!empty($oldContact['custom_fields'])) {
-                    $set['custom_fields'] = $set['custom_fields'] + json_decode($oldContact['custom_fields'], true);
+                    $set['custom_fields'] = $set['custom_fields'] + $oldContact['custom_fields'];
                 }
                 if (!empty($customsToRemove)) {
                     foreach ($customsToRemove as $item) {