diff --git a/apid.go b/apid.go
index 3086699..9ada144 100644
--- a/apid.go
+++ b/apid.go
@@ -10,7 +10,6 @@
 
 var (
 	APIDInitializedEvent    = systemEvent{"apid initialized"}
-	PluginsInitializedEvent = systemEvent{"plugins initialized"}
 	APIListeningEvent       = systemEvent{"api listening"}
 
 	pluginInitFuncs []PluginInitFunc
@@ -25,7 +24,7 @@
 	Log() LogService
 }
 
-type PluginInitFunc func(Services) error
+type PluginInitFunc func(Services) (PluginData, error)
 
 // passed Services can be a factory - makes copies and maintains returned references
 // eg. apid.Initialize(factory.DefaultServicesFactory())
@@ -51,13 +50,17 @@
 func InitializePlugins() {
 	log := Log()
 	log.Debugf("Initializing plugins...")
-	for _, p := range pluginInitFuncs {
-		err := p(services)
+	pie := PluginsInitializedEvent{
+		Description: "plugins initialized",
+	}
+	for _, pif := range pluginInitFuncs {
+		pluginData, err := pif(services)
 		if err != nil {
 			log.Panicf("Error initializing plugin: %s", err)
 		}
+		pie.Plugins = append(pie.Plugins, pluginData)
 	}
-	Events().Emit(SystemEventsSelector, PluginsInitializedEvent)
+	Events().Emit(SystemEventsSelector, pie)
 	log.Debugf("done initializing plugins")
 }
 
diff --git a/events/events_test.go b/events/events_test.go
index ab7a3bf..804d1f9 100644
--- a/events/events_test.go
+++ b/events/events_test.go
@@ -252,6 +252,41 @@
 		em.Emit("selector2", e2)
 		em.Emit("selector1", e1)
 	})
+
+	It("should publish PluginsInitialized event", func(done Done) {
+		xData := make(map[string]interface{})
+		xData["schemaVersion"] = "1.2.3"
+		p := func(s apid.Services) (pd apid.PluginData, err error) {
+			pd = apid.PluginData{
+				Name: "test plugin",
+				Version: "1.0.0",
+				ExtraData: xData,
+			}
+			return
+		}
+		apid.RegisterPlugin(p)
+
+		h := func(event apid.Event) {
+			defer GinkgoRecover()
+
+			if pie, ok := event.(apid.PluginsInitializedEvent); ok {
+
+				apid.Events().Close()
+
+				Expect(len(pie.Plugins)).Should(Equal(1))
+				p := pie.Plugins[0]
+				Expect(p.Name).To(Equal("test plugin"))
+				Expect(p.Version).To(Equal("1.0.0"))
+				Expect(p.ExtraData["schemaVersion"]).To(Equal("1.2.3"))
+
+				close(done)
+			}
+		}
+		apid.Events().ListenFunc(apid.SystemEventsSelector, h)
+
+		apid.InitializePlugins()
+	})
+
 })
 
 type test_handler struct {
diff --git a/events_service.go b/events_service.go
index 9f56f93..0e249c9 100644
--- a/events_service.go
+++ b/events_service.go
@@ -41,3 +41,14 @@
 	Event       Event
 	Count       int
 }
+
+type PluginsInitializedEvent struct {
+	Description string
+	Plugins []PluginData
+}
+
+type PluginData struct {
+	Name string
+	Version string
+	ExtraData map[string]interface{}
+}
