diff --git a/uc_product/uc_product.admin.inc b/uc_product/uc_product.admin.inc
index e64303d..fbdfcb8 100644
--- a/uc_product/uc_product.admin.inc
+++ b/uc_product/uc_product.admin.inc
@@ -621,6 +621,7 @@ function uc_product_class_form_submit($form, &$form_state) {
   }
   else {
     db_query("UPDATE {uc_product_classes} SET name = '%s', description = '%s' WHERE pcid = '%s'", $form_state['values']['name'], $form_state['values']['description'], $pcid);
+    db_query("UPDATE {node_type} SET name = '%s', description = '%s' WHERE type = '%s'", $form_state['values']['name'], $form_state['values']['description'], $pcid);
     uc_product_node_info(TRUE);
 
     module_invoke_all('product_class', $pcid, 'update');
diff --git a/uc_product/uc_product.module b/uc_product/uc_product.module
index a06fb5c..91c146b 100644
--- a/uc_product/uc_product.module
+++ b/uc_product/uc_product.module
@@ -359,6 +359,20 @@ function uc_product_node_info($reset = FALSE) {
 }
 
 /**
+ * Implementation of hook_node_type().
+ *
+ * Ensure product class names and descriptions are synchronised if the
+ * content type is updated.
+ */
+function uc_product_node_type($op, $type) {
+  switch ($op) {
+    case 'update':
+      db_query("UPDATE {uc_product_classes} SET name = '%s', description = '%s' WHERE pcid = '%s'", $type->name, $type->description, $type->type);
+      break;
+  }
+}
+
+/**
  * Implementation of hook_forms().
  *
  * Register an "add to cart" form for each product to prevent id collisions.
