diff --git a/api/utilsInterfaces_test.go b/api/utilsInterfaces_test.go
index ad97286b779237335a1e9b14f2606266d97ad3cf..566dd9a26ecc236acf54e0d61e9cbd7372d425fc 100644
--- a/api/utilsInterfaces_test.go
+++ b/api/utilsInterfaces_test.go
@@ -82,6 +82,12 @@ type testNetworkManagerGeneric struct {
 	instance *network.Instance
 	sender   *gateway.Sender
 }
+type dummyEventMgr struct{}
+
+func (d *dummyEventMgr) Report(p int, a, b, c string) {}
+func (t *testNetworkManagerGeneric) GetEventManager() interfaces.EventManager {
+	return &dummyEventMgr{}
+}
 
 /* Below methods built for interface adherence */
 func (t *testNetworkManagerGeneric) GetHealthTracker() interfaces.HealthTracker {
diff --git a/auth/callback.go b/auth/callback.go
index b713ce5abe73b1b7f0f7444b5fcf54e5cd74aa75..4a5fba05b7e74335fd71bac6685db01126ae2527 100644
--- a/auth/callback.go
+++ b/auth/callback.go
@@ -8,6 +8,7 @@
 package auth
 
 import (
+	"fmt"
 	"github.com/pkg/errors"
 	jww "github.com/spf13/jwalterweatherman"
 	"gitlab.com/elixxir/client/interfaces"
@@ -128,8 +129,11 @@ func (m *Manager) handleRequest(cmixMsg format.Message,
 		return
 	}
 
-	jww.INFO.Printf("Received AuthRequest from %s,"+
+	events := m.net.GetEventManager()
+	em := fmt.Sprintf("Received AuthRequest from %s,"+
 		" msgDigest: %s", partnerID, cmixMsg.Digest())
+	jww.INFO.Print(em)
+	events.Report(1, "Auth", "RequestReceived", em)
 
 	/*do state edge checks*/
 	// check if a relationship already exists.
@@ -137,8 +141,10 @@ func (m *Manager) handleRequest(cmixMsg format.Message,
 	// confirmation in case there are state issues.
 	// do not store
 	if _, err := m.storage.E2e().GetPartner(partnerID); err == nil {
-		jww.WARN.Printf("Received Auth request for %s, "+
+		em := fmt.Sprintf("Received Auth request for %s, "+
 			"channel already exists. Ignoring", partnerID)
+		jww.WARN.Print(em)
+		events.Report(5, "Auth", "RequestIgnored", em)
 		//exit
 		return
 	} else {
@@ -146,17 +152,21 @@ func (m *Manager) handleRequest(cmixMsg format.Message,
 		rType, sr2, _, err := m.storage.Auth().GetRequest(partnerID)
 		if err != nil && !strings.Contains(err.Error(), auth.NoRequest) {
 			// if another error is received, print it and exit
-			jww.WARN.Printf("Received new Auth request for %s, "+
+			em := fmt.Sprintf("Received new Auth request for %s, "+
 				"internal lookup produced bad result: %+v",
 				partnerID, err)
+			jww.ERROR.Print(em)
+			events.Report(10, "Auth", "RequestError", em)
 			return
 		} else {
 			//handle the events where the relationship already exists
 			switch rType {
 			// if this is a duplicate, ignore the message
 			case auth.Receive:
-				jww.WARN.Printf("Received new Auth request for %s, "+
+				em := fmt.Sprintf("Received new Auth request for %s, "+
 					"is a duplicate", partnerID)
+				jww.WARN.Print(em)
+				events.Report(5, "Auth", "DuplicateRequest", em)
 				return
 			// if we sent a request, then automatically confirm
 			// then exit, nothing else needed
@@ -167,8 +177,11 @@ func (m *Manager) handleRequest(cmixMsg format.Message,
 				// do the confirmation
 				if err := m.doConfirm(sr2, grp, partnerPubKey, m.storage.E2e().GetDHPrivateKey(),
 					sr2.GetPartnerHistoricalPubKey(), ecrFmt.GetOwnership()); err != nil {
-					jww.WARN.Printf("Auto Confirmation with %s failed: %s",
+					em := fmt.Sprintf("Auto Confirmation with %s failed: %s",
 						partnerID, err)
+					jww.WARN.Print(em)
+					events.Report(10, "Auth",
+						"RequestError", em)
 				}
 				//exit
 				return
@@ -180,8 +193,10 @@ func (m *Manager) handleRequest(cmixMsg format.Message,
 	facts, msg, err := fact.UnstringifyFactList(
 		string(requestFmt.msgPayload))
 	if err != nil {
-		jww.WARN.Printf("failed to parse facts and message "+
+		em := fmt.Sprintf("failed to parse facts and message "+
 			"from Auth Request: %s", err)
+		jww.WARN.Print(em)
+		events.Report(10, "Auth", "RequestError", em)
 		return
 	}
 
@@ -197,8 +212,10 @@ func (m *Manager) handleRequest(cmixMsg format.Message,
 	// crash occurs after the store but before the conclusion of the callback
 	//create the auth storage
 	if err = m.storage.Auth().AddReceived(c); err != nil {
-		jww.WARN.Printf("failed to store contact Auth "+
+		em := fmt.Sprintf("failed to store contact Auth "+
 			"Request: %s", err)
+		jww.WARN.Print(em)
+		events.Report(10, "Auth", "RequestError", em)
 		return
 	}
 
@@ -214,10 +231,14 @@ func (m *Manager) handleRequest(cmixMsg format.Message,
 
 func (m *Manager) handleConfirm(cmixMsg format.Message, sr *auth.SentRequest,
 	grp *cyclic.Group) {
+	events := m.net.GetEventManager()
+
 	// check if relationship already exists
 	if mgr, err := m.storage.E2e().GetPartner(sr.GetPartner()); mgr != nil || err == nil {
-		jww.WARN.Printf("Cannot confirm auth for %s, channel already "+
+		em := fmt.Sprintf("Cannot confirm auth for %s, channel already "+
 			"exists.", sr.GetPartner())
+		jww.WARN.Print(em)
+		events.Report(10, "Auth", "ConfirmError", em)
 		m.storage.Auth().Done(sr.GetPartner())
 		return
 	}
@@ -225,7 +246,9 @@ func (m *Manager) handleConfirm(cmixMsg format.Message, sr *auth.SentRequest,
 	// extract the message
 	baseFmt, partnerPubKey, err := handleBaseFormat(cmixMsg, grp)
 	if err != nil {
-		jww.WARN.Printf("Failed to handle auth confirm: %s", err)
+		em := fmt.Sprintf("Failed to handle auth confirm: %s", err)
+		jww.WARN.Print(em)
+		events.Report(10, "Auth", "ConfirmError", em)
 		m.storage.Auth().Done(sr.GetPartner())
 		return
 	}
@@ -242,16 +265,20 @@ func (m *Manager) handleConfirm(cmixMsg format.Message, sr *auth.SentRequest,
 		cmixMsg.GetMac(), grp)
 
 	if !success {
-		jww.WARN.Printf("Received auth confirmation failed its mac " +
+		em := fmt.Sprintf("Received auth confirmation failed its mac " +
 			"check")
+		jww.WARN.Print(em)
+		events.Report(10, "Auth", "ConfirmError", em)
 		m.storage.Auth().Done(sr.GetPartner())
 		return
 	}
 
 	ecrFmt, err := unmarshalEcrFormat(payload)
 	if err != nil {
-		jww.WARN.Printf("Failed to unmarshal auth confirmation's "+
+		em := fmt.Sprintf("Failed to unmarshal auth confirmation's "+
 			"encrypted payload: %s", err)
+		jww.WARN.Print(em)
+		events.Report(10, "Auth", "ConfirmError", em)
 		m.storage.Auth().Done(sr.GetPartner())
 		return
 	}
@@ -259,7 +286,9 @@ func (m *Manager) handleConfirm(cmixMsg format.Message, sr *auth.SentRequest,
 	// finalize the confirmation
 	if err := m.doConfirm(sr, grp, partnerPubKey, sr.GetMyPrivKey(),
 		sr.GetPartnerHistoricalPubKey(), ecrFmt.GetOwnership()); err != nil {
-		jww.WARN.Printf("Confirmation failed: %s", err)
+		em := fmt.Sprintf("Confirmation failed: %s", err)
+		jww.WARN.Print(em)
+		events.Report(10, "Auth", "ConfirmError", em)
 		m.storage.Auth().Done(sr.GetPartner())
 		return
 	}
diff --git a/auth/confirm.go b/auth/confirm.go
index 30a51181c97f3e8bea4993eac82555152655dc7f..f13d3871d9669b52c66924cfb7e4f17bc89b080c 100644
--- a/auth/confirm.go
+++ b/auth/confirm.go
@@ -8,6 +8,7 @@
 package auth
 
 import (
+	"fmt"
 	"github.com/pkg/errors"
 	jww "github.com/spf13/jwalterweatherman"
 	"gitlab.com/elixxir/client/interfaces"
@@ -100,13 +101,17 @@ func ConfirmRequestAuth(partner contact.Contact, rng io.Reader,
 	// the second does not or the two occur and the storage into critical
 	// messages does not occur
 
+	events := net.GetEventManager()
+
 	//create local relationship
 	p := storage.E2e().GetE2ESessionParams()
 	if err := storage.E2e().AddPartner(partner.ID, partner.DhPubKey, newPrivKey,
 		p, p); err != nil {
-		jww.WARN.Printf("Failed to create channel with partner (%s) "+
+		em := fmt.Sprintf("Failed to create channel with partner (%s) "+
 			"on confirmation, this is likley a replay: %s",
 			partner.ID, err.Error())
+		jww.WARN.Print(em)
+		events.Report(10, "Auth", "SendConfirmError", em)
 	}
 
 	// delete the in progress negotiation
@@ -131,8 +136,10 @@ func ConfirmRequestAuth(partner contact.Contact, rng io.Reader,
 		return 0, errors.WithMessage(err, "Auth Confirm Failed to transmit")
 	}
 
-	jww.INFO.Printf("Confirm Request with %s (msgDigest: %s) sent on round %d",
+	em := fmt.Sprintf("Confirm Request with %s (msgDigest: %s) sent on round %d",
 		partner.ID, cmixMsg.Digest(), round)
+	jww.INFO.Print(em)
+	events.Report(1, "Auth", "SendConfirm", em)
 
 	return round, nil
 }
diff --git a/auth/request.go b/auth/request.go
index add36835bf19025abc00c8272b6a7bdd042634e1..1be24089150fd7ef7dcce0c6ffaaffb1324bab2e 100644
--- a/auth/request.go
+++ b/auth/request.go
@@ -8,6 +8,7 @@
 package auth
 
 import (
+	"fmt"
 	"github.com/pkg/errors"
 	jww "github.com/spf13/jwalterweatherman"
 	"gitlab.com/elixxir/client/interfaces"
@@ -169,8 +170,10 @@ func RequestAuth(partner, me contact.Contact, message string, rng io.Reader,
 			cmixMsg.Digest(), err)
 	}
 
-	jww.INFO.Printf("Auth Request with %s (msgDigest: %s) sent"+
+	em := fmt.Sprintf("Auth Request with %s (msgDigest: %s) sent"+
 		" on round %d", partner.ID, cmixMsg.Digest(), round)
+	jww.INFO.Print(em)
+	net.GetEventManager().Report(1, "Auth", "RequestSent", em)
 
 	return round, nil
 }
diff --git a/groupChat/utils_test.go b/groupChat/utils_test.go
index bdf58edfa1a3e2070c2d6144411463a6740c97a0..f4b5d7e188d1dd7ae19f71be15c4ba09bd9fa260 100644
--- a/groupChat/utils_test.go
+++ b/groupChat/utils_test.go
@@ -277,6 +277,13 @@ func (tnm *testNetworkManager) SendManyCMIX(messages map[id.ID]format.Message, _
 	return 0, nil, nil
 }
 
+type dummyEventMgr struct{}
+
+func (d *dummyEventMgr) Report(p int, a, b, c string) {}
+func (t *testNetworkManager) GetEventManager() interfaces.EventManager {
+	return &dummyEventMgr{}
+}
+
 func (tnm *testNetworkManager) GetInstance() *network.Instance             { return tnm.instance }
 func (tnm *testNetworkManager) GetHealthTracker() interfaces.HealthTracker { return nil }
 func (tnm *testNetworkManager) Follow(interfaces.ClientErrorReport) (stoppable.Stoppable, error) {
diff --git a/interfaces/networkManager.go b/interfaces/networkManager.go
index c3bc9f49d6994012f0f2cbc58ed0016b62180f59..e518ae014ff57cfdd776bc39b101671dc7a95647 100644
--- a/interfaces/networkManager.go
+++ b/interfaces/networkManager.go
@@ -27,6 +27,7 @@ type NetworkManager interface {
 	SendManyCMIX(messages map[id.ID]format.Message, p params.CMIX) (id.Round, []ephemeral.Id, error)
 	GetInstance() *network.Instance
 	GetHealthTracker() HealthTracker
+	GetEventManager() EventManager
 	GetSender() *gateway.Sender
 	Follow(report ClientErrorReport) (stoppable.Stoppable, error)
 	CheckGarbledMessages()
diff --git a/keyExchange/utils_test.go b/keyExchange/utils_test.go
index cb0518466f10c4737fcc2376ce38ddfaeb318225..f1511227993c845e530233ba25757b4e12d637f0 100644
--- a/keyExchange/utils_test.go
+++ b/keyExchange/utils_test.go
@@ -93,6 +93,10 @@ func (t *testNetworkManagerGeneric) GetInstance() *network.Instance {
 
 }
 
+func (t *testNetworkManagerGeneric) GetEventManager() interfaces.EventManager {
+	return &dummyEventMgr{}
+}
+
 func (t *testNetworkManagerGeneric) RegisterWithPermissioning(string) ([]byte, error) {
 	return nil, nil
 }
@@ -153,6 +157,12 @@ func InitTestingContextGeneric(i interface{}) (*storage.Session, interfaces.Netw
 type testNetworkManagerFullExchange struct {
 	instance *network.Instance
 }
+type dummyEventMgr struct{}
+
+func (d *dummyEventMgr) Report(p int, a, b, c string) {}
+func (t *testNetworkManagerFullExchange) GetEventManager() interfaces.EventManager {
+	return &dummyEventMgr{}
+}
 
 func (t *testNetworkManagerFullExchange) GetHealthTracker() interfaces.HealthTracker {
 	return nil
diff --git a/network/ephemeral/testutil.go b/network/ephemeral/testutil.go
index 3b443dfe3a85f8c85e92dd235b190e00171df3ef..fb20cf8bdffa02a5acf6efae00e4e46ffbd6825f 100644
--- a/network/ephemeral/testutil.go
+++ b/network/ephemeral/testutil.go
@@ -70,6 +70,13 @@ func (t *testNetworkManager) GetInstance() *network.Instance {
 	return t.instance
 }
 
+type dummyEventMgr struct{}
+
+func (d *dummyEventMgr) Report(p int, a, b, c string) {}
+func (t *testNetworkManager) GetEventManager() interfaces.EventManager {
+	return &dummyEventMgr{}
+}
+
 func (t *testNetworkManager) GetHealthTracker() interfaces.HealthTracker {
 	return nil
 }
diff --git a/network/manager.go b/network/manager.go
index 55e8b4a4b52be224789abad932dfd69f8892bc55..3ebc1d1d9cd84007e01bce843cb9afd11d09e24b 100644
--- a/network/manager.go
+++ b/network/manager.go
@@ -166,6 +166,11 @@ func (m *manager) Follow(report interfaces.ClientErrorReport) (stoppable.Stoppab
 	return multi, nil
 }
 
+// GetEventManager returns the health tracker
+func (m *manager) GetEventManager() interfaces.EventManager {
+	return m.events
+}
+
 // GetHealthTracker returns the health tracker
 func (m *manager) GetHealthTracker() interfaces.HealthTracker {
 	return m.Health
diff --git a/single/manager_test.go b/single/manager_test.go
index 1a62edf8405d450a82688e05a1e7b04af3f5ef06..0746e0f7fb3038802126fcc2708b9de33d066eed 100644
--- a/single/manager_test.go
+++ b/single/manager_test.go
@@ -327,6 +327,13 @@ func (tnm *testNetworkManager) GetInstance() *network.Instance {
 	return tnm.instance
 }
 
+type dummyEventMgr struct{}
+
+func (d *dummyEventMgr) Report(p int, a, b, c string) {}
+func (t *testNetworkManager) GetEventManager() interfaces.EventManager {
+	return &dummyEventMgr{}
+}
+
 func (tnm *testNetworkManager) GetHealthTracker() interfaces.HealthTracker {
 	return nil
 }
diff --git a/ud/register.go b/ud/register.go
index 4fe9e2d675294768a9ac359489302efe31de5881..8a25bafc01d150708136945a119de470b6e64e82 100644
--- a/ud/register.go
+++ b/ud/register.go
@@ -88,7 +88,8 @@ func (m *Manager) register(username string, comm registerUserComms) error {
 		err = m.setRegistered()
 		if m.client != nil {
 			m.client.ReportEvent(1, "UserDiscovery", "Registration",
-				fmt.Sprintf("User Registered with UD: %s", user))
+				fmt.Sprintf("User Registered with UD: %+v",
+					user))
 		}
 	}