diff --git a/src/emailnotification/main.go b/src/emailnotification/main.go
index 2dbadfe5388aafc762a4b14f76c9376a7dbe4be0..20b5a1718a43315a189248b40627189cc9508410 100644
--- a/src/emailnotification/main.go
+++ b/src/emailnotification/main.go
@@ -16,7 +16,7 @@ func main() {
 	if err != nil {
 		log.Fatalf("unable to connect to nats", err)
 	}
-	nc.Subscribe("confirmOrder", func(m *nats.Msg) {
+	nc.Subscribe("confirmOrder.*", func(m *nats.Msg) {
 		var (
 			req model.EmialContent
 			res model.Response
@@ -25,9 +25,13 @@ func main() {
 			panic(err)
 		}
 
-		// hier email verschicken auslösen, wenn kein error --> dann response tru verschicken
-
-		res.Send = true
+		emailadre, emailcontent, emailtype := service.CreateEmail(req, "confirm")
+		err := service.SendEmail(emailadre, emailcontent, emailtype)
+		if err != nil {
+			res.Send = false
+		} else {
+			res.Send = true
+		}
 		e, errMarshal := json.Marshal(res)
 		if errMarshal != nil {
 			fmt.Println(errMarshal)
@@ -36,7 +40,7 @@ func main() {
 		nc.Publish(m.Reply, []byte(e))
 	})
 
-	nc.Subscribe("confirmCancel", func(m *nats.Msg) {
+	nc.Subscribe("confirmCancel.*", func(m *nats.Msg) {
 		var (
 			req model.EmialContent
 			res model.Response
@@ -44,7 +48,12 @@ func main() {
 		if err := json.Unmarshal(m.Data, &req); err != nil {
 			panic(err)
 		}
-		res.Send = true
+		emailadre, emailcontent, emailtype := service.CreateEmail(req, "cancel")
+		if err := service.SendEmail(emailadre, emailcontent, emailtype); err != nil {
+			res.Send = false
+		} else {
+			res.Send = true
+		}
 		e, errMarshal := json.Marshal(res)
 		if errMarshal != nil {
 			fmt.Println(errMarshal)
diff --git a/src/emailnotification/model/emailContent.go b/src/emailnotification/model/emailContent.go
index 7c854114d7c9fb008c18882606cdb25da1e79b62..5a7867cd142ec0802e44c25d342aed04a441285c 100644
--- a/src/emailnotification/model/emailContent.go
+++ b/src/emailnotification/model/emailContent.go
@@ -1,6 +1,7 @@
 package model
 
 type EmialContent struct {
+	OrderID     string `json:"orderid"`
 	Name        string `json:"name"`
 	AwayMatch   bool   `json:"awaymatch"`
 	Location    string `json:"location"`
diff --git a/src/emailnotification/service/email.go b/src/emailnotification/service/email.go
index f4276c382691b3628620654af463e2c1ecf759a3..9572f56715db3b1ceb1906807be14a10acd1131f 100644
--- a/src/emailnotification/service/email.go
+++ b/src/emailnotification/service/email.go
@@ -13,19 +13,20 @@ import (
 )
 
 func CreateEmail(emailContenct model.EmialContent, subject string) (string, string, string) {
-	if subject == "confirmOrder" {
-		return emailContenct.Emailadress, fmt.Sprintf("Hallo Herr/Frau, %s\r\nHiermit bestaetigen wird deine Bestellung fuer das VFB Spiel in %s, am %s", emailContenct.Name, emailContenct.Location, emailContenct.Date), "Confirm Cancelation"
+	if subject == "confirm" {
+		return emailContenct.Emailadress, fmt.Sprintf("Hallo Herr/Frau, %s\r\nHiermit bestaetigen wird deine Bestellung fuer das VFB Spiel in %s, am %s", emailContenct.Name, emailContenct.Location, emailContenct.Date), "Confirm Order"
 	}
-	if subject == "confirmCancelation" {
-		return emailContenct.Emailadress, fmt.Sprintf("Hallo Herr/Frau, %s\r\nHiermit bestaetigen wird die Stornierung deiner Bestellung fuer das VFB Spiel in %s, am %s", emailContenct.Name, emailContenct.Location, emailContenct.Date), "Confirm Order"
+	if subject == "cancel" {
+		return emailContenct.Emailadress, fmt.Sprintf("Hallo Herr/Frau, %s\r\nHiermit bestaetigen wird die Stornierung deiner Bestellung fuer das VFB Spiel in %s, am %s", emailContenct.Name, emailContenct.Location, emailContenct.Date), "Confirm Cancelation"
 	}
 	return "", "", ""
 }
-func SendEmail(receiver string, body string, subject string) {
+func SendEmail(receiver string, body string, subject string) error {
 	err := godotenv.Load(".env")
 
 	if err != nil {
 		log.Fatalf("Error loading .env file")
+		return fmt.Errorf("Error loading .env file")
 	}
 
 	from := mail.Address{
@@ -33,9 +34,8 @@ func SendEmail(receiver string, body string, subject string) {
 		Address: os.Getenv("EMAIL_ADRESS"),
 	}
 
-	fmt.Println(from)
-	// das von oben nehmen
-	toList := []string{"yannick.ege@web.de"}
+	toList := []string{}
+	toList = append(toList, receiver)
 
 	header := make(map[string]string)
 	header["From"] = from.String()
@@ -56,9 +56,7 @@ func SendEmail(receiver string, body string, subject string) {
 
 	err1 := smtp.SendMail(smtpServer+":"+smtpPort, auth, from.Address, toList, []byte(message))
 	if err1 != nil {
-		fmt.Println(err1)
-		os.Exit(1)
+		return err1
 	}
-
-	fmt.Println("E-Mail erfolgreich gesendet.")
+	return nil
 }
diff --git a/src/highlanderticketing/config/oauthconf.go b/src/highlanderticketing/config/oauthconf.go
index 65bce4c567c17425589f044270b18aaa3ada1f21..b1013e8758eb63bd5d482df1ee146d3c4bfec4e0 100644
--- a/src/highlanderticketing/config/oauthconf.go
+++ b/src/highlanderticketing/config/oauthconf.go
@@ -5,11 +5,25 @@ import (
 	"golang.org/x/oauth2/google"
 )
 
-func GetOAuthConfig() *oauth2.Config {
+// in env varialben packen
+func GetOAuthConfigLogin() *oauth2.Config {
 	return &oauth2.Config{
 		ClientID:     "20993146996-uvmr7479e3qmhiu9gasko3lr163ll76j.apps.googleusercontent.com",
 		ClientSecret: "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",
-		RedirectURL:  "http://localhost:8000/callback",
+		RedirectURL:  "http://localhost:8000/callback/login",
+		Scopes: []string{
+			"https://www.googleapis.com/auth/userinfo.email",
+			"https://www.googleapis.com/auth/userinfo.profile",
+		},
+		Endpoint: google.Endpoint,
+	}
+}
+
+func GetOAuthConfigRegister() *oauth2.Config {
+	return &oauth2.Config{
+		ClientID:     "20993146996-uvmr7479e3qmhiu9gasko3lr163ll76j.apps.googleusercontent.com",
+		ClientSecret: "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",
+		RedirectURL:  "http://localhost:8000/callback/register",
 		Scopes: []string{
 			"https://www.googleapis.com/auth/userinfo.email",
 			"https://www.googleapis.com/auth/userinfo.profile",
diff --git a/src/highlanderticketing/handler/oauth.go b/src/highlanderticketing/handler/oauth.go
index 4865490eafa1286292fd50bb9a9cae9ee88760c5..90fd848b3d5acd0756cf6eed3d470437755b413a 100644
--- a/src/highlanderticketing/handler/oauth.go
+++ b/src/highlanderticketing/handler/oauth.go
@@ -13,13 +13,18 @@ import (
 )
 
 func HandleLogin(w http.ResponseWriter, r *http.Request) {
-	oauthConfig := config.GetOAuthConfig()
+	oauthConfig := config.GetOAuthConfigLogin()
 	url := oauthConfig.AuthCodeURL("state", oauth2.AccessTypeOffline)
 	http.Redirect(w, r, url, http.StatusTemporaryRedirect)
 }
 
-func HandleCallback(w http.ResponseWriter, r *http.Request) {
-	oauthConfig := config.GetOAuthConfig()
+func HandleRegister(w http.ResponseWriter, r *http.Request) {
+	oauthConfig := config.GetOAuthConfigRegister()
+	url := oauthConfig.AuthCodeURL("state", oauth2.AccessTypeOffline)
+	http.Redirect(w, r, url, http.StatusTemporaryRedirect)
+}
+func HandleCallbackRegister(w http.ResponseWriter, r *http.Request) {
+	oauthConfig := config.GetOAuthConfigRegister()
 	code := r.URL.Query().Get("code")
 	token, err := oauthConfig.Exchange(context.Background(), code)
 	if err != nil {
@@ -28,6 +33,17 @@ func HandleCallback(w http.ResponseWriter, r *http.Request) {
 		return
 	}
 	service.Register(token.AccessToken)
+}
+
+func HandleCallback(w http.ResponseWriter, r *http.Request) {
+	oauthConfig := config.GetOAuthConfigLogin()
+	code := r.URL.Query().Get("code")
+	token, err := oauthConfig.Exchange(context.Background(), code)
+	if err != nil {
+		log.Println("Fehler beim Austausch des Autorisierungscodes:", err)
+		http.Error(w, "Fehler beim Authentifizieren", http.StatusInternalServerError)
+		return
+	}
 	sendJson(w, token.AccessToken)
 }
 
diff --git a/src/highlanderticketing/main.go b/src/highlanderticketing/main.go
index 69278d401d7111602895824781ff5cd64e2e9af9..6b9a4ea94576ae2449320354bc15b1703a917ebf 100644
--- a/src/highlanderticketing/main.go
+++ b/src/highlanderticketing/main.go
@@ -4,6 +4,7 @@ import (
 	"fmt"
 	"net/http"
 	"os"
+	"strconv"
 
 	"github.com/gorilla/mux"
 	"github.com/joho/godotenv"
@@ -16,12 +17,12 @@ import (
 )
 
 func main() {
-	/*service.DeleteAllUsers()
+	service.DeleteAllUsers()
 	var userArray []model.User
 	userArray, _ = service.GetAllUsers()
-	fmt.Println(userArray)
-	service.DeleteAllMatches()
-	api.GetMatchesOfApiToDb("https://api.openligadb.de/getmatchesbyteamid/16/5/0")*/
+	fmt.Println(userArray) /*
+		service.DeleteAllMatches()
+		api.GetMatchesOfApiToDb("https://api.openligadb.de/getmatchesbyteamid/16/5/0")*/
 
 	if err := godotenv.Load(".env"); err != nil {
 		log.Fatalf("Error loading .env file")
@@ -45,14 +46,16 @@ func main() {
 	}
 
 	fmt.Println("Connected to NATS at:", natsServer.Nc.ConnectedUrl())
-
-	e := model.EmialContent{Name: "aa", AwayMatch: true, Location: "ss", Date: "aaa", Emailadress: "aaa"}
+	var nr = strconv.Itoa(1)
+	e := model.EmialContent{Name: "aa", AwayMatch: true, Location: "ss", Date: "aaa", Emailadress: "yannick.ege@web.de", OrderID: nr}
 	natsServer.ConfirmOrder(&e)
 
 	log.Println("Starting Highlander Ticketing server")
 	router := mux.NewRouter()
+	router.HandleFunc("/register", handler.HandleRegister).Methods("GET")
+	router.HandleFunc("/callback/register", handler.HandleCallback).Methods("GET")
 	router.HandleFunc("/login", handler.HandleLogin).Methods("GET")
-	router.HandleFunc("/callback", handler.HandleCallback).Methods("GET")
+	router.HandleFunc("/callback/login", handler.HandleCallback).Methods("GET")
 	router.HandleFunc("/health", handler.Health).Methods("GET")
 	router.HandleFunc("/match", handler.CreateMatch).Methods("POST")
 	router.HandleFunc("/matches", handler.GetAllMatches).Methods("GET")
diff --git a/src/highlanderticketing/model/emailContent.go b/src/highlanderticketing/model/emailContent.go
index 7c854114d7c9fb008c18882606cdb25da1e79b62..5a7867cd142ec0802e44c25d342aed04a441285c 100644
--- a/src/highlanderticketing/model/emailContent.go
+++ b/src/highlanderticketing/model/emailContent.go
@@ -1,6 +1,7 @@
 package model
 
 type EmialContent struct {
+	OrderID     string `json:"orderid"`
 	Name        string `json:"name"`
 	AwayMatch   bool   `json:"awaymatch"`
 	Location    string `json:"location"`
diff --git a/src/highlanderticketing/service/nats.go b/src/highlanderticketing/service/nats.go
index cacd302e13d715edc4d50376b3eb2d44a1b8918e..59b22dceca44f179138aa63a608e69fe86e61baa 100644
--- a/src/highlanderticketing/service/nats.go
+++ b/src/highlanderticketing/service/nats.go
@@ -15,16 +15,37 @@ type NatsServer struct {
 }
 
 func (s NatsServer) ConfirmOrder(e *model.EmialContent) {
+	var res *model.Response
 	emailContenct, errMarshal := json.Marshal(e)
 	if errMarshal != nil {
 		fmt.Println(errMarshal)
 		return
 	}
-	response, err := s.Nc.Request("confirmOrder", []byte(emailContenct), 2*time.Second)
+	response, err := s.Nc.Request("confirmOrder."+string(e.OrderID), []byte(emailContenct), 2*time.Second)
 	if err != nil {
 		log.Println("Error making NATS request:", err)
 	}
-	fmt.Println("hier die nats response", string(response.Data))
+
+	if err := json.Unmarshal(response.Data, &res); err != nil {
+		panic(err)
+	}
+	fmt.Println("hier die nats response", *res)
 }
 
-// hier dann confirm cancel
+func (s NatsServer) confirmCancel(e *model.EmialContent) {
+	var res *model.Response
+	emailContenct, errMarshal := json.Marshal(e)
+	if errMarshal != nil {
+		fmt.Println(errMarshal)
+		return
+	}
+	response, err := s.Nc.Request("confirmOrder."+string(e.Emailadress), []byte(emailContenct), 2*time.Second)
+	if err != nil {
+		log.Println("Error making NATS request:", err)
+	}
+
+	if err := json.Unmarshal(response.Data, &res); err != nil {
+		panic(err)
+	}
+	fmt.Println("hier die nats response", &res)
+}
diff --git a/src/highlanderticketing/service/user.go b/src/highlanderticketing/service/user.go
index 25fd0be8d6cfac9c36f025ebef53bc96c32060bb..d398fc74915b7ef07a9afa926eea607d64ec23ae 100644
--- a/src/highlanderticketing/service/user.go
+++ b/src/highlanderticketing/service/user.go
@@ -52,11 +52,14 @@ func CreateUser(user *model.User) error {
 	result := collection.FindOneAndUpdate(context.TODO(), filter, update, options)
 
 	if result.Err() == mongo.ErrNoDocuments {
+		fmt.Println(3)
 		return nil // dokument wurd erstellt
 	} else if result.Err() != nil {
+		fmt.Println(2)
 		return result.Err() // fehler beim process an sich
 	} else {
-		return nil // erstellt oder nicht aktualisiert
+		fmt.Println(1)
+		return fmt.Errorf("Der Benutzer existiert bereits")
 	}
 }