Kontaktný formulár vo WordPresse: nastavenie, aby správy naozaj chodili
Ako nastaviť kontaktný formulár vo WordPresse tak, aby správy nekončili v spame: Contact Form 7, SMTP, Reply-To, Flamingo, Turnstile a GDPR. Celý postup sme otestovali.
Kontaktný formulár na webe vyzerá ako maličkosť. Kým ho však niekto neotestuje, často nikto nevie, či správy naozaj prichádzajú. Môžu končiť v spame, odpoveď môže ísť na zlú adresu alebo ich zahltia roboty. Celý postup sme si prešli na testovacom WordPresse s pluginom Contact Form 7 a každý krok odfotili. Vrátane chýb, na ktoré sme pri tom narazili.
Krátka odpoveď
- Na bežný formulár stačí bezplatný plugin Contact Form 7. Podľa WordPress.org má viac ako 10 miliónov aktívnych inštalácií.
- V nastavení e-mailu dajte do poľa Od adresu na vašej doméne. Adresu návštevníka vložte do hlavičky Reply-To. Presne tak to odporúča autor pluginu (Contact Form 7).
- Poštu posielajte cez SMTP schránku na vašej doméne, napríklad pluginom WP Mail SMTP. Na doméne majte nastavené SPF, DKIM a DMARC. Gmail od februára 2024 vyžaduje od všetkých odosielateľov aspoň SPF alebo DKIM (Google).
- Contact Form 7 správy nikam neukladá. Kópie vám bude ukladať plugin Flamingo (Contact Form 7).
- Proti robotom zapnite Cloudflare Turnstile. V našom teste prešlo bez ochrany 20 z 20 automatických odoslaní. Po zapnutí Turnstile neprešlo ani jedno.
- Pre bežný dopyt netreba zaškrtávacie políčko so súhlasom. Stačí krátka informácia s odkazom na zásady ochrany osobných údajov. Súhlas potrebujete až na marketing.
Nechcete to nastavovať sami? DigitalMinds vám formulár nastaví, otestuje doručovanie a skontroluje DNS záznamy domény. Pokojne nám napíšte.
Testovacie prostredie
Všetko sme robili na lokálnom testovacom webe „Kvetinárstvo Test“, nie na živej stránke. Bežal na slovenskom WordPresse 7.1.4 s PHP 8.4 a témou Twenty Twenty-Five. Použili sme Contact Form 7 6.2.4.1, Flamingo 2.6.4 a WP Mail SMTP 4.10.3. Namiesto skutočného poštového servera sme použili testovací SMTP server Mailpit. Ten správy zachytí a zobrazí, ale nikam ich neodošle. DNS záznamy SPF, DKIM a DMARC sme preto nastaviť ani overiť nemohli. Popisujeme ich podľa dokumentácie Google a Microsoftu.
Ak WordPress ešte nemáte, pomôže vám návod ako nainštalovať WordPress. Pred inštaláciou nových pluginov si web zálohujte. Ako na to, nájdete v článku ako zálohovať WordPress.
Ktorý plugin na formulár vybrať
Formulárových pluginov je veľa. Pre jednoduchý formulár s menom, e-mailom a správou stačí ktorýkoľvek z najznámejších. Contact Form 7 sme vybrali, lebo je zadarmo bez platenej verzie a pri formulároch je najrozšírenejší. Má aj vlastné doplnky na ukladanie správ (Flamingo) a ochranu proti spamu (Turnstile). Nevýhodou je, že formulár sa skladá z krátkych značiek a nie ťahaním myšou. Ak chcete drag-and-drop editor, pozrite si WPForms Lite alebo Fluent Forms. Postup pre e-mail a DNS je potom rovnaký.

Postup krok za krokom
Krok 1: Nainštalujte Contact Form 7
V administrácii otvorte Pluginy → Pridať plugin a vyhľadajte „contact form 7“. Pri pluginu od autora Rock Lobster Inc. kliknite na Inštalovať teraz a potom na Aktivovať. V menu pribudne položka Kontakt. Rovnako nainštalujte aj Flamingo a WP Mail SMTP, budeme ich potrebovať neskôr.

