diff --git a/subscriptions.admin.inc b/subscriptions.admin.inc
index f13aefd..9da0a88 100644
--- a/subscriptions.admin.inc
+++ b/subscriptions.admin.inc
@@ -796,6 +796,9 @@ function subscriptions_add_form(&$form_state, $stype, $sid, $author_uid = NULL)
  */
 function subscriptions_add_form_submit($form, &$form_state) {
   if ($a = module_invoke_all('subscriptions', 'stype', $form_state['values']['stype'], $form_state['values']['sid'], (isset($form_state['values']['author_uid']) ? $form_state['values']['author_uid'] : -1))) {
+    // Allow other modules to alter the data.
+    drupal_alter('subscriptions_stype', $a);
+
     list($module, $field, $value, $author_uid) = $a;
     $uid = $form_state['values']['uid'];
     subscriptions_write_subscription($module, $field, $value, $author_uid, $uid, $form_state['values']['send_interval'], $form_state['values']['updates'], $form_state['values']['comments']);
@@ -829,6 +832,9 @@ function subscriptions_del_form(&$form_state, $stype, $sid, $author_uid = NULL)
   global $user;
 
   if ($a = module_invoke_all('subscriptions', 'stype', $stype, $sid, (isset($author_uid) ? $author_uid : -1))) {
+    // Allow other modules to alter the data.
+    drupal_alter('subscriptions_stype', $a);
+
     list($module, $field, $value, $author_uid) = $a;
     return subscriptions_delete_form($form_state, $module, $field, $value, $author_uid, $user->uid);
   }
diff --git a/subscriptions.module b/subscriptions.module
index c886fda..44c8f88 100644
--- a/subscriptions.module
+++ b/subscriptions.module
@@ -471,6 +471,9 @@ function subscriptions_types($field = NULL, $type = NULL) {
 
   if (!isset($types)) {
     $types = module_invoke_all('subscriptions', 'types');
+    // Allow other modules to alter the data.
+    drupal_alter('subscriptions_types', $types);
+
     foreach ($types as $stype => $data) {
       if (!_subscriptions_validate_hook_result($stype, $data)) {
         continue;
diff --git a/subscriptions_mail.cron.inc b/subscriptions_mail.cron.inc
index 8503c53..a6e4d12 100644
--- a/subscriptions_mail.cron.inc
+++ b/subscriptions_mail.cron.inc
@@ -84,6 +84,9 @@ function _subscriptions_mail_cron() {
           }
           if (!empty($object)) {
             $access = module_invoke_all('subscriptions', 'access', $load_function, $load_args, $object);
+            // Allow other modules to alter the data.
+            drupal_alter('subscriptions_access', $access);
+
             // One FALSE vote is enough to deny. Also, we need a non-empty array.
             $allow = !empty($access) && array_search(FALSE, $access) === FALSE;
             $loaded_objects[$user->uid][$load_function][$index] = $allow ? $object : FALSE;
