Failed to load content.
'; } finally { this.drawerLoading = false; } }, closeDrawer() { this.drawer = false; document.body.style.overflow = ''; }, get progress() { if (this.success) return 100; return Math.round((this.step / this.totalSteps) \* 100); }, validateStep() { this.errors = {}; if (this.step === 1) { if (!this.email.trim()) { this.errors.email = 'Work email is required.'; } else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(this.email)) { this.errors.email = 'Please enter a valid email address.'; } } else if (this.step === 2) { if (!this.name.trim()) this.errors.name = 'Name is required.'; if (!this.company.trim()) this.errors.company = 'Company name is required.'; } else if (this.step === 3) { if (!this.spend) this.errors.spend = 'Please select your monthly ad spend.'; } else if (this.step === 4) { if (!this.goal) this.errors.goal = 'Please select your primary goal.'; } return Object.keys(this.errors).length === 0; }, next() { if (!this.validateStep()) return; if (this.step < this.totalSteps) { this.step++; this.animKey++; } }, back() { if (this.step > 1) { this.step--; this.animKey++; } }, selectSpend(val) { this.spend = val; this.errors = {}; setTimeout(() => this.next(), 250); }, selectGoal(val) { this.goal = val; this.errors = {}; setTimeout(() => this.next(), 250); }, async submit() { this.loading = true; this.errors = {}; try { const token = document.querySelector('meta[name=csrf-token]').content; const res = await fetch('/!/forms/sales\_inquiry', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRF-TOKEN': token, 'Accept': 'application/json', }, body: JSON.stringify({ name: this.name, email: this.email, company: this.company, monthly\_ad\_spend: this.spend, primary\_goal: this.goal, website\_url: this.website, notes: this.notes, website\_confirm: this.honeypot, }), }); if (res.status === 419) { this.errors.form = 'Session expired. Please refresh the page and try again.'; return; } let data; try { data = await res.json(); } catch { this.errors.form = 'Something went wrong. Please try again.'; return; } if (!res.ok) { if (data.errors) { this.errors = {}; Object.keys(data.errors).forEach(key => { this.errors[key] = data.errors[key][0]; }); } else { this.errors.form = data.message || 'Something went wrong. Please try again.'; } } else { this.success = true; this.animKey++; } } catch (e) { this.errors.form = 'Network error. Please try again.'; } finally { this.loading = false; } } }">
Sales inquiry
What’s your work email?
Step 2 of 5
Tell us about you
Name
**Company**
Step 3 of 5
Monthly ad spend?
This helps us tailor the conversation to your scale.
Step 4 of 5
What are you looking to solve?
Almost done
Anything else?
Optional — but it helps us prepare a better walkthrough.
Website (optional)
Notes (optional)
We’ve received your inquiry
A member of our team will be in touch within one business day. We’ll review your details and prepare a tailored walkthrough.
Back to ClickSpend
No commitment required.