diff --git a/src/syncterm/bbslist.c b/src/syncterm/bbslist.c
index 6212ecbadd7ac52450465a1ed0623dcdaa28e8cd..611a235e58992d8768df6abf5affdd9ce6d85136 100644
--- a/src/syncterm/bbslist.c
+++ b/src/syncterm/bbslist.c
@@ -2974,8 +2974,23 @@ edit_web_lists(void)
 					// TODO: Help
 					if (uifc.input(WIN_SAV | WIN_MID, 0, 0, "Web List URI", tmpv, sizeof(tmpv) - 1, K_EDIT) != -1
 					    && tmpv[0]) {
-						namedStrListInsert(&settings.webgets, tmpn, tmpv, i & MSK_OFF);
-						changed = true;
+						char cache_path[MAX_PATH + 1];
+						if (get_syncterm_filename(cache_path, sizeof(cache_path), SYNCTERM_PATH_SYSTEM_CACHE, false)) {
+							struct webget_request req;
+							if (!init_webget_req(&req, cache_path, tmpn, tmpv) || !iniReadHttp(&req)) {
+								char temp[1024];
+								snprintf(temp, sizeof(temp), "Can't fetch URI: %s", req.msg);
+								uifc.msg(temp);
+							}
+							else {
+								namedStrListInsert(&settings.webgets, tmpn, tmpv, i & MSK_OFF);
+								changed = true;
+							}
+						}
+						else {
+							namedStrListInsert(&settings.webgets, tmpn, tmpv, i & MSK_OFF);
+							changed = true;
+						}
 					}
 					break;
 				}
diff --git a/src/syncterm/syncterm.c b/src/syncterm/syncterm.c
index d12cf2304a9c35146eca4a5a0f6b6b41bd71cddd..9b0ccf1a63315f14584eb1ba318a7b348624134a 100644
--- a/src/syncterm/syncterm.c
+++ b/src/syncterm/syncterm.c
@@ -1446,6 +1446,16 @@ get_syncterm_filename(char *fn, int fnlen, int type, bool shared)
 		sprintf(fn, "%.*s", fnlen - 1, list_override);
 		return fn;
 	}
+
+	// Get recursive for the system cache...
+	if (type == SYNCTERM_PATH_SYSTEM_CACHE) {
+		if (!get_syncterm_filename(fn, fnlen, SYNCTERM_PATH_CACHE, false))
+			return NULL;
+		backslash(fn);
+		strlcat(fn, "syncterm-system-cache", fnlen);
+		mkpath(fn);
+		return fn;
+	}
 	memset(fn, 0, fnlen);
 #if defined(__APPLE__) && defined(__MACH__)
 	return get_OSX_filename(fn, fnlen, type, shared);
@@ -2168,11 +2178,7 @@ main(int argc, char **argv)
 
 		init_uifc(true, true);
 		char cache_path[MAX_PATH + 1];
-		if (get_syncterm_filename(cache_path, sizeof(cache_path), SYNCTERM_PATH_CACHE, false)) {
-			backslash(cache_path);
-			strlcat(cache_path, "syncterm-system-cache", sizeof(cache_path));
-			mkpath(cache_path);
-
+		if (get_syncterm_filename(cache_path, sizeof(cache_path), SYNCTERM_PATH_SYSTEM_CACHE, false)) {
 			size_t items;
 			size_t started = 0;
 			COUNT_LIST_ITEMS(settings.webgets, items);
diff --git a/src/syncterm/syncterm.h b/src/syncterm/syncterm.h
index d7ee87f0dc9123568485f5aa768bfe837044b37d..7038cee2ff2cde1556a619f9cfba0f648097b76f 100644
--- a/src/syncterm/syncterm.h
+++ b/src/syncterm/syncterm.h
@@ -14,15 +14,12 @@
 #endif
 
 enum {
-	SYNCTERM_PATH_INI
-	,
-	SYNCTERM_PATH_LIST
-	,
-	SYNCTERM_DEFAULT_TRANSFER_PATH
-	,
-	SYNCTERM_PATH_CACHE
-	,
-	SYNCTERM_PATH_KEYS
+	SYNCTERM_PATH_INI,
+	SYNCTERM_PATH_LIST,
+	SYNCTERM_DEFAULT_TRANSFER_PATH,
+	SYNCTERM_PATH_CACHE,
+	SYNCTERM_PATH_KEYS,
+	SYNCTERM_PATH_SYSTEM_CACHE
 };
 
 /* Default modem device */