diff --git a/config.stdio.yml b/config.stdio.yml
index 329347ade9c13d203dd885cb8dcc907d1c7d51e1..da8f855c398ee7af48e0152001f586e05eed81e8 100644
--- a/config.stdio.yml
+++ b/config.stdio.yml
@@ -26,3 +26,5 @@ digital_outputs:
     pin: 20
     on_payload: "ON"
     off_payload: "OFF"
+    publish_initial: yes
+    initial: high
diff --git a/pi_mqtt_gpio/server.py b/pi_mqtt_gpio/server.py
index 67fd95cf1c53eca50160d173395c68a4b93df208..c448af36d7219ce831f1ac47af1cf935cad331f5 100644
--- a/pi_mqtt_gpio/server.py
+++ b/pi_mqtt_gpio/server.py
@@ -1110,15 +1110,6 @@ def main(args):
 
     for out_conf in digital_outputs:
         initialise_digital_output(out_conf, GPIO_MODULES[out_conf["module"]])
-        # If configured to do so, publish the initial states of the outputs
-        initial_setting = out_conf.get("initial")
-        if initial_setting is not None and out_conf.get("publish_initial", False):
-            payload = out_conf["on_payload" if initial_setting else "off_payload"]
-            client.publish(
-                "%s/%s/%s" % (topic_prefix, OUTPUT_TOPIC, out_conf["name"]),
-                retain=out_conf["retain"],
-                payload=payload,
-            )
 
     for sens_conf in sensor_inputs:
         try:
@@ -1172,6 +1163,17 @@ def main(args):
         sys.exit(1)
     client.loop_start()
 
+    for out_conf in digital_outputs:
+        # If configured to do so, publish the initial states of the outputs
+        initial_setting = out_conf.get("initial")
+        if initial_setting is not None and out_conf.get("publish_initial", False):
+            payload = out_conf["on_payload" if initial_setting else "off_payload"]
+            client.publish(
+                "%s/%s/%s" % (topic_prefix, OUTPUT_TOPIC, out_conf["name"]),
+                retain=out_conf["retain"],
+                payload=payload,
+            )
+
     scheduler = Scheduler()
 
     try: