Responza

Start 14 dagers gratis prøve

Ingen belastning de første 14 dagene. Si opp når som helst fra adminpanelet.

PRO
Lead capture, e-postvarsling og bedre tilpasning
1 690 kr/mnd
inkl. MVA

← Velg en annen plan

eller registrer med e-post

Kort kreves for å starte prøven. Vi belaster ikke før dag 15. Si opp når som helst.

Har du allerede konto? Logg inn →

Hva skjer videre?

  1. 1
    Betal trygt med Stripe Kort registreres, men du belastes ikke før dag 15.
  2. 2
    Fortell om bedriften din En 10-minutters onboarding: produkter, FAQ, tone og stil.
  3. 3
    Vi bygger boten din på 48 timer Ekte mennesker tilpasser boten til bedriften din og tester den på ekte spørsmål.
  4. 4
    Lim inn én kodelinje, gå live Du får en embed-snippet på e-post. Lim den inn på siden din, og boten er live.
14 dagers gratis prøve Ingen bindingstid GDPR + EU-hostet
2. Init: const supabase = window.supabase.createClient(URL, ANON_KEY); 3. Your backend endpoint /api/create-checkout-session creates a Stripe Checkout Session and returns the URL (see BACKEND.md). 4. Replace the DEMO MODE block in signupForm submit handler. =========================================================== */ // ---- Read selected plan from ?plan= and update summary ---- var plans = { start: { name: 'START', price: '890', desc: 'Kom raskt i gang med AI-kundeservice' }, pro: { name: 'PRO', price: '1 690', desc: 'Lead capture, e-postvarsling og bedre tilpasning' }, premium: { name: 'PREMIUM', price: '3 490', desc: 'Full tilpasning, avanserte flows og løpende optimalisering' } }; var p = (new URL(location.href)).searchParams.get('plan') || 'pro'; if (!plans[p]) p = 'pro'; document.getElementById('planName').textContent = plans[p].name; document.getElementById('planPrice').textContent = plans[p].price; document.getElementById('planDesc').textContent = plans[p].desc; function showError(msg) { var e = document.getElementById('signupError'); e.style.display = 'block'; e.textContent = msg; e.scrollIntoView({ behavior: 'smooth', block: 'center' }); } // ---- Form submit ---- document.getElementById('signupForm').addEventListener('submit', function (e) { e.preventDefault(); var btn = e.target.querySelector('button[type="submit"]'); btn.disabled = true; btn.textContent = 'Sender …'; var formData = new FormData(e.target); var data = Object.fromEntries(formData.entries()); data.plan = p; /* [SUPABASE + STRIPE] Replace this DEMO MODE block with: // 1) Create Supabase Auth user const { data: authData, error: authError } = await supabase.auth.signUp({ email: data.email, password: data.password, options: { data: { full_name: data.full_name, phone: data.phone } } }); if (authError) { showError(authError.message); return; } // 2) Insert tenant record (use Supabase RLS so user can only insert their own) const { data: tenant, error: tenantError } = await supabase .from('tenants') .insert({ owner_id: authData.user.id, business_name: data.business_name, website_url: data.website_url, phone: data.phone, plan: data.plan, status: 'pending_payment' }) .select() .single(); if (tenantError) { showError(tenantError.message); return; } // 3) Call your backend to create a Stripe Checkout session // (server-side — see BACKEND.md for the API route code) const checkoutRes = await fetch('/api/create-checkout-session', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ plan: data.plan, tenant_id: tenant.id, customer_email: data.email }) }); const { url } = await checkoutRes.json(); // 4) Redirect to Stripe Checkout window.location.href = url; */ // ---- DEMO MODE: skip Supabase + Stripe, simulate flow ---- setTimeout(function () { // Pretend the signup + payment succeeded sessionStorage.setItem('responza_customer', '1'); sessionStorage.setItem('responza_first_login', '1'); sessionStorage.setItem('responza_plan', p); sessionStorage.setItem('responza_business_name', data.business_name); // Redirect to admin onboarding wizard location.href = 'admin.html#welcome'; }, 800); }); // ---- Google OAuth ---- document.getElementById('signupGoogle').addEventListener('click', function () { /* [SUPABASE] Replace with: supabase.auth.signInWithOAuth({ provider: 'google', options: { redirectTo: window.location.origin + '/admin.html?onboarding=1&plan=' + p } }); */ sessionStorage.setItem('responza_customer', '1'); sessionStorage.setItem('responza_first_login', '1'); sessionStorage.setItem('responza_plan', p); location.href = 'admin.html#welcome'; }); // ---- Microsoft OAuth ---- document.getElementById('signupMicrosoft').addEventListener('click', function () { /* [SUPABASE] Replace with: supabase.auth.signInWithOAuth({ provider: 'azure', options: { redirectTo: window.location.origin + '/admin.html?onboarding=1&plan=' + p, scopes: 'email' } }); */ sessionStorage.setItem('responza_customer', '1'); sessionStorage.setItem('responza_first_login', '1'); sessionStorage.setItem('responza_plan', p); location.href = 'admin.html#welcome'; }); })();