Index: src/routes/admin-circle.js
===================================================================
--- src/routes/admin-circle.js	(revision 0091cb77d389e73218336782b310d2f000e2579a)
+++ src/routes/admin-circle.js	(revision 9915786f0314ef6ea4c4521ec82f9bd93d3e795a)
@@ -16,5 +16,5 @@
 import db from '../config/database.js';
 import { getTenancy } from '../services/SettingsService.js';
-import { syncOne } from '../services/CircleService.js';
+import { syncOne, sync } from '../services/CircleService.js';
 
 const router = express.Router();
@@ -95,4 +95,15 @@
 });
 
+// Alles in één keer verversen (handig "voor de zekerheid").
+router.post('/sync-all', requireGod, async (req, res) => {
+  try {
+    const r = await sync();
+    const n = (r && r.results) ? r.results.filter((x) => x && x.ok).length : 0;
+    res.redirect('/admin/circle?success=' + encodeURIComponent(`Cirkel gesynchroniseerd (${n} site(s) bijgewerkt)`));
+  } catch (e) {
+    res.redirect('/admin/circle?error=' + encodeURIComponent(String((e && e.message) || e).slice(0, 200)));
+  }
+});
+
 router.post('/allow', requireGod, (req, res) => {
   const site = primarySite();