Krok 2: Upravte šablónu formulára
V menu Kontakt → Pridať kontaktný formulár dostanete predvolenú šablónu. V slovenskej verzii obsahuje povinné pole Predmet, ale samotná správa je označená ako voliteľná. My sme to otočili. Predmet sme vyhodili, lebo ho návštevníci aj tak nevypĺňajú zmysluplne. Správu sme dali ako povinnú. Pridali sme nepovinný telefón a pod formulár vetu s odkazom na zásady ochrany osobných údajov. Hviezdička pri značke (napríklad text*) znamená povinné pole.
<label> Meno a priezvisko
[text* your-name autocomplete:name] </label>
<label> E-mail
[email* your-email autocomplete:email] </label>
<label> Telefón (nepovinné)
[tel your-phone autocomplete:tel] </label>
<label> S čím vám môžeme pomôcť?
[textarea* your-message] </label>
<p class="form-info">Údaje použijeme len na odpoveď na vašu správu.
Viac v <a href="/ochrana-sukromia/">zásadách ochrany osobných údajov</a>.</p>
[turnstile size:flexible]
[submit "Odoslať správu"]
Značku [turnstile] pridáte až v kroku 9. Bez nej Contact Form 7 vloží overenie na začiatok formulára. My sme ho chceli mať tesne nad tlačidlom.

Krok 3: Nastavte, kam a od koho príde e-mail
Na karte Email sa rozhoduje, či vám správy budú chodiť. Skúsili sme najprv chybu, ktorú vidíme na weboch často: do poľa Od sme dali adresu na Gmaile. Contact Form 7 hneď ukázal varovanie „Adresa odosielateľa nepatrí k doméne tejto webovej stránky“. Takú správu vie prijímajúci server odmietnuť alebo presunúť do spamu, lebo váš web nemá právo posielať poštu za Gmail.

Správne nastavenie z nášho testu:
- Komu: schránka, ktorú naozaj čítate (u nás
objednavky@kvetinarstvo-test.sk). - Od:
Web Kvetinárstvo Test <formular@kvetinarstvo-test.sk>. Teda existujúca adresa na doméne webu. - Predmet:
Nová správa z webu od [your-name]. Správy z formulára tak v schránke ľahko nájdete. - Dodatočné hlavičky:
Reply-To: [your-name] <[your-email]>. Keď v pošte kliknete na Odpovedať, odpoveď pôjde návštevníkovi, nie späť na váš web.
Contact Form 7 vo svojej dokumentácii odporúča presne toto: adresu odosielateľa na rovnakej doméne ako web a e-mail návštevníka v hlavičke Reply-To (Contact Form 7).

Krok 4: Vložte formulár na stránku Kontakt
Po uložení dostanete krátky kód, napríklad [contact-form-7 id="7ea0c2c" title="Kontaktný formulár"]. Vložte ho na stránku Kontakt do bloku Krátky kód a stránku aktualizujte. Prázdny formulár sme potom skúsili odoslať. Povinné polia sa správne označili ako nevyplnené.
Krok 5: Otestujte odoslanie
Pri prvom skutočnom odoslaní sa zobrazilo „Pri pokuse odoslať správu nastala chyba“. Na našom testovacom serveri nebol nastavený poštový program, takže funkcia PHP mail() nemala čím poslať e-mail. Na hostingu to môže dopadnúť podobne, alebo e-mail síce odíde, no bez overenia domény skončí v spame. Preto e-mail vždy posielajte cez skutočnú schránku (krok 6).

Ako sme si neskôr všimli, WP Mail SMTP túto chybu zachytil aj spätne. Po aktivácii ukázal upozornenie, že posledný e-mail sa nepodarilo odoslať, aj s chybou „Could not instantiate mail function“.

Krok 6: Posielajte poštu cez SMTP
V menu WP Mail SMTP → Nastavenia vyplňte Email odosielateľa a Meno odosielateľa. Prepínač Force From Email bol zapnutý už po inštalácii. To znamená, že WP Mail SMTP prepíše adresu Od zo všetkých pluginov, aj z Contact Form 7. Preto tu musí byť rovnaká adresa ako v kroku 3. Inak sa budete čudovať, prečo vaše nastavenie vo formulári neplatí.

Ako Mailer sme zvolili Other SMTP a vyplnili údaje schránky. Na hostingu ich nájdete v správe e-mailov: adresu SMTP servera, port (zvyčajne 465 pre SSL alebo 587 pre TLS), prihlasovacie meno (celá e-mailová adresa) a heslo. V teste sme mali lokálny server bez šifrovania, na skutočnom hostingu vyberte TLS alebo SSL. WP Mail SMTP upozorňuje, že niektoré hostingy porty SMTP blokujú. Pri Gmaile zase potrebujete heslo aplikácie, ktoré vyžaduje dvojstupňové overenie (WP Mail SMTP).

Heslo sa ukladá do databázy. Plugin píše, že ho šifruje, ale bezpečnejšie je dať ho do súboru wp-config.php ako konštantu. Postup je v dokumentácii WP Mail SMTP.
Krok 7: Pošlite testovací e-mail
V WP Mail SMTP → Tools → Email Test sme poslali skúšobný e-mail. Odišiel, no plugin zároveň skontroloval doménu a ohlásil, že chýba záznam SPF a odporúča DMARC. U nás je to v poriadku, testovacia doména neexistuje. Ak to isté uvidíte na živom webe, pokračujte časťou o DNS nižšie.

Potom sme formulár vyplnili znova ako návštevníčka „Jana Testová“. Tentoraz sa zobrazilo „Ďakujeme za vašu správu. Bola odoslaná.“ V zachytenom e-maile je odosielateľ na doméne webu a v Reply-To je e-mail návštevníčky. Presne tak, ako má byť.

Krok 8: Ukladajte kópie správ vo Flamingo
Contact Form 7 sám správy neukladá (Contact Form 7). Ak e-mail neprejde, dopyt sa stratí. Po aktivácii pluginu Flamingo sa každá správa uloží aj v administrácii pod Flamingo → Prichádzajúce správy. Uložili sa aj dve správy z kroku 5, keď e-mail zlyhal. Mali však predmet „[your-subject]“, lebo náš formulár pole predmet nemá. Opravili sme to na karte Dodatočné nastavenia riadkom flamingo_subject: "Správa z webu od [your-name]".

Správy obsahujú osobné údaje. Staré správy preto pravidelne mažte a v zásadách ochrany osobných údajov uveďte, ako dlho ich uchovávate.
Krok 9: Zapnite ochranu proti spamu (Turnstile)
Contact Form 7 má od verzie 6.1 zabudovanú integráciu Cloudflare Turnstile. Autor pluginu ju odporúča namiesto reCAPTCHA (Contact Form 7). Turnstile väčšinou nič nežiada, návštevník nevyberá obrázky. Základný plán je zadarmo, do 20 widgetov na účet (Cloudflare).
Postup: v účte Cloudflare otvorte Turnstile, pridajte widget pre vašu doménu a skopírujte Site Key a Secret Key. Vo WordPresse ich vložte do Kontakt → Integrácia → Turnstile → Nastaviť integráciu. V teste sme použili testovacie kľúče Cloudflare, ktoré fungujú aj na lokálnom počítači a overenie vždy pustia (Cloudflare). Na živom webe používajte vlastné kľúče.


Potom sme ochranu vyskúšali. Napísali sme jednoduchý skript, ktorý posiela formulár priamo na adresu, kam ho odosiela aj prehliadač, teda REST API Contact Form 7. Takto môže pracovať jednoduchý spamový robot, ktorý nespúšťa JavaScript. Skript poslal 20 správ bez ochrany a 20 správ so zapnutým Turnstile. Bez ochrany prešlo do schránky všetkých 20. S Turnstile neprešla žiadna. Contact Form 7 ich označil ako spam a Flamingo ich uložil do priečinka Spam. Skúšobná správa z bežného prehliadača sa s Turnstile odoslala normálne.


Turnstile overuje návštevníka cez službu Cloudflare. Spomeňte to v zásadách ochrany osobných údajov rovnako ako ostatné externé služby. Ak riešite aj cookies, pomôže vám článok cookie lišta vo WordPresse.
SPF, DKIM a DMARC: čo nastaviť na doméne
Tieto tri DNS záznamy hovoria cudzím poštovým serverom, že e-mail z vašej domény naozaj poslal váš server. Gmail od 1. 2. 2024 vyžaduje od všetkých odosielateľov aspoň SPF alebo DKIM. Kto pošle viac ako 5 000 správ denne, potrebuje všetky tri (Google). Outlook.com od 5. 5. 2025 vyžaduje SPF, DKIM a DMARC od domén s 5 000 a viac správami. Nevyhovujúce správy odmieta s chybou 550 5.7.515 (Microsoft). Formulár malej firmy sa k takému objemu zvyčajne nepriblíži. Rovnaká doména však posiela aj faktúry, ponuky a bežnú poštu, preto sa záznamy oplatí mať.
| Záznam | Na čo slúži | Kde ho vziať |
|---|---|---|
| SPF (TXT na doméne) | Zoznam serverov, ktoré smú posielať poštu za vašu doménu. | Hodnotu dá poskytovateľ e-mailu alebo hostingu. Doména má mať jediný SPF záznam (RFC 7208). |
| DKIM (TXT na selektore) | Digitálny podpis každej správy. | Kľúč vygenerujete v administrácii e-mailu a záznam pridáte do DNS. |
| DMARC (TXT na _dmarc) | Pravidlo, čo robiť so správou, ktorá neprejde SPF ani DKIM, a kam posielať hlásenia. | Začína sa mierne, napríklad v=DMARC1; p=none. Tento príklad uvádza aj Microsoft. |
Tabuľku môžete posunúť do strany.
Tieto záznamy sme v teste neoverovali, testovacia doména žiadne DNS nemá. Konkrétne hodnoty závisia od vášho poskytovateľa e-mailu, preto ich nekopírujte z iného webu.
GDPR: informácia áno, povinné zaškrtávacie políčko nie
Nie sme právnici, toto je prehľad pre bežný kontaktný formulár. Keď vám niekto napíše dopyt, údaje spracúvate preto, aby ste mu mohli odpovedať. Ako právny základ sa pritom uvádzajú opatrenia pred uzavretím zmluvy na žiadosť človeka alebo oprávnený záujem, podľa čl. 6 ods. 1 písm. b) alebo f) GDPR. Súhlas sa na to zvyčajne nepoužíva (GDPR Academy, ÚOOÚ SR). Čl. 13 GDPR však vyžaduje, aby ste ľudí už pri získavaní údajov informovali. Na to slúži veta pod formulárom s odkazom na zásady ochrany osobných údajov.
Ak chcete posielať aj newsletter alebo ponuky, pridajte samostatné nepovinné políčko. Contact Form 7 na to má značku [acceptance] s voľbou optional (Contact Form 7). Políčko nesmie byť vopred zaškrtnuté. Podľa odôvodnenia 32 GDPR predzaškrtnuté políčko nie je súhlas (GDPR).
Najčastejšie problémy a riešenia
| Čo vidíte | Pravdepodobná príčina | Čo spraviť |
|---|---|---|
| „Pri pokuse odoslať správu nastala chyba“ | Server nevie odoslať poštu (u nás „Could not instantiate mail function“). | Nastavte SMTP v WP Mail SMTP (krok 6). |
| Formulár hlási „odoslaná“, ale nič neprišlo | E-mail skončil v spame alebo ho server odmietol. | Pozrite spam, adresu Od na doméne, SPF, DKIM a DMARC. Kópiu správy nájdete vo Flamingo. |
| Odpoveď ide na vlastnú adresu webu | Chýba hlavička Reply-To. | Doplňte Reply-To: [your-name] <[your-email]> (krok 3). |
| Zmena adresy Od vo formulári sa neprejaví | WP Mail SMTP má zapnuté Force From Email. | Nastavte rovnakú adresu vo WP Mail SMTP. |
| Desiatky spamových správ denne | Formulár nemá ochranu proti robotom. | Zapnite Turnstile (krok 9) a raz za čas pozrite priečinok Spam vo Flamingo. |
| Vo Flamingo je predmet „[your-subject]“ | Formulár nemá pole predmet. | Pridajte flamingo_subject do Dodatočných nastavení. |
Tabuľku môžete posunúť do strany.
Ak formulár zrazu začne posielať správy, ktoré ste nenapísali, alebo sa na webe objavia cudzie odkazy, nemusí ísť o spam z formulára. Web môže byť napadnutý. Ako to spoznať, píšeme v článku vírus na WordPresse: ako ho nájsť. Odvírenie webu vieme urobiť aj za vás.
Kedy to nechať na nás
Samotný formulár si podľa tohto návodu zvládnete nastaviť aj sami. Viac práce dá e-mail na doméne, DNS záznamy a testovanie doručovania do Gmailu aj Outlooku. DigitalMinds vám to celé nastaví a vyskúša. Každý nový web v balíku Web Štart za 690 € má kontaktný formulár v cene. Ak už web máte, o pluginy, aktualizácie a zálohy sa postaráme v rámci údržby za 49 € mesačne, alebo za 79 € mesačne aj s hostingom. Náš WordPress hosting stojí od 2,99 € mesačne. Udržiavame ho stále aktuálny a má v cene SSL aj e-mailovú schránku na vašej doméne, takže je z čoho posielať formuláre. Všetky ceny nájdete v cenníku.
Napíšte nám cez kontaktný formulár alebo na info@digitalminds.sk. Na bezplatnej 30-minútovej konzultácii spolu pozrieme, prečo vám správy z webu nechodia, a navrhneme, čo s tým.
Časté otázky
Prečo mi neprichádzajú správy z kontaktného formulára?
Najčastejšie preto, že web posiela e-maily cez PHP mail() bez overenia domény, alebo je v poli Od adresa z inej domény, napríklad Gmail. Nastavte SMTP schránku na doméne webu, SPF, DKIM a DMARC. Zapnite aj Flamingo, aby sa vám žiadna správa nestratila.
Potrebujem pri kontaktnom formulári zaškrtávacie políčko so súhlasom GDPR?
Pri bežnom dopyte spravidla nie. Stačí krátka informácia s odkazom na zásady ochrany osobných údajov. Samostatné, vopred nezaškrtnuté políčko potrebujete, ak chcete údaje použiť aj na marketing, napríklad newsletter.
Je Contact Form 7 zadarmo?
Áno, Contact Form 7, Flamingo aj WP Mail SMTP v základnej verzii sú zadarmo. Turnstile má bezplatný plán. Platíte len za e-mailovú schránku, ak ju nemáte v hostingu.
Turnstile alebo reCAPTCHA?
Obe fungujú. Autor Contact Form 7 odporúča Turnstile a návštevníci pri ňom väčšinou nič nevyberajú. V našom teste zastavil všetkých 20 automatických odoslaní. Pri reCAPTCHA v3 treba počítať s tým, že beží na službách Google.
Môžem do poľa Od dať e-mail návštevníka?
Nie. Váš server nesmie posielať poštu v mene cudzej domény a takú správu môže príjemca odmietnuť. Do poľa Od patrí adresa na vašej doméne a e-mail návštevníka do hlavičky Reply-To.
Zdroje
- Contact Form 7: Best practice to set up mail
- Contact Form 7: Saving submitted messages with Flamingo
- Contact Form 7: Turnstile integration
- Contact Form 7: Acceptance checkbox
- Cloudflare: Turnstile – Testing (testovacie kľúče) a Turnstile – Plans
- Google: Email sender guidelines
- IETF: RFC 7208 – Sender Policy Framework (SPF), časť 3.2
- Microsoft: Fix NDR error 550 5.7.515 in Outlook.com
- WP Mail SMTP: How to Set Up the Other SMTP Mailer
- EUR-Lex: Nariadenie (EÚ) 2016/679 (GDPR), čl. 6, čl. 13 a odôvodnenie 32
- ÚOOÚ SR: Metodické usmernenie č. 2/2018 – Zákonnosť spracúvania
- GDPR Academy: Právny základ spracúvania údajov v kontaktnom formulári
- WordPress.org Plugin API: aktívne inštalácie pluginov (stav 3. 11. 2026; rovnako pre wpforms-lite, wp-mail-smtp, flamingo, fluentform, forminator, ninja-forms)
- Vlastný test DigitalMinds, 3. 11. 2026: WordPress 7.1.4 (sk_SK), PHP 8.4, Contact Form 7 6.2.4.1, Flamingo 2.6.4, WP Mail SMTP 4.10.3, Mailpit 1.33, lokálny testovací server.
Potrebujete web, ktorý bude váš?
Na 30-minútovej konzultácii povieme, či stačí firemný web od 690 €, Business, e-shop, alebo niečo iné. Konzultácia je zdarma.