diff --git a/src/plugins/imapsieve/imap-sieve-plugin.c b/src/plugins/imapsieve/imap-sieve-plugin.c
index 9389b8de3a2c21b8f48434b0de64ac78b2559f08..90ce5b4376731e9a7136b30bfadb482c8c954576 100644
--- a/src/plugins/imapsieve/imap-sieve-plugin.c
+++ b/src/plugins/imapsieve/imap-sieve-plugin.c
@@ -19,20 +19,9 @@ static void imap_sieve_client_created(struct client **clientp)
 {
 	struct client *client = *clientp;
 	struct mail_user *user = client->user;
-	const char *url = NULL;
-
-	if (mail_user_is_plugin_loaded(user, imap_sieve_module)) {
-		url = mail_user_plugin_getenv(user, "imapsieve_url");
-		// FIXME: parse the URL and report error if it is bad
-		if (url != NULL && str_begins_icase_with(url, "sieve:")) {
-			client_add_capability(client, t_strconcat(
-				"IMAPSIEVE=", url, NULL));
-		} else {
-			url = NULL;
-		}
-
-		imap_sieve_storage_client_created(client, (url != NULL));
-	}
+
+	if (mail_user_is_plugin_loaded(user, imap_sieve_module))
+		imap_sieve_storage_client_created(client);
 
 	if (next_hook_client_created != NULL)
 		next_hook_client_created(clientp);
diff --git a/src/plugins/imapsieve/imap-sieve-storage.c b/src/plugins/imapsieve/imap-sieve-storage.c
index 538fed2f8d7026bc74484b4352d8b1fb1399174d..afa6e09e7de6b1d373d48a9101e048f02f6a7da6 100644
--- a/src/plugins/imapsieve/imap-sieve-storage.c
+++ b/src/plugins/imapsieve/imap-sieve-storage.c
@@ -1171,14 +1171,23 @@ static void imap_sieve_command_post(struct client_command_context *cmd)
  * Client
  */
 
-void imap_sieve_storage_client_created(struct client *client, bool user_script)
+void imap_sieve_storage_client_created(struct client *client)
 {
 	struct mail_user *user = client->user;
 	struct imap_sieve_user *isuser = IMAP_SIEVE_USER_CONTEXT_REQUIRE(user);
-	const char *set;
+	const char *url, *set;
+
+	url = mail_user_plugin_getenv(user, "imapsieve_url");
+	// FIXME: parse the URL and report error if it is bad
+	if (url != NULL && str_begins_icase_with(url, "sieve:")) {
+		client_add_capability(client,
+			t_strconcat("IMAPSIEVE=", url, NULL));
+	} else {
+		url = NULL;
+	}
 
 	isuser->client = client;
-	isuser->user_script = user_script;
+	isuser->user_script = (url != NULL && *url != '\0');
 
 	set = mail_user_plugin_getenv(user, "imapsieve_expunge_discarded");
 	isuser->expunge_discarded = (set != NULL &&
diff --git a/src/plugins/imapsieve/imap-sieve-storage.h b/src/plugins/imapsieve/imap-sieve-storage.h
index 4defe62502d279d0301982ec00dc8c52d3eb8bff..e44cdf3bef4007498454873589a54c4db768ee56 100644
--- a/src/plugins/imapsieve/imap-sieve-storage.h
+++ b/src/plugins/imapsieve/imap-sieve-storage.h
@@ -4,6 +4,6 @@
 void imap_sieve_storage_init(struct module *module);
 void imap_sieve_storage_deinit(void);
 
-void imap_sieve_storage_client_created(struct client *client, bool user_script);
+void imap_sieve_storage_client_created(struct client *client);
 
 #endif