diff --git a/single/receiveResponse.go b/single/receiveResponse.go
index 6a6fa94fddbc10f71a6e311fea944a71ea8f35eb..831b25b358196ddc4806991610b51a0548ab56eb 100644
--- a/single/receiveResponse.go
+++ b/single/receiveResponse.go
@@ -8,6 +8,7 @@
 package single
 
 import (
+	"fmt"
 	"github.com/pkg/errors"
 	jww "github.com/spf13/jwalterweatherman"
 	"gitlab.com/elixxir/client/interfaces/message"
@@ -37,8 +38,13 @@ func (m *Manager) receiveResponseHandler(rawMessages chan message.Receive,
 			// Process CMIX message
 			err := m.processesResponse(msg.RecipientID, msg.EphemeralID, msg.Payload)
 			if err != nil {
-				jww.WARN.Printf("Failed to read single-use CMIX message "+
-					"response: %+v", err)
+				em := fmt.Sprintf("Failed to read single-use "+
+					"CMIX message response: %+v", err)
+				jww.WARN.Print(em)
+				if m.client != nil {
+					m.client.ReportEvent(9, "SingleUse",
+						"Error", em)
+				}
 			}
 		}
 	}
@@ -89,6 +95,11 @@ func (m *Manager) processesResponse(rid *id.ID, ephID ephemeral.Id,
 
 	// Once all message parts have been received delete and close everything
 	if collated {
+		if m.client != nil {
+			m.client.ReportEvent(1, "SingleUse", "MessageReceived",
+				fmt.Sprintf("Single use response received "+
+					"from %s", rid))
+		}
 		jww.DEBUG.Print("Received all parts of single-use response message.")
 		// Exit the timeout handler
 		state.quitChan <- struct{}{}
diff --git a/single/transmission.go b/single/transmission.go
index a6ceed465f53aeca901521d02499a823c9312d8e..25cd73276fb76eb2226ce7f44d1140cc0b9134b7 100644
--- a/single/transmission.go
+++ b/single/transmission.go
@@ -113,7 +113,8 @@ func (m *Manager) transmitSingleUse(partner contact2.Contact, payload []byte,
 
 	go func() {
 		// Send Message
-		jww.DEBUG.Printf("Sending single-use transmission CMIX message to %s.", partner.ID)
+		jww.DEBUG.Printf("Sending single-use transmission CMIX "+
+			"message to %s.", partner.ID)
 		round, _, err := m.net.SendCMIX(cmixMsg, partner.ID, params.GetDefaultCMIX())
 		if err != nil {
 			errorString := fmt.Sprintf("failed to send single-use transmission "+
@@ -144,8 +145,13 @@ func (m *Manager) transmitSingleUse(partner contact2.Contact, payload []byte,
 		roundEvents.AddRoundEventChan(round, sendResults, roundEventTimeout,
 			states.COMPLETED, states.FAILED)
 
-		jww.DEBUG.Printf("Sent single-use transmission CMIX message to %s and "+
-			"ephemeral ID %d on round %d.", partner.ID, ephID.Int64(), round)
+		im := fmt.Sprintf("Sent single-use transmission CMIX "+
+			"message to %s and ephemeral ID %d on round %d.",
+			partner.ID, ephID.Int64(), round)
+		jww.DEBUG.Print(im)
+		if m.client != nil {
+			m.client.ReportEvent(1, "SingleUse", "MessageSend", im)
+		}
 
 		// Wait until the result tracking responds
 		success, numRoundFail, numTimeOut := utility.TrackResults(sendResults, 1)
diff --git a/ud/register.go b/ud/register.go
index b46f99a09fd6e686c2293b35a54147d7292d58cb..4fe9e2d675294768a9ac359489302efe31de5881 100644
--- a/ud/register.go
+++ b/ud/register.go
@@ -1,6 +1,7 @@
 package ud
 
 import (
+	"fmt"
 	"github.com/pkg/errors"
 	jww "github.com/spf13/jwalterweatherman"
 	pb "gitlab.com/elixxir/comms/mixmessages"
@@ -85,6 +86,10 @@ func (m *Manager) register(username string, comm registerUserComms) error {
 
 	if err == nil {
 		err = m.setRegistered()
+		if m.client != nil {
+			m.client.ReportEvent(1, "UserDiscovery", "Registration",
+				fmt.Sprintf("User Registered with UD: %s", user))
+		}
 	}
 
 	return err
diff --git a/ud/search.go b/ud/search.go
index 86a19551b5af2c7bc95c0736845263e91d17da0e..41001234896bba755fd6f032afdb19df8a23b22b 100644
--- a/ud/search.go
+++ b/ud/search.go
@@ -1,6 +1,7 @@
 package ud
 
 import (
+	"fmt"
 	"github.com/golang/protobuf/proto"
 	"github.com/pkg/errors"
 	jww "github.com/spf13/jwalterweatherman"
@@ -50,11 +51,17 @@ func (m *Manager) Search(list fact.FactList, callback searchCallback, timeout ti
 		return errors.WithMessage(err, "Failed to transmit search request.")
 	}
 
+	if m.client != nil {
+		m.client.ReportEvent(1, "UserDiscovery", "SearchRequest",
+			fmt.Sprintf("Sent: %+v", request))
+	}
+
 	return nil
 }
 
 func (m *Manager) searchResponseHandler(factMap map[string]fact.Fact,
 	callback searchCallback, payload []byte, err error) {
+
 	if err != nil {
 		go callback(nil, errors.WithMessage(err, "Failed to search."))
 		return
@@ -66,6 +73,12 @@ func (m *Manager) searchResponseHandler(factMap map[string]fact.Fact,
 		jww.WARN.Printf("Dropped a search response from user discovery due to "+
 			"failed unmarshal: %s", err)
 	}
+
+	if m.client != nil {
+		m.client.ReportEvent(1, "UserDiscovery", "SearchResponse",
+			fmt.Sprintf("Received: %+v", searchResponse))
+	}
+
 	if searchResponse.Error != "" {
 		err = errors.Errorf("User Discovery returned an error on search: %s",
 			searchResponse.Error)