diff --git a/events.hpp b/events.hpp
index e197719..6737861 100644
--- a/events.hpp
+++ b/events.hpp
@@ -33,6 +33,7 @@
     enum class Type
     {
         DBUS_SIGNAL,
+        STARTUP,
     };
 
     virtual ~Event() = default;
@@ -47,7 +48,7 @@
      *  @param[in] t - The event type.
      */
     explicit Event(
-        const std::vector<FilterBasePtr>& filters, Type t) :
+        const std::vector<FilterBasePtr>& filters, Type t = Type::STARTUP) :
         std::vector<FilterBasePtr>(filters),
         type(t) {}
 
@@ -55,6 +56,8 @@
     Type type;
 };
 
+using StartupEvent = Event;
+
 using EventBasePtr = std::shared_ptr<Event>;
 
 /** @struct DbusSignal
diff --git a/example/events.d/match1.yaml b/example/events.d/match1.yaml
index 0d53657..9dca187 100644
--- a/example/events.d/match1.yaml
+++ b/example/events.d/match1.yaml
@@ -74,4 +74,17 @@
                     value: 888
                     type: int64
 
+    - name: startup event example
+      description: >
+          Create /createme3 at startup.
+      type: startup
+      actions:
+          - name: createObjects
+            objs:
+              /createme3:
+                xyz.openbmc_project.Example.Iface1:
+                  ExampleProperty1:
+                    value: foo
+                    type: string
+
 # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
diff --git a/manager.cpp b/manager.cpp
index 1ebcb7f..8026bf0 100644
--- a/manager.cpp
+++ b/manager.cpp
@@ -114,6 +114,22 @@
 
 void Manager::run() noexcept
 {
+    sdbusplus::message::message unusedMsg{nullptr};
+
+    // Run startup events.
+    for (auto& group : _events)
+    {
+        for (auto pEvent : std::get<std::vector<details::EventBasePtr>>(
+                 group))
+        {
+            if (pEvent->type ==
+                details::Event::Type::STARTUP)
+            {
+                handleEvent(unusedMsg, *pEvent, group);
+            }
+        }
+    }
+
     while (!_shutdown)
     {
         try
diff --git a/test/test.cpp b/test/test.cpp
index 816d471..3f39fa9 100644
--- a/test/test.cpp
+++ b/test/test.cpp
@@ -209,6 +209,24 @@
         },
     };
 
+    // Validate startup events occurred.
+    {
+        sdbusplus::message::object_path relCreateMe3{"/createme3"};
+        std::string createMe3{root + relCreateMe3.str};
+
+        auto get = b.new_method_call(
+                       MGR_SERVICE,
+                       createMe3.c_str(),
+                       "org.freedesktop.DBus.Properties",
+                       "GetAll");
+        get.append("xyz.openbmc_project.Example.Iface1");
+        auto resp = b.call(get);
+
+        Object::mapped_type properties;
+        assert(!resp.is_method_error());
+        resp.read(properties);
+    }
+
     // Make sure the notify method works.
     {
         sdbusplus::message::object_path relPath{"/foo"};
