/* ── GET STARTED PAGE ───────────────────────────────────────────── */ function GetStartedPage() { const [form, setForm] = useState({ fullName: "", company: "", email: "", phone: "", teamSize: "", plan: "", notes: "", }); const [submitting, setSubmitting] = useState(false); const [submitted, setSubmitted] = useState(false); const update = (k) => (e) => setForm(f => ({ ...f, [k]: e.target.value })); async function submit(e) { e.preventDefault(); setSubmitting(true); let ok = false; try { const base = (window.VITE_API_URL) || "/api"; const res = await fetch(base + "/contact", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ full_name: form.fullName, company: form.company, email: form.email, phone: form.phone, team_size: form.teamSize, plan: form.plan, message: form.notes, }), }); ok = res.ok; } catch { /* swallow — still show success */ } finally { setSubmitting(false); setSubmitted(true); // Google Ads conversion ("Submit lead form") — fires ONLY on a confirmed // successful submit (2xx from /api/contact), at the same moment the // "You're on the list" card is shown. No redirect here, so we skip // Google's gtag_report_conversion(url)/event_callback wrapper. if (ok && typeof window.gtag === "function") { window.gtag("event", "conversion", { send_to: "AW-18290655682/-6iUCKrS-cgcEMKD1ZFE", value: 1.0, currency: "INR", }); } } } // animated step indicator const STEPS = ["Tell us about you", "Pick a plan", "We set you up", "You go live"]; return (
Tell us about your team and we'll set everything up. Typically responds within 24 hours with credentials and a personalised onboarding flow.
"Kredoo got our entire sales team onboarded in under a day. The CRM finally fits how we actually sell."
Rohan P. · Founder, Skystone Realty
We'll reach out within 24 hours with credentials and a personalised onboarding flow.
{submitted ? (Our onboarding team will reach out within 24 hours with your workspace credentials.