Index: src/routes/admin-circle.js
===================================================================
--- src/routes/admin-circle.js	(revision 6d882b1985b6fed7e478dca83d635cc581767dd5)
+++ src/routes/admin-circle.js	(revision 1f0c85b8b71d3d922a668938399462fdb3b1ae3b)
@@ -48,5 +48,5 @@
 });
 
-router.post('/add', requireGod, (req, res) => {
+router.post('/add', requireGod, async (req, res) => {
   const site = primarySite();
   if (!site) return res.redirect('/admin/circle?error=' + encodeURIComponent('Geen site gevonden'));
@@ -56,11 +56,19 @@
   }
   const label = (req.body.label || '').toString().slice(0, 80).trim() || null;
+  const id = crypto.randomUUID();
   try {
     db.prepare("INSERT INTO circle_links (id, local_site_id, remote_url, label, status) VALUES (?, ?, ?, ?, 'active')")
-      .run(crypto.randomUUID(), site.id, url, label);
+      .run(id, site.id, url, label);
   } catch (e) {
     return res.redirect('/admin/circle?error=' + encodeURIComponent('Deze site staat al in je cirkel'));
   }
-  res.redirect('/admin/circle?success=' + encodeURIComponent('Toegevoegd — klik "Verversen" om op te halen'));
+  // Meteen ophalen i.p.v. wachten op de 15-min-loop.
+  try {
+    const link = db.prepare('SELECT * FROM circle_links WHERE id = ?').get(id);
+    await syncOne(link);
+    return res.redirect('/admin/circle?success=' + encodeURIComponent('Toegevoegd en gesynchroniseerd ✓'));
+  } catch (e) {
+    return res.redirect('/admin/circle?success=' + encodeURIComponent('Toegevoegd — synchroniseren mislukte (klik "Verversen" om opnieuw te proberen)'));
+  }
 });
 
