Contact / Support

Start a conversation.

WST begins with listening. Share your question, your idea, or the need you see. We’ll route you to the best next step.

Privacy first: we keep contact minimal. We only collect what’s needed to respond.
Want to participate? Use Join Today to submit membership and enter the system.

Fast Support

If you are a member or you’ve already submitted, use the support console for the fastest routing.

Beta note: support routing is improving daily. Logs are disposable, but standards are not.

Tip: include location, timeline, and the kind of help you’re seeking.
Join Today
By reaching out, you’re requesting a conversation. If you choose to continue beyond initial contact, participation may require agreement to WST’s private humanitarian standards and policies as part of onboarding. Nothing is obligated by this message.
// Optional: client-side guard so empty forms don't submit document.getElementById("contactForm").addEventListener("submit", function(e){ const name = document.getElementById("name").value.trim(); const email = document.getElementById("email").value.trim(); const topic = document.getElementById("topic").value.trim(); const type = document.getElementById("type").value.trim(); if (!name || !email || !topic || !type) { e.preventDefault(); alert("Please fill in Name, Email, Personal/Organization, and Topic."); } }); // Session-based swap: Member Sign In -> Dashboard (no URL params, no user input) (async function(){ const whoamiUrl = "/portal/api/auth_whoami.php"; const top = document.getElementById("ctaMemberTop"); const foot = document.getElementById("ctaMemberFooter"); function applySignedOut(){ [top, foot].forEach(a => { if (!a) return; a.textContent = "Member Sign In"; a.setAttribute("href", a.getAttribute("data-signin-href") || "/portal/"); }); } function applySignedIn(){ [top, foot].forEach(a => { if (!a) return; a.textContent = "Dashboard"; a.setAttribute("href", a.getAttribute("data-dashboard-href") || "/portal/members/dashboard.php"); }); } // Default to signed-out (safe) applySignedOut(); try{ const res = await fetch(whoamiUrl, { credentials: "include", cache: "no-store" }); if (!res.ok) return; const data = await res.json().catch(() => null); if (data && (data.member_id || data.mid) && String(data.member_id || data.mid).length > 0){ applySignedIn(); } } catch { // remain signed-out } })();