Skjemaer er alltid nødvendig
Kontaktskjemaer, påmeldingsskjemaer, lead-skjemaer. Alle bedriftssider trenger en måte å motta henvendelser på. Her er de beste alternativene for statiske og AI-bygde nettsider i 2026.
Hostede skjematjenester
Disse lar deg lime inn et skript på nettsiden din, og alle submissions havner i deres dashboard (og sendes til din e-post).
Formspree
Enklest å komme i gang med. Sett action="mailto:din@email.com" i HTML-skjemaet ditt, Formspree håndterer resten.
Pris: Gratis opp til 50/mnd, 10 dollar/mnd for 1000 submissions, 20 dollar/mnd for 10 000.
Bra for: Enkle kontaktskjemaer på bedriftssider med lav volum.
Tally
Typeform-lignende opplevelse, men mye rimeligere. Drag-and-drop builder, conditional logic, payments, integrations.
Pris: Gratis (ubegrenset submissions!), 29 dollar/mnd for branding fjernet.
Bra for: Komplekse skjemaer med logikk, betalinger, filopplasting.
Typeform
Premium conversational forms. En-spørsmål-av-gangen-stil som gir høyere completion rates.
Pris: Fra 25 dollar/mnd.
Bra for: Quiz, undersøkelser, omfattende skjemaer der opplevelsen er viktig.
Fillout
Nyere aktør med fokus på fleksibilitet. Airtable-integrasjon, betalinger, signaturer.
Pris: Gratis opp til 1000 responses, 20 dollar/mnd for Pro.
Native skjemaer med Vercel Functions + Resend
Hvis du vil ha full kontroll og null tredjepart, kan du bygge skjemaer native med serverless functions og Resend for e-post-sending.
Hvorfor native?
- Null avhengigheter
- Data forlater aldri din infrastruktur
- Ubegrenset submissions
- Full kontroll over UX
- Ingen tredjepart branding
Komplett eksempel: Next.js + Resend
Fil: app/api/contact/route.ts
import { Resend } from 'resend' import { z } from 'zod' const resend = new Resend(process.env.RESEND_API_KEY) const schema = z.object({ navn: z.string().min(2).max(100), epost: z.string().email(), telefon: z.string().optional(), melding: z.string().min(10).max(5000), honeypot: z.string().max(0), // Must be empty (spam check) }) export async function POST(request: Request) { try { const body = await request.json() const parsed = schema.safeParse(body) if (!parsed.success) { return Response.json( { error: 'Ugyldig data' }, { status: 400 } ) } const { navn, epost, telefon, melding } = parsed.data await resend.emails.send({ from: 'skjema@dittfirma.no', to: 'hei@dittfirma.no', replyTo: epost, subject: `Ny henvendelse fra ${navn}`, text: ` Navn: ${navn} E-post: ${epost} Telefon: ${telefon || 'Ikke oppgitt'} Melding: ${melding} `.trim(), }) return Response.json({ success: true }) } catch (error) { console.error('Form error:', error) return Response.json( { error: 'Serverfeil' }, { status: 500 } ) } }
Frontend-kode (HTML/React):
'use client' import { useState } from 'react' export default function ContactForm() { const [status, setStatus] = useState'idle' async function handleSubmit(e) { e.preventDefault() setStatus('sending') const formData = new FormData(e.target) const data = Object.fromEntries(formData) const res = await fetch('/api/contact', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data), }) setStatus(res.ok ? 'success' : 'error') } return ( <form onSubmit={handleSubmit}> <input name="navn" required /> <input name="epost" type="email" required /> <input name="telefon" /> <textarea name="melding" required /> {/* Honeypot - skjult for mennesker */} <input name="honeypot" style={{display: 'none'}} tabIndex={-1} /> <button type="submit">Send</button> </form> ) }
Resend koster 20 dollar/mnd for 50 000 e-poster (eller gratis opp til 3000 per måned).
Netlify Forms
Hvis du hoster på Netlify: innebygd skjema-håndtering. Legg til netlify-attributt på HTML-skjemaet, alt fungerer automatisk.
Pris: 100 submissions/mnd gratis, 19 dollar/mnd for 1000.
Spam-beskyttelse
Uansett hvilken løsning du velger, får du spam. Bruk disse teknikker:
- Honeypot-felt. Usynlig felt som mennesker ikke ser. Hvis det er utfylt, er det bot.
- Time-to-fill check. Hvis skjemaet fylles ut på under 3 sekunder, er det bot.
- Cloudflare Turnstile. Gratis CAPTCHA-erstatning, ingen brukervennlighetsproblemer.
- hCaptcha. GDPR-vennlig alternativ til Google reCAPTCHA.
Anbefaling
For 95% av norske bedriftssider: bruk Formspree eller Tally. Gratis-planene dekker typisk trafikk, du slipper å skrive kode, og du får e-post til innboksen med én gang noen kontakter deg.
Hvis du har mange submissions og vil kutte kostnader, bygg native med Resend etter at du har validert at folk faktisk bruker skjemaet.