diff --git a/uc_cart.module b/uc_cart.module
index d51b037..543a0b2 100644
--- a/uc_cart.module
+++ b/uc_cart.module
@@ -1472,6 +1472,7 @@ function uc_cart_get_item($cart_item_id) {
 function uc_cart_update_item($item) {
   db_query("UPDATE {uc_cart_products} SET qty = %d, changed = UNIX_TIMESTAMP(), data = '%s' WHERE cart_item_id = %d",
     $item->qty, serialize($item->data), $item->cart_item_id);
+  module_invoke_all('uc_cart_modified', 'update', $item->cart_item_id, $item->qty, $item->data);
 }
 
 /**
@@ -1538,6 +1539,7 @@ function uc_cart_add_item($nid, $qty = 1, $data = NULL, $cid = NULL, $msg = TRUE
     if ($msg) {
       drupal_set_message(t('<strong>@product-title</strong> added to <a href="!url">your shopping cart</a>.', array('@product-title' => $node->title, '!url' => url('cart'))));
     }
+    module_invoke_all('uc_cart_modified', 'insert', db_last_insert_id('uc_cart_products', 'cart_item_id'), $qty, $data);
   }
   else {
     // Update the item instead.
@@ -1599,8 +1601,9 @@ function uc_cart_remove_item($nid, $cid = NULL, $data = array(), $op = 'remove')
       }
     }
   }
-
+  $row = db_fetch_object(db_query("SELECT cart_item_id FROM {uc_cart_products} WHERE cart_id = '%s' AND nid = %d AND data = '%s'", $cart_id, $nid, serialize($data)));
   db_query("DELETE FROM {uc_cart_products} WHERE cart_id = '%s' AND nid = %d AND data = '%s'", $cart_id, $nid, serialize($data));
+  module_invoke_all('uc_cart_modified', 'delete', $row->cart_item_id, 0, $data);  
 }
 
 /**
