diff --git a/bindings/ud.go b/bindings/ud.go
index c791d0e0b74d03ecae3dc5f067f22d3e53e437ed..5c20b78fd047aac309f29a080d3b1b243237ef8d 100644
--- a/bindings/ud.go
+++ b/bindings/ud.go
@@ -9,6 +9,7 @@ package bindings
 
 import (
 	"fmt"
+	jww "github.com/spf13/jwalterweatherman"
 	"time"
 
 	"github.com/pkg/errors"
@@ -62,22 +63,35 @@ func NewUserDiscoveryFromBackup(client *Client,
 	if err != nil {
 		return nil, errors.WithMessage(err, "Failed to create User Discovery Manager")
 	}
+
+	// Parse username as a fact, which should not be empty
 	userFact, err := fact.NewFact(fact.Username, username)
 	if err != nil {
 		return nil, errors.WithMessagef(err, "Failed to parse "+
 			"stringified username fact %q", username)
 	}
 
-	emailFact, err := fact.NewFact(fact.Email, email)
-	if err != nil {
-		return nil, errors.WithMessagef(err, "Failed to parse "+
-			"stringified email fact %q", email)
+	var emailFact, phoneFact fact.Fact
+	// Parse email as a fact, if it exists
+	if email != "" {
+		emailFact, err = fact.NewFact(fact.Email, email)
+		if err != nil {
+			return nil, errors.WithMessagef(err, "Failed to parse "+
+				"stringified email fact %q", email)
+		}
+	} else {
+		jww.WARN.Printf("Loading manager without a registered email")
 	}
 
-	phoneFact, err := fact.NewFact(fact.Phone, phone)
-	if err != nil {
-		return nil, errors.WithMessagef(err, "Failed to parse "+
-			"stringified phone fact %q", phone)
+	// Parse phone number as a fact, if it exists
+	if phone != "" {
+		phoneFact, err = fact.NewFact(fact.Phone, phone)
+		if err != nil {
+			return nil, errors.WithMessagef(err, "Failed to parse "+
+				"stringified phone fact %q", phone)
+		}
+	} else {
+		jww.WARN.Printf("Loading manager without a registered phone number")
 	}
 
 	m, err := ud.NewManagerFromBackup(&client.api, single, fact.FactList{userFact, emailFact, phoneFact})
diff --git a/storage/ud/facts.go b/storage/ud/facts.go
index 7f099fac4947b989a723da41d4fb431ef5c4822f..460d1dbb3a6e4120e8ca0ef3fb08f15a380af9dc 100644
--- a/storage/ud/facts.go
+++ b/storage/ud/facts.go
@@ -62,7 +62,9 @@ func (s *Store) RestoreFromBackUp(backupData fact.FactList) error {
 	}
 
 	for _, f := range backupData {
-		s.confirmedFacts[f] = struct{}{}
+		if !isFactZero(f) {
+			s.confirmedFacts[f] = struct{}{}
+		}
 	}
 
 	return s.save()