WPForms, Contact Form 7, Gravity Forms — WordPress pluginy pro formuláře jsou populární, ale přinášejí zbytečnou zátěž: zpomalují web, vyžadují pravidelné aktualizace a bez správně nastaveného SMTP serveru e-maily spolehlivě nedorazí. Existuje elegantnější cesta.

Služba Formspree funguje jako backend pro váš vlastní HTML formulář — napíšete kód, vložíte svůj endpoint a zprávy chodí přímo do e-mailu. Žádný plugin, žádná konfigurace SMTP, žádné záhadné problémy s doručováním.

Proč formulář bez pluginu?
  • Rychlejší web — žádný extra JavaScript ani CSS, které plugin nahraje na každou stránku
  • Spolehlivé doručování — Formspree má vlastní infrastrukturu, ne váš sdílený hosting
  • Nulová údržba — není co aktualizovat, není co konfigurovat
  • Spam ochrana — honeypot a volitelná reCAPTCHA integrovaná v Formspree

01 Registrace a nastavení Formspree

1

Vytvořte účet

Přejděte na formspree.io a klikněte na Start for free. Registrace přes Google trvá 30 sekund.

2

Ověřte e-mailovou adresu

V sekci Account → Linked Emails přidejte e-mail, na který chcete zprávy dostávat, a potvrďte ho kliknutím v ověřovacím e-mailu.

3

Vytvořte formulář a zkopírujte endpoint

Klikněte na New Form, pojmenujte ho (např. „Kontakt — honsdavid.cz") a zkopírujte váš unikátní endpoint ve tvaru https://formspree.io/f/xxxxxxxx.

02 Kód formuláře

Vložte tento kód do HTML widgetu v Elementoru nebo přímo do editoru stránky „Kontakt". Nahraďte endpoint svým vlastním.

HTML — formulář
<form action="https://formspree.io/f/xjkaaeyw" method="POST"
      style="display:flex;flex-direction:column;gap:15px;max-width:600px;margin:auto;">

  <input type="text" name="name"
    placeholder="Vaše jméno *" required
    style="padding:12px;border:1px solid #ccc;border-radius:6px;">

  <input type="email" name="email"
    placeholder="Váš e-mail *" required
    style="padding:12px;border:1px solid #ccc;border-radius:6px;">

  <input type="text" name="subject"
    placeholder="Předmět"
    style="padding:12px;border:1px solid #ccc;border-radius:6px;">

  <textarea name="message"
    placeholder="Vaše zpráva *" required
    style="padding:12px;border:1px solid #ccc;border-radius:6px;min-height:130px;"></textarea>

  <!-- honeypot anti-spam -->
  <input type="text" name="_gotcha" style="display:none">

  <button type="submit"
    style="background:#1a6b3c;color:white;padding:14px;border:none;
           border-radius:6px;cursor:pointer;font-weight:700;font-size:15px;">
    Odeslat zprávu
  </button>
</form>

Oproti originálnímu kódu je přidáno pole subject (předmět zprávy — přehlednější v e-mailu) a honeypot pole _gotcha, které je neviditelné pro lidi, ale chytne základní boty.

03 JavaScript potvrzení odeslání

Místo přesměrování na výchozí Formspree stránku si zobrazíme vlastní potvrzení přímo na webu. Vložte tento skript za formulář:

JavaScript — async odeslání
<script>
const form = document.querySelector('form[action*="formspree"]');

form.addEventListener('submit', async (e) => {
  e.preventDefault();

  const btn = form.querySelector('button[type="submit"]');
  btn.textContent = 'Odesílám…';
  btn.disabled = true;

  const data = new FormData(form);

  try {
    const response = await fetch(form.action, {
      method: 'POST',
      body: data,
      headers: { 'Accept': 'application/json' }
    });

    if (response.ok) {
      form.innerHTML = `
        <div style="text-align:center;padding:32px;color:#1a6b3c;">
          <div style="font-size:40px;margin-bottom:12px;">✓</div>
          <strong>Zpráva odeslána!</strong><br>
          Ozvu se vám do 24 hodin.
        </div>`;
    } else {
      btn.textContent = 'Odeslat zprávu';
      btn.disabled = false;
      alert('Při odesílání došlo k chybě. Zkuste to prosím znovu.');
    }
  } catch {
    btn.textContent = 'Odeslat zprávu';
    btn.disabled = false;
    alert('Chyba připojení. Zkuste to prosím znovu.');
  }
});
</script>

Skript při odeslání deaktivuje tlačítko (zabrání dvojitému odeslání), po úspěchu nahradí celý formulář potvrzovací zprávou a při chybě ho znovu aktivuje.

04 Otestování a ověření

Checklist po vložení formuláře
  • Vyplňte testovací údaje a odešlete zprávu
  • Zkontrolujte doručení e-mailu (včetně složky Spam nebo Promotions)
  • Ověřte, že se zobrazí potvrzovací hláška na webu
  • Ve Formspree účtu zkontrolujte záznam v sekci Submissions
  • Zkuste odeslat prázdný formulář — required pole by měla bránit odeslání
Free plán — limit

Bezplatný plán Formspree dovoluje 50 zpráv měsíčně. Pro většinu živnostníků a menších webů naprosto dostačující. Potřebujete-li víc, základní placený plán (Gold) stojí kolem 8 USD/měsíc a limit zvedne na 1 000 zpráv.

Chcete pomoci s nastavením webu nebo formuláře?

Pomohu vám s úpravou, designem nebo kompletní péčí o WordPress web — od rychlosti přes SEO po kontaktní formulář.

Nezávazně mě kontaktujteodpovídám do 24 hodin

Nejčastější dotazy

Je Formspree zdarma? +
Základní verze je zdarma — umožňuje přijmout až 50 zpráv měsíčně a neomezený počet formulářů. Pro vyšší limity a funkce jako vlastní potvrzovací e-mail nebo pokročilý spam filter lze přejít na Gold plán (~8 USD/měsíc).
Funguje Formspree s Elementorem a GeneratePress? +
Ano, bez problémů. Formulář je čistý HTML kód — je kompatibilní s jakoukoliv šablonou nebo page builderem. Vložte ho do HTML widgetu v Elementoru nebo do bloku vlastního HTML v jakémkoliv editoru.
Co když e-mail nepřijde? +
Nejprve zkontrolujte, zda máte ověřenou e-mailovou adresu ve Formspree účtu. Pak zkontrolujte složky Spam, Promotions nebo Junk. Všechna odeslání jsou viditelná přímo v administraci Formspree — takže poznáte, zda zpráva dorazila na servery Formspree, nebo zda k problému došlo dříve.
Jak přidat ochranu proti spamu? +
Základní ochrana je honeypot pole (obsaženo v kódu výše — skryté pole, které lidé nevyplní, ale boti ano). Formspree navíc filtruje zjevný spam automaticky. Pro silnější ochranu lze přidat Google reCAPTCHA v2 — Formspree ji nativně podporuje na placených plánech.
Mohu formulář stylovat podle designu svého webu? +
Samozřejmě. Formspree akceptuje jakýkoliv HTML formulář — celý design, barvy, velikosti a rozložení jsou plně ve vaší kontrole přes CSS nebo inline styly. Změňte barvu tlačítka, přidejte border-radius, font — formulář je váš.