diff --git a/regcode.api.php b/regcode.api.php
index 0c3dde4..11d5354 100644
--- a/regcode.api.php
+++ b/regcode.api.php
@@ -48,3 +48,15 @@ function hook_regcode_fields() {
     ),
   );
 }
+
+
+/**
+ * Called when a new registration code is created
+ */
+function hook_regcode_save(&$code, &$terms = array()) {
+    $the_terms = implode(', ', $terms);
+    drupal_set_message(t('The code: \'%code\' was created with the terms: \'%terms!\'', array(
+        '%code' => $code, 
+        '%terms' => $terms
+        )));
+}
diff --git a/regcode.module b/regcode.module
index 7f979d8..40d869b 100644
--- a/regcode.module
+++ b/regcode.module
@@ -462,6 +462,7 @@ function regcode_use($regcode, $account_id = FALSE) {
 
 /**
  * Save given code array to a record in the db
+ * Calls the regcode_save hook
  *
  * @todo Remove the $terms parameter and put it in the object
  * @param $code object A code object (required fields are code,
@@ -474,6 +475,12 @@ function regcode_save($code, $terms = array(), $action = REGCODE_MODE_REPLACE) {
   if (empty($code) || empty($code->code)) {
     return FALSE;
   }
+  
+  // Trigger the regcode_save hook
+  foreach (module_implements('regcode_save') as $module) {
+    $hook = $module . '_regcode_used';
+    $hook($code, $terms);
+  }
 
   // Insert mode
   if ($action == REGCODE_MODE_REPLACE) {
