diff --git a/src/lib-sieve/sieve-actions.c b/src/lib-sieve/sieve-actions.c
index d622f9046824dc0df10822b8c4eeebc29b94df5c..a2eafc8047c21f32ee7b6a3ef4b1683016f67db7 100644
--- a/src/lib-sieve/sieve-actions.c
+++ b/src/lib-sieve/sieve-actions.c
@@ -31,6 +31,20 @@
 
 #include <ctype.h>
 
+/*
+ * Action execution environment
+ */
+
+struct event_passthrough *
+sieve_action_create_finish_event(const struct sieve_action_exec_env *aenv)
+{
+	struct event_passthrough *e =
+		event_create_passthrough(aenv->event)->
+		set_name("sieve_action_finished");
+
+	return e;
+}
+
 /*
  * Side-effect operand
  */
diff --git a/src/lib-sieve/sieve-actions.h b/src/lib-sieve/sieve-actions.h
index 991f87e44c0cd9d1394dbe83e77b42a6dfd9db14..e86c688c840c7c7db96c8fd92e239b32d936faa5 100644
--- a/src/lib-sieve/sieve-actions.h
+++ b/src/lib-sieve/sieve-actions.h
@@ -25,6 +25,9 @@ struct sieve_action_exec_env {
 	struct sieve_message_context *msgctx;
 };
 
+struct event_passthrough *
+sieve_action_create_finish_event(const struct sieve_action_exec_env *aenv);
+
 /*
  * Action flags
  */