diff --git a/webform.module b/webform.module
index 715b960..ae3777d 100644
--- a/webform.module
+++ b/webform.module
@@ -3250,7 +3250,13 @@ function webform_component_invoke($type, $callback) {
   $function = '_webform_' . $callback . '_' . $type;
   webform_component_include($type);
   if (function_exists($function)) {
-    return call_user_func_array($function, $args);
+    $data = call_user_func_array($function, $args);
+    // add hook_webform_render_component_alter() and hook_webform_theme_component_alter()
+    $op = array('render', 'theme');
+    if (in_array($callback, $op)) {
+      call_user_func_array('drupal_alter', array('webform_' . $callback . '_component', &$data, &$type, &$args));
+    }
+    return $data;
   }
 }
 
diff --git a/webform_hooks.php b/webform_hooks.php
index 855d03e..9310715 100644
--- a/webform_hooks.php
+++ b/webform_hooks.php
@@ -349,6 +349,38 @@ function hook_webform_component_info_alter(&$components) {
 }
 
 /**
+ * Perform alterations before a Webform component is rendered.
+ *
+ * Use this hook when you want to remove or alter elements at Webform component level.
+ *
+ * @param $data
+ *   A Webform component render array.
+ * @param $type
+ *   A Webform component type
+ * @param $args
+ *   An array with component, value and filter data.
+ *   @see _webform_render_component()
+ */
+function hook_webform_render_component_alter(&$data, $type, $args) {
+  list($component, $value, $format) = $args;
+  // add an example
+}
+
+/**
+ * Perform alterations before each Webform component register a theme implementations.
+ *
+ * Use this hook when you want to remove or alter Webform component theme implementation
+ *
+ * @param $data
+ *   An array of Webform component theme implementations
+ * @param $type
+ *   A Webform component type
+ */
+function hook_webform_theme_component_alter(&$data, $type) {
+  // add an example
+}
+
+/**
  * @}
  */
 
