diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index 6d60c8567d905d75defdcf47ca2b052e409a339e..97c986ca5fbc898ba7dbbc8d9545766ab002cff7 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -227,6 +227,9 @@ int eputs(int level, const char *str)
 	if(*str == 0)
 		return 0;
 
+	if(startup != NULL)
+		mqtt_lputs(&startup->mqtt, TOPIC_EVENT, level, str);
+
 	if(level <= LOG_ERR) {
 		char errmsg[1024];
 		SAFEPRINTF(errmsg, "evnt %s", str);
diff --git a/src/sbbs3/mqtt.c b/src/sbbs3/mqtt.c
index cebbcf23e4931ef218e187ff80083e5a7e862665..3b98f81e38d52717c9f7b6f74ead9a8f221f2629 100644
--- a/src/sbbs3/mqtt.c
+++ b/src/sbbs3/mqtt.c
@@ -54,6 +54,9 @@ static char* format_topic(struct mqtt* mqtt, enum topic_depth depth, char* str,
 		case TOPIC_SERVER:
 			safe_snprintf(str, size, "sbbs/%s/%s/%s/%s", mqtt->cfg->sys_id, mqtt->host, mqtt->server, sbuf);
 			break;
+		case TOPIC_EVENT:
+			safe_snprintf(str, size, "sbbs/%s/%s/event/%s", mqtt->cfg->sys_id, mqtt->host, sbuf);
+			break;
 		default:
 			safe_snprintf(str, size, "%s", sbuf);
 			break;
diff --git a/src/sbbs3/mqtt.h b/src/sbbs3/mqtt.h
index bf24c7b8afbb077b88e034b3259699529f1f0ac2..ecc5aafe669debc47733492b544c4c9adc6a1255 100644
--- a/src/sbbs3/mqtt.h
+++ b/src/sbbs3/mqtt.h
@@ -46,6 +46,7 @@ enum topic_depth {
 	TOPIC_ROOT,
 	TOPIC_BBS,
 	TOPIC_HOST,
+	TOPIC_EVENT,
 	TOPIC_SERVER
 };