diff --git a/includes/simplenews.admin.inc b/includes/simplenews.admin.inc
index 2d9a5fd..d4a2621 100644
--- a/includes/simplenews.admin.inc
+++ b/includes/simplenews.admin.inc
@@ -267,7 +267,7 @@ function simplenews_issue_send($nids) {
       continue;
     }
 
-    simplenews_add_node_to_spool($node);
+    module_invoke_all('simplenews_send', $node);
     $sent_nodes[$node->nid] = $node->title;
   }
 
@@ -1981,7 +1981,7 @@ function simplenews_node_tab_send_form_submit($form, &$form_state) {
   // Send newsletter to all subscribers or send test newsletter
   module_load_include('inc', 'simplenews', 'includes/simplenews.mail');
   if ($values['simplenews']['send'] == SIMPLENEWS_COMMAND_SEND_NOW) {
-    simplenews_add_node_to_spool($node);
+    module_invoke_all('simplenews_send', $node);
     // Attempt to send immediatly, if configured to do so.
     if (simplenews_mail_attempt_immediate_send(array('nid' => $node->nid))) {
       drupal_set_message(t('Newsletter %title sent.', array('%title' => $node->title)));
diff --git a/simplenews.api.php b/simplenews.api.php
index 47536b0..b017751 100644
--- a/simplenews.api.php
+++ b/simplenews.api.php
@@ -50,10 +50,15 @@
  */
 
 /**
- * @defgroup spool Mail spool
+ *  Hook is called a newsletter is sent.
  *
- * @todo
+ *  Simplenews uses this hook to add the newsletter to the outgoing mail spool
+ *  @param stdObject $node The newsletter being sent
+ *  
+ *  @return All return values are ignored
  */
+function hook_simplenews_send($node) {
+}
 
 /**
  * @defgroup source Source
diff --git a/simplenews.module b/simplenews.module
index 0afff69..12082f8 100644
--- a/simplenews.module
+++ b/simplenews.module
@@ -322,6 +322,13 @@ function simplenews_node_type_insert($info) {
 }
 
 /**
+ * Implements hook_simplenews_send
+ */
+function simplenews_simplenews_send($node) {
+  simplenews_add_node_to_spool($node);
+}
+
+/**
  * Implements hook_node_view().
  */
 function simplenews_node_view($node, $view_mode) {
@@ -481,7 +488,7 @@ function simplenews_node_update($node) {
   // Check if the newsletter is set to send on publish and needs to be send.
   if ($node->simplenews->status == SIMPLENEWS_STATUS_SEND_PUBLISH && $node->status == NODE_PUBLISHED) {
     module_load_include('inc', 'simplenews', 'includes/simplenews.mail');
-    simplenews_add_node_to_spool($node);
+    module_invoke_all('simplenews_send', $node);
   }
   else {
     // simplenews_update_sent_status() already saves the node, only need to do
diff --git a/simplenews_rules/simplenews_rules.rules.inc b/simplenews_rules/simplenews_rules.rules.inc
index 4ed2ca9..1acf135 100755
--- a/simplenews_rules/simplenews_rules.rules.inc
+++ b/simplenews_rules/simplenews_rules.rules.inc
@@ -161,7 +161,7 @@ function simplenews_rules_action_send($node) {
   $newsletter = simplenews_newsletter_load($node->nid);
   if ($newsletter && ($newsletter->status != SIMPLENEWS_STATUS_SEND_PENDING || $newsletter->status != SIMPLENEWS_STATUS_SEND_PENDING)) {
     module_load_include('inc', 'simplenews', 'includes/simplenews.mail');
-    simplenews_add_node_to_spool($node);
+    module_invoke_all('simplenews_send', $node);
   }
 }
 
diff --git a/tests/simplenews.test b/tests/simplenews.test
index ee185ea..c80fd6b 100644
--- a/tests/simplenews.test
+++ b/tests/simplenews.test
@@ -1993,7 +1993,7 @@ class SimplenewsSendTestCase extends SimplenewsTestCase {
     node_save($node);
 
     // Send the node.
-    simplenews_add_node_to_spool($node);
+    module_invoke_all('simplenews_send', $node);
 
     // Send mails.
     simplenews_mail_spool();
@@ -2022,7 +2022,7 @@ class SimplenewsSendTestCase extends SimplenewsTestCase {
     node_save($node);
 
     // Send the node.
-    simplenews_add_node_to_spool($node);
+    module_invoke_all('simplenews_send', $node);
 
     // Make sure that they have been added.
     $this->assertEqual(simplenews_count_spool(), 5);
@@ -2603,7 +2603,7 @@ class SimplenewsSourceTestCase extends SimplenewsTestCase {
     $node = node_load($matches[1]);
 
     // Add node to spool.
-    simplenews_add_node_to_spool($node);
+    module_invoke_all('simplenews_send', $node);
 
     // Unsubscribe one of the recipients to make sure that he doesn't receive
     // the mail.
@@ -2671,7 +2671,7 @@ class SimplenewsSourceTestCase extends SimplenewsTestCase {
     $node = node_load($matches[1]);
 
     // Add node to spool.
-    simplenews_add_node_to_spool($node);
+    module_invoke_all('simplenews_send', $node);
     // Send mails.
     simplenews_mail_spool();
 
@@ -2737,7 +2737,7 @@ class SimplenewsSourceTestCase extends SimplenewsTestCase {
     $node = node_load($matches[1]);
 
     // Add node to spool.
-    simplenews_add_node_to_spool($node);
+    module_invoke_all('simplenews_send', $node);
     // Send mails.
     simplenews_mail_spool();
 
@@ -2771,7 +2771,7 @@ class SimplenewsSourceTestCase extends SimplenewsTestCase {
     $node = node_load($matches[1]);
 
     // Add node to spool.
-    simplenews_add_node_to_spool($node);
+    module_invoke_all('simplenews_send', $node);
 
     $before = microtime(TRUE);
     simplenews_mail_spool();
