diff --git a/uc_order/src/Event/OrderCommentAdded.php b/uc_order/src/Event/OrderCommentAdded.php
new file mode 100644
index 0000000..9d14cfa
--- /dev/null
+++ b/uc_order/src/Event/OrderCommentAdded.php
@@ -0,0 +1,32 @@
+<?php
+
+namespace Drupal\uc_order\Event;
+
+use Drupal\uc_order\OrderInterface;
+use Symfony\Component\EventDispatcher\Event;
+
+/**
+ * Event that is fired when an order comment is added.
+ */
+class OrderCommentAdded extends Event {
+
+  const EVENT_NAME = 'uc_order_comment_added';
+
+  /**
+   * The order.
+   *
+   * @var \Drupal\uc_order\OrderInterface
+   */
+  public $order;
+
+  /**
+   * Constructs the object.
+   *
+   * @param \Drupal\uc_order\OrderInterface $order
+   *   The order object.
+   */
+  public function __construct(OrderInterface $order) {
+    $this->order = $order;
+  }
+
+}
diff --git a/uc_order/tests/src/Unit/Integration/Event/OrderCommentAddedTest.php b/uc_order/tests/src/Unit/Integration/Event/OrderCommentAddedTest.php
new file mode 100644
index 0000000..865d265
--- /dev/null
+++ b/uc_order/tests/src/Unit/Integration/Event/OrderCommentAddedTest.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace Drupal\Tests\uc_order\Unit\Integration\Event;
+
+/**
+ * Checks that the event "uc_order_comment_added" is correctly defined.
+ *
+ * @coversDefaultClass \Drupal\uc_order\Event\OrderCommentAdded
+ *
+ * @group ubercart
+ *
+ * @requires module rules
+ */
+class OrderCommentAddedTest extends OrderEventTestBase {
+
+  /**
+   * Tests the event metadata.
+   */
+  public function testOrderCommentAdded() {
+    // Verify our event is discoverable.
+    $event = $this->eventManager->createInstance('uc_order_comment_added');
+
+    $order_context_definition = $event->getContextDefinition('order');
+    $this->assertSame('entity:uc_order', $order_context_definition->getDataType());
+    $this->assertSame('Order', $order_context_definition->getLabel());
+  }
+
+}
diff --git a/uc_order/uc_order.module b/uc_order/uc_order.module
index a4379c6..554c9ab 100644
--- a/uc_order/uc_order.module
+++ b/uc_order/uc_order.module
@@ -22,6 +22,7 @@ use Drupal\Core\Url;
 use Drupal\user\UserInterface;
 use Drupal\uc_order\Entity\Order;
 use Drupal\uc_order\OrderInterface;
+use Drupal\uc_order\Event\OrderCommentAdded;
 use Drupal\node\Entity\Node;
 
 require_once dirname(__FILE__) . '/uc_order.line_item.inc';
@@ -274,6 +275,10 @@ function uc_order_comments_load($order_id, $admin = FALSE) {
  * Inserts a comment, $type being either 'order' or 'admin'.
  */
 function uc_order_comment_save($order_id, $uid, $message, $type = 'admin', $status = 'pending', $notify = FALSE) {
+  $order = Order::load($order_id);
+  $event = new OrderCommentAdded($order);
+  \Drupal::service('event_dispatcher')->dispatch($event::EVENT_NAME, $event);
+
   if ($type == 'admin') {
     db_insert('uc_order_admin_comments')
       ->fields(array(
diff --git a/uc_order/uc_order.rules.events.yml b/uc_order/uc_order.rules.events.yml
index aeddc58..159e643 100644
--- a/uc_order/uc_order.rules.events.yml
+++ b/uc_order/uc_order.rules.events.yml
@@ -24,3 +24,11 @@ uc_order_delete:
     order:
       type: 'entity:uc_order'
       label: 'Order'
+
+uc_order_comment_added:
+  label: 'An order comment is added'
+  category: 'Order'
+  context:
+    order:
+      type: 'entity:uc_order'
+      label: 'Order'
