diff --git a/Cargo.toml b/Cargo.toml
index 6fe0d9b2..9470edf5 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -25,6 +25,9 @@ maintenance = { status = "actively-developed" }
 
 # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
 
+[features]
+webhooks = ["warp"]
+
 [dependencies]
 serde_json = "1.0.44"
 serde = { version = "1.0.101", features = ["derive"] }
@@ -48,7 +51,7 @@ either = "1.5.3"
 
 teloxide-macros = "0.2.1"
 
-warp = { version = "0.2.2", features = ["tls"] }
+warp = { version = "0.2.2", features = ["tls"], optional = true }
 
 [dev-dependencies]
 smart-default = "0.6.0"
diff --git a/src/dispatching/update_listeners.rs b/src/dispatching/update_listeners.rs
index b0a1c42f..0f8e1151 100644
--- a/src/dispatching/update_listeners.rs
+++ b/src/dispatching/update_listeners.rs
@@ -210,6 +210,7 @@ pub fn polling(
     .flatten()
 }
 
+#[cfg(feature = "webhooks")]
 pub async fn webhook<KP, KB, CP, CB>(
     url: Url,
     addr: SocketAddr,