diff --git a/lib/event_sourcery/event.rb b/lib/event_sourcery/event.rb
index <HASH>..<HASH> 100644
--- a/lib/event_sourcery/event.rb
+++ b/lib/event_sourcery/event.rb
@@ -3,7 +3,7 @@ module EventSourcery
     include Virtus.value_object
 
     def initialize(**hash)
-      hash[:body] = EventSourcery::EventBodySerializer.serialize(hash[:body])
+      hash[:body] = EventSourcery::EventBodySerializer.serialize(hash[:body]) if hash[:body]
       super
     end
 
diff --git a/spec/event_sourcery/event_spec.rb b/spec/event_sourcery/event_spec.rb
index <HASH>..<HASH> 100644
--- a/spec/event_sourcery/event_spec.rb
+++ b/spec/event_sourcery/event_spec.rb
@@ -18,6 +18,15 @@ RSpec.describe EventSourcery::Event do
       expect(EventSourcery::EventBodySerializer).to receive(:serialize).with(body)
       initializer
     end
+
+    context 'event body is nil' do
+      let(:body) { nil }
+
+      it 'skips serialization of event body' do
+        expect(EventSourcery::EventBodySerializer).to_not receive(:serialize)
+        initializer
+      end
+    end
   end
 
   context 'equality' do
don't serialize the event body if not present