diff --git pm_email_notify/pm_email_notify.admin.inc pm_email_notify/pm_email_notify.admin.inc
index 0b22274..8ead8a3 100644
--- pm_email_notify/pm_email_notify.admin.inc
+++ pm_email_notify/pm_email_notify.admin.inc
@@ -26,7 +26,7 @@ function pm_email_notify_admin_settings_form() {
 
   $form['pm_email']['pm_email_notify_desc'] = array(
     '#type' => 'markup',
-    '#value' => t('Customize the email messages sent to users upon receipt of a new private message. <br />Available variables are: !author, !author_uid, !pm_subject, !pm_body, !thread, !site, !login_url, !uri, !uri_brief, !message (URL) and !settings (URL). <br />To translate these messages use the i18nstrings.module and translate them trough the <a href="!translate_url">Translate interface</a> ("Privatemsg Email Notification" text group).', array('!translate_url' => url('admin/build/translate/search'))),
+    '#value' => t('Customize the email messages sent to users upon receipt of a new private message. <br />Available variables are: !tokens. <br />To translate these messages use the i18nstrings.module and translate them trough the <a href="!translate_url">Translate interface</a> ("Privatemsg Email Notification" text group).', array('!tokens' => _pm_email_notify_token_list(), '!translate_url' => url('admin/build/translate/search'))),
     '#weight' => 1,
   );
 
diff --git pm_email_notify/pm_email_notify.api.php pm_email_notify/pm_email_notify.api.php
new file mode 100644
index 0000000..81e7c2a
--- /dev/null
+++ pm_email_notify/pm_email_notify.api.php
@@ -0,0 +1,40 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Private Messages via Email API Documentation
+ */
+
+/**
+ * Alter the private message e-mail token mapping.
+ *
+ * @param $tokens
+ *   Array of mappings from token names to values (for use with strtr()).
+ * @param $recipient
+ *   The recipient of the private message being sent.
+ * @param $message
+ *   The private message array being sent.  Must contain at
+ *   least the fields 'author', 'subject', 'thread_id' and 'body'.
+ * @param $language
+ *   The language of the private message being sent.
+ *
+ * @see _pm_email_notify_token()
+ */
+function hook_pm_email_notify_token_alter(&$tokens, $recipient, $message, $language) {
+
+}
+
+/**
+ * Alter the available list of private message e-mail tokens.
+ *
+ * @param $tokens
+ *   An array of mappings from token names to descriptions.
+ *   The token names should match those that are having their values
+ *   specificed in hook_pm_email_notify_token_alter().
+ *
+ * @see _pm_email_notify_token_list()
+ */
+function hook_pm_email_notify_token_list_alter(&$tokens) {
+
+}
\ No newline at end of file
diff --git pm_email_notify/pm_email_notify.module pm_email_notify/pm_email_notify.module
index 79f6aa3..5d81615 100644
--- pm_email_notify/pm_email_notify.module
+++ pm_email_notify/pm_email_notify.module
@@ -97,10 +97,41 @@ function _pm_email_notify_token($recipient, $message, $language) {
     '!settings' => url('user/' . $recipient->uid . '/edit', array('absolute' => TRUE, 'language' => $language)),
   );
 
+  // Allow other modules to alter the token mapping.
+  drupal_alter('pm_email_notify_token', $tokens, $recipient, $message, $language);
+
   return $tokens;
 }
 
 /**
+ * Return a list of available tokens for user e-mail messages.
+ *
+ * @return
+ *   A string containing all the available tokens.
+ */
+function _pm_email_notify_token_list() {
+  $tokens = drupal_map_assoc(array(
+    '!author_uid',
+    '!author',
+    '!pm_subject',
+    '!pm_body',
+    '!thread',
+    '!user_uid',
+    '!message',
+    '!settings',
+  ));
+
+  // Customize token descriptions.
+  $tokens['!message'] = '!message (URL)';
+  $tokens['!settings'] = '!settings (URL)';
+
+  // Allow other module to alter the token list.
+  drupal_alter('pm_email_notify_token_list', $tokens);
+
+  return implode(', ', $tokens);
+}
+
+/**
  * Return (if possible, translated) body/subject strings.
  *
  * @param $key
