diff --git a/feedback.module b/feedback.module
index f11a970..1572020 100644
--- a/feedback.module
+++ b/feedback.module
@@ -81,6 +81,51 @@ function feedback_entity_info() {
 }
 
 /**
+ * Implements hook_entity_property_info().
+ */
+function feedback_entity_property_info() {
+  $info = array();
+  $properties = &$info['feedback']['properties'];
+
+  $properties['fid'] = array(
+    'label' => t('Feedback ID'),
+    'type' => 'integer',
+    'description' => t('The Feedback ID'),
+    'schema field' => 'fid',
+  );
+  $properties['status'] = array(
+    'label' => t("Status"),
+    'type' => 'integer',
+    'description' => t("0 for new, 1 for processed"),
+    'schema field' => 'status',
+  );
+  $properties['author'] = array(
+    'label' => t("Author"),
+    'type' => 'user',
+    'description' => t("The author of the feedback."),
+    'setter callback' => 'entity_property_verbatim_set',
+    'required' => TRUE,
+    'schema field' => 'uid',
+  );
+  $properties['message'] = array(
+    'label' => t("Title"),
+    'description' => t("The feedback message."),
+    'setter callback' => 'entity_property_verbatim_set',
+    'schema field' => 'message',
+    'required' => TRUE,
+  );
+  $properties['timestamp'] = array(
+    'label' => t("Date created"),
+    'type' => 'date',
+    'schema field' => 'timestamp',
+    'description' => t("The date the feedback was created."),
+  );
+
+  return $info;
+}
+
+
+/**
  * Implements hook_field_extra_fields().
  */
 function feedback_field_extra_fields() {
@@ -602,3 +647,23 @@ function feedback_views_api() {
     'path' => drupal_get_path('module', 'feedback') . '/views',
   );
 }
+
+/**
+ * Implements hook_feedback_insert().
+ */
+function feedback_feedback_insert($entry) {
+  // Trigger rule if Rules is enabled
+  if (module_exists('rules')) {
+    rules_invoke_event('feedback_insert', $entry);
+  }
+}
+
+/**
+ * Implements hook_feedback_update().
+ */
+function feedback_feedback_update($entry) {
+  // Trigger rule if Rules is enabled
+  if (module_exists('rules')) {
+    rules_invoke_event('feedback_update', $entry);
+  }
+}
diff --git a/feedback.rules.inc b/feedback.rules.inc
new file mode 100644
index 0000000..829a84b
--- /dev/null
+++ b/feedback.rules.inc
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * @file
+ * Rules integration for feedback.
+ *
+ * @addtogroup rules
+ * @{
+ */
+
+/**
+ * Implements hook_rules_event_info().
+ */
+function feedback_rules_event_info() {
+  $defaults = array(
+    'group' => t('Feedback'),
+    'module' => 'feedback',
+    'access callback' => 'feedback_rules_integration_access',
+  );
+  return array(
+    'feedback_insert' => $defaults + array(
+      'label' => t('After saving new feedback'),
+      'variables' => array(
+        'feedback' => array('type' => 'feedback', 'label' => t('Feedback message')),
+      ),
+    ),
+    'feedback_update' => $defaults + array(
+      'label' => t('After saving existing feedback'),
+      'variables' => array(
+        'feedback' => array(
+          'type' => 'feedback',
+          'label' => t('Feedback message'),
+        ),
+        'feedback_unchanged' => array(
+          'type' => 'feedback',
+          'label' => t('unchanged feedback entity'),
+          'handler' => 'rules_events_entity_unchanged',
+        ),
+      ),
+    ),
+  );
+}
+
+/**
+ * Rules integration access callback.
+ */
+function feedback_rules_integration_access($type, $name) {
+  if ($type == 'event' || $type == 'condition') {
+    return entity_access('view', 'feedback');
+  }
+}
+
+/**
+ * @}
+ */
