diff --git simplenews.module simplenews.module
index 95f76ba..be9a836 100644
--- simplenews.module
+++ simplenews.module
@@ -642,6 +642,43 @@ function simplenews_nodeapi(&$node, $op, $teaser, $page) {
         )));
       }
       break;
+    case 'insert':
+    case 'update':
+      $node->simplenews = _simplenews_get_node_form_defaults();
+
+      // {simplenews_newsletters} data might be missing if an uninstall happened at some time with simplenews nodes created. try to insert if missing.
+      $sn_nid = db_result(db_query("
+        SELECT nid
+        FROM {simplenews_newsletters}
+        WHERE nid = %d",
+        $node->nid));
+      if (!is_numeric($sn_nid)) {
+        // Insert node
+        db_query("
+          INSERT INTO {simplenews_newsletters}
+          (nid, vid, tid, s_status, s_format, priority, receipt)
+          VALUES (%d, %d, %d, %d, '%s', %d, %d)",
+          $node->nid,
+          $node->vid,
+          $node->simplenews['tid'],
+          SIMPLENEWS_STATUS_SEND_NOT,
+          $node->simplenews['s_format'],
+          $node->simplenews['priority'],
+          $node->simplenews['receipt']);
+      }
+      else {
+        // Update node
+        db_query("
+          UPDATE {simplenews_newsletters}
+          SET vid = %d,
+            tid = %d
+          WHERE nid = %d",
+          $node->vid,
+          $node->simplenews['tid'],
+          $node->nid);
+      }
+      break;
+      
     case 'delete':
       $result = db_query('
         DELETE FROM {simplenews_newsletters}
