diff --git a/src/freedombone-installer b/src/freedombone-installer
index b3a455be06563835595c60853e327efaabd3aa41..d222791e5787fb8201a5d035e4fbf1bbd65bc8fb 100755
--- a/src/freedombone-installer
+++ b/src/freedombone-installer
@@ -1850,6 +1850,7 @@ function regenerate_dynamic_dns {
     ddns="$1"
     ddns_username="$2"
     ddns_password="$3"
+    ddns_code="$4"
 
     local_hostname=$(grep 'host-name' /etc/avahi/avahi-daemon.conf | awk -F '=' '{print $2}').local
     webadmin_install_dir="/var/www/${local_hostname}/htdocs/admin"
@@ -1863,6 +1864,7 @@ function regenerate_dynamic_dns {
         fi
         sed -i "s|\"$ddns\"|\"$ddns\" selected|g" "$webadmin_install_dir/dynamicdns.html"
         sed -i "s|DDNS_USERNAME|$ddns_username|g" "$webadmin_install_dir/dynamicdns.html"
+        sed -i "s|DDNS_CODE|$ddns_code|g" "$webadmin_install_dir/dynamicdns.html"
         sed -i "s|CURRENT_IP_ADDRESS|$(get_external_ipv4_address)|g" "$webadmin_install_dir/dynamicdns.html"
         # Note: For security don't populate the password
         #sed -i "s|DDNS_PASSWORD|$ddns_password|g" "$webadmin_install_dir/dynamicdns.html"
@@ -2581,6 +2583,7 @@ function update_dynamic_dns {
         ddns=$(awk -F ',' '{print $1}' < "$dynamic_dns_file")
         ddns_username=$(awk -F ',' '{print $2}' < "$dynamic_dns_file")
         ddns_password=$(awk -F ',' '{print $3}' < "$dynamic_dns_file")
+        ddns_code=$(awk -F ',' '{print $4}' < "$dynamic_dns_file")
 
         ddns_is_valid=
         if [ "$ddns_username" ]; then
@@ -2599,7 +2602,26 @@ function update_dynamic_dns {
 
         if [ $ddns_is_valid ]; then
             /usr/local/bin/${PROJECT_NAME}-ddns "$ddns" "$ddns_username" "$ddns_password"
-            regenerate_dynamic_dns "$ddns" "$ddns_username" "$ddns_password"
+
+            if [ "$ddns_code" ]; then
+                if [ ${#ddns_code} -gt 30 ]; then
+                    # if the whole cron line was pasted then parse that
+                    if [[ "$ddns_code" == *'freedns'* ]]; then
+                        if [[ "$ddns_code" == *'?'* && "$ddns_code" == *'='* ]]; then
+                            ddns_code=$(echo "$ddns_code" | awk -F '?' '{print $2}' | awk -F '=' '{print $1}')
+                        fi
+                    fi
+                    if grep -q "DEFAULT_DOMAIN_CODE=" "$CONFIGURATION_FILE"; then
+                        sed -i "s|DEFAULT_DOMAIN_CODE=.*|DEFAULT_DOMAIN_CODE=${ddns_code}|g" "$CONFIGURATION_FILE"
+                    else
+                        echo "DEFAULT_DOMAIN_CODE=${ddns_code}" >> "$CONFIGURATION_FILE"
+                    fi
+                else
+                    ddns_code=
+                fi
+            fi
+
+            regenerate_dynamic_dns "$ddns" "$ddns_username" "$ddns_password" "$ddns_code"
         fi
 
         rm "$dynamic_dns_file"
diff --git a/src/freedombone-utils-webadmin b/src/freedombone-utils-webadmin
index ad342adf96f0da9c82ee1d2504f6a552a6efd1c0..3f8c56b7221c517eaf1119ce6d4b880bdc78bfca 100755
--- a/src/freedombone-utils-webadmin
+++ b/src/freedombone-utils-webadmin
@@ -1077,6 +1077,7 @@ function regenerate_webadmin_dynamic_dns {
     read_config_param DDNS_PROVIDER
     read_config_param DDNS_USERNAME
     read_config_param DDNS_PASSWORD
+    read_config_param DEFAULT_DOMAIN_CODE
 
     local_hostname=$(grep 'host-name' /etc/avahi/avahi-daemon.conf | awk -F '=' '{print $2}').local
     webadmin_install_dir="/var/www/${local_hostname}/htdocs/admin"
@@ -1091,6 +1092,7 @@ function regenerate_webadmin_dynamic_dns {
         fi
         sed -i "s|\"$ddns\"|\"$ddns\" selected|g" "$webadmin_install_dir/dynamicdns.html"
         sed -i "s|DDNS_USERNAME|$DDNS_USERNAME|g" "$webadmin_install_dir/dynamicdns.html"
+        sed -i "s|DDNS_CODE|$DEFAULT_DOMAIN_CODE|g" "$webadmin_install_dir/dynamicdns.html"
         sed -i "s|CURRENT_IP_ADDRESS|$(get_external_ipv4_address)|g" "$webadmin_install_dir/dynamicdns.html"
         # Note: For security don't populate the password
         #sed -i "s|DDNS_PASSWORD|$DDNS_PASSWORD|g" "$webadmin_install_dir/dynamicdns.html"
diff --git a/webadmin/EN/dynamicdns_template.html b/webadmin/EN/dynamicdns_template.html
index 4af39052660769cdcf7727bb6efe8404489acfec..1c0e4cb40252257a24287deab15c5999e1196409 100644
--- a/webadmin/EN/dynamicdns_template.html
+++ b/webadmin/EN/dynamicdns_template.html
@@ -169,7 +169,9 @@
           </select>
           <br><br>
           <label translate="yes">Username</label>: <input type="text" name="ddns_username" value="DDNS_USERNAME"><br><br>
-          <label translate="yes">Password</label>: <input type="password" name="ddns_password" value=""><br><br><br>
+          <label translate="yes">Password</label>: <input type="password" name="ddns_password" value=""><br><br>
+          <label translate="yes">Code</label>: <input type="text" name="ddnscode" value="DDNS_CODE"><br><br>
+          <br>
           <input type="submit" name="submitddnscancel" translate="yes" value="Cancel">
           <input type="submit" name="submitddns" translate="yes" value="Continue">
         </form>
diff --git a/webadmin/dynamicdns.php b/webadmin/dynamicdns.php
index 5a06ce0261cf720db742c263fcafcff0dab36798..1ccb7b8c2937d42ed9abe0f54cb7e8f70507ffd3 100755
--- a/webadmin/dynamicdns.php
+++ b/webadmin/dynamicdns.php
@@ -8,9 +8,10 @@ if (isset($_POST['submitddns'])) {
     $ddns = htmlspecialchars($_POST['dynamicdns']);
     $ddns_username = htmlspecialchars($_POST['ddns_username']);
     $ddns_password = htmlspecialchars($_POST['ddns_password']);
+    $ddns_code = htmlspecialchars($_POST['ddnscode']);
 
     $ddns_file = fopen(".dynamicdns.txt", "w") or die("Unable to create dynamicdns file");
-    fwrite($ddns_file, $ddns.','.$ddns_username.','.$ddns_password);
+    fwrite($ddns_file, $ddns.','.$ddns_username.','.$ddns_password.','.$ddns_code);
     fclose($ddns_file);
 }