diff --git a/ForgeBlog/forgeblog/model/blog.py b/ForgeBlog/forgeblog/model/blog.py
index bafd1ab..67b45b6 100644
--- a/ForgeBlog/forgeblog/model/blog.py
+++ b/ForgeBlog/forgeblog/model/blog.py
@@ -258,8 +258,12 @@
                     c.user.username, self.title)
             elif v2.state == 'published':
                 feed_item = self.feed_item()
-                feed_item.title = self.title
-                feed_item.description = g.markdown.convert(self.text)
+                if feed_item:
+                    feed_item.title = self.title
+                    feed_item.description = g.markdown.convert(self.text)
+                else:
+                    M.Feed.post(self, self.title, self.text, author=self.author(),
+                                pubdate=self.get_version(1).timestamp)
                 if v1.title != v2.title:
                     activity('renamed', self)
                     subject = '%s renamed post %s to %s' % (
@@ -269,7 +273,9 @@
                     subject = '%s modified post %s' % (
                         c.user.username, self.title)
             elif v1.state == 'published' and v2.state == 'draft':
-                self.feed_item().delete()
+                feed_item = self.feed_item()
+                if feed_item:
+                    feed_item.delete()
         else:
             description = self.text
             subject = '%s created post %s' % (
@@ -310,7 +316,9 @@
                                 link=self.link_regex)
 
     def delete(self):
-        self.feed_item().delete()
+        feed_item = self.feed_item()
+        if feed_item:
+            feed_item.delete()
         super(BlogPost, self).delete()
 
 
