diff --git a/src/service/notification.rs b/src/service/notification.rs
index 71ff1e86315304a5a825530f55db158511fb243d..2319c8381bb1e0bb06a627fc8d5871966e725113 100644
--- a/src/service/notification.rs
+++ b/src/service/notification.rs
@@ -3,7 +3,7 @@ use std::thread;
 use bambangshop::{Result, compose_error_response};
 use rocket::http::Status;
 use crate::model::notification::Notification;
-use crate::model::product::Product;
+use crate::model::product::{self, Product};
 use crate::model::subscriber::Subscriber;
 use crate::repository::subscriber::SubscriberRepository;
 
@@ -16,4 +16,17 @@ impl NotificationService{
         let subscriber_result: Subscriber = SubscriberRepository::add(product_type_str, subscriber);
         return Ok(subscriber_result);
     }
+
+    pub fn unsubscribe(product_type: &str, url: &str) -> Result<Subscriber> {
+        let product_type_upper: String = product_type.to_uppercase();
+        let product_type_str: &str = product_type_upper.as_str();
+        let result: Option<Subscriber> = SubscriberRepository::delete(product_type_str, url);
+        if result.is_none() {
+            return Err(compose_error_response(
+                Status::NotFound,
+                String::from("Subscriber not found.")
+            ))
+        }
+        return Ok(result.unwrap());
+    }
 }
\ No newline at end of file