diff --git a/inc/lektor/commands.h b/inc/lektor/commands.h
index a447ef3604501b192301410c5a365e592b11092e..c685230874d05f8d158d6faf8ae724ebbc32b643 100644
--- a/inc/lektor/commands.h
+++ b/inc/lektor/commands.h
@@ -60,10 +60,11 @@ bool command_noidle(struct lkt_state *srv, size_t c);
 
 /* Find commands */
 enum lkt_find_action {
-    LKT_FND_ACT_NONE = 0,
+    LKT_FND_ACT_NONE    = 0,
     LKT_FND_ACT_RESPOND = 1,
-    LKT_FND_ACT_PRINT = 2,
+    LKT_FND_ACT_PRINT   = 2,
     LKT_FND_ACT_ENQUEUE = 3,
+    LKT_FND_ACT_ADD     = 4,
 };
 
 /* Find and send karas in the db that match the search expression */
diff --git a/src/commands.c b/src/commands.c
index 03b289c1b91fecf2d38ba0100c0adf704a1e09e0..08d54f20086830e21f77cd10329bf68d01ff7ebc 100644
--- a/src/commands.c
+++ b/src/commands.c
@@ -468,6 +468,13 @@ lkt_callback_insert_v1(struct lkt_state *srv, size_t c, int id, int id_len, cons
     return database_queue_add_id(srv->db, id, 5);
 }
 
+static bool
+lkt_callback_add_v1(struct lkt_state *srv, size_t c, int id, int id_len, const char *sql_row)
+{
+    UNUSED(sql_row, id_len, c);
+    return database_queue_add_id(srv->db, id, 1);
+}
+
 static bool
 __find(struct lkt_state *srv, size_t c, char *cmd_args[LKT_MESSAGE_ARGS_MAX], long continuation,
        enum lkt_find_action action, bool(*init)(volatile sqlite3 *, char *, char *, struct lkt_search *))
@@ -498,6 +505,8 @@ __find(struct lkt_state *srv, size_t c, char *cmd_args[LKT_MESSAGE_ARGS_MAX], lo
         search.call = (void(*)(void)) lkt_callback_insert_v1;
         srv->mpd_idle_events |= MPD_IDLE_PLAYLIST;
         break;
+    case LKT_FND_ACT_ADD:
+        search.call = (void(*)(void)) lkt_callback_add_v1;
     default:
         return false;
     }
diff --git a/src/net/listen.c b/src/net/listen.c
index 81d15d9f67449a6d02bebb0da216a401433c0a3b..23d4fddf2cb64900788e5dbca88b132ba662518b 100644
--- a/src/net/listen.c
+++ b/src/net/listen.c
@@ -255,10 +255,12 @@ handle_simple_command(struct lkt_state *srv, size_t c, struct lkt_command cmd)
             goto end_no_send_status;
         } else if (!strcmp(cmd.name, "searchadd") ||
                    !strcmp(cmd.name, "findadd"))
-            err = !command_find(srv, c, cmd.args, cmd.cont, LKT_FND_ACT_RESPOND);
+            err = ! command_find(srv, c, cmd.args, cmd.cont, LKT_FND_ACT_ADD);
         else if (!strcmp(cmd.name, "search") ||
                  !strcmp(cmd.name, "find"))
-            err = !command_find(srv, c, cmd.args, cmd.cont, LKT_FND_ACT_RESPOND);
+            err = ! command_find(srv, c, cmd.args, cmd.cont, LKT_FND_ACT_RESPOND);
+        else if (!strcmp(cmd.name, "__insert"))
+            err = ! command_find(srv, c, cmd.args, cmd.cont, LKT_FND_ACT_ENQUEUE);
         else
             err = 2;