E-mail dla frontend developerów
Wysyłaj e-maile prosto z frontendu.Płać za szczyty, a nie przez cały rok.
Podłącz dostawcę poczty, którego już używasz, zbuduj szablony HTML z typowanymi parametrami i wywołaj send() z przeglądarki. Gdy sezonowy ruch przerośnie Twój limit, nic nie przepada – wiadomości czekają w kolejce wstrzymanych i wychodzą, gdy tylko doładujesz kredyty.
Plan Free z 300 e-maili miesięcznie. Bez karty płatniczej.
contact.js
import { init, sendForm } from '@frontmail/browser';
init({ publicKey: 'pk_live_2Jx8…' });
const form = document.querySelector('#contact');
form.addEventListener('submit', async (event) => {
event.preventDefault();
const { status } = await sendForm('svc_default', 'tpl_contact', form);
// 'queued' – or 'held' when you're out of credits. Never dropped.
});ContactForm.tsx
import { FrontmailProvider, useSendEmail } from '@frontmail/react';
function ContactForm() {
const { send, status } = useSendEmail('svc_default', 'tpl_contact');
return (
<form
onSubmit={(event) => {
event.preventDefault();
const { email, message } = Object.fromEntries(new FormData(event.currentTarget));
send({ email, message });
}}
>
<input name="email" type="email" required />
<textarea name="message" required />
<button disabled={status === 'sending'}>Send</button>
</form>
);
}
const options = { publicKey: 'pk_live_2Jx8…' };
// <FrontmailProvider options={options}><ContactForm /></FrontmailProvider>ContactForm.vue
<script setup lang="ts">
import { reactive } from 'vue';
import { useSendEmail } from '@frontmail/vue';
const { send, status } = useSendEmail('svc_default', 'tpl_contact');
const form = reactive({ email: '', message: '' });
</script>
<template>
<form @submit.prevent="send(form)">
<input v-model="form.email" type="email" required />
<textarea v-model="form.message" required />
<button :disabled="status === 'sending'">Send</button>
</form>
</template>ContactForm.svelte
<script lang="ts">
import { createFrontmail, frontmailForm } from '@frontmail/svelte';
const frontmail = createFrontmail({ publicKey: 'pk_live_2Jx8…' });
const { status } = frontmail;
</script>
<form use:frontmailForm={{ serviceId: 'svc_default', templateId: 'tpl_contact', frontmail }}>
<input name="email" type="email" required />
<textarea name="message" required></textarea>
<button disabled={$status === 'sending'}>Send</button>
</form>order-confirmation.ts
import { Frontmail } from '@frontmail/node';
const frontmail = new Frontmail({ privateKey: process.env.FRONTMAIL_PRIVATE_KEY });
await frontmail.send({
serviceId: 'svc_transactional',
templateId: 'tpl_order_confirmation',
params: {
customer_name: 'Jana',
order_id: 'A-1042',
items: [{ title: 'Ceramic mug', qty: 2 }],
},
});Jak to działa
Od formularza do skrzynki w trzech krokach
Podłącz usługę
SMTP, Gmail, Outlook albo dostawca transakcyjny, np. Mailgun, Postmark czy SES. Dane dostępowe są szyfrowane i codziennie sprawdzane.
Zaprojektuj szablon HTML
Pisz pełny HTML z Handlebars, definiuj typowane parametry i oglądaj podgląd na żywo – na desktopie, telefonie, w jasnym i ciemnym motywie.
Wysyłaj ze swojego kodu
Wywołaj send() z kluczem publicznym w dowolnym frameworku – albo z serwera z kluczem prywatnym. Ponowienia i idempotencja są wbudowane.
Żaden e-mail nie ginie
Brak kredytów nigdy nie oznacza utraty wiadomości
Limity się kończą, a tokeny OAuth wygasają. Frontmail traktuje jedno i drugie jako powód, żeby poczekać – nigdy jako powód, żeby wyrzucić e-mail.
frontmail.send()- Są dostępne kredyty?
- TakW kolejce i wysłanyNajpierw limit miesięczny, potem pakiet, który wygasa najwcześniej.
- NieBufor debetu+10% limitu miesięcznego w planach płatnych, rozliczane na kolejnej fakturze.
- Wstrzymany, nie odrzuconyAPI odpowiada 202 ze statusem "held". Wiadomości czekają do 3 dni w planie Free lub do 14 dni w planach płatnych.
- Zwalniane automatycznieZakup pakietu, automatyczne doładowanie, wyższy plan albo nowy okres rozliczeniowy wysyła wstrzymane wiadomości – od najstarszej.
- Dostawca odrzuca Twoje dane dostępowe?
- Przejmuje usługa zapasowaSzablon może wskazać usługę zapasową na wypadek błędów uwierzytelniania lub trwałych.
- Wstrzymane do naprawyBez usługi zapasowej wiadomości są wstrzymywane i wysyłane ponownie, gdy usługa znów działa.
Kolejka wstrzymanych wiadomości
Brak kredytów? Żądanie zostaje przyjęte i zapisane. Zanim cokolwiek wygaśnie, dostaniesz e-mail, a wstrzymane wiadomości możesz hurtowo zwolnić lub odrzucić.
Bufor debetu
Plany płatne dostają 10% limitu miesięcznego jako bufor, więc w nieco bardziej pracowitym miesiącu wysyłka po prostu trwa dalej.
Automatyczne doładowanie
Wybierz pakiet i próg – albo doładuj przy pierwszej wstrzymanej wiadomości. Limity wydatków chronią Twoją kartę przed niespodziankami.
Kontrole stanu i failover
Każda usługa jest sprawdzana codziennie i przy każdym błędzie uwierzytelniania. Niedziałające dane dostępowe uruchamiają alert, baner w panelu i usługę zapasową.
Powiadomienia o zużyciu przy 50, 80 i 100% oraz przy pierwszej wstrzymanej wiadomości.
Pakiety kredytów
Zostań przy małym planie. Na pracowite miesiące kup pakiety.
Pakiety to jednorazowe zakupy ważne od 3 do 12 miesięcy i działają w każdym planie, także Free. Wpisz spodziewaną liczbę e-maili w każdym miesiącu, a znajdziemy najtańsze połączenie.
5000 e-maili
ważny 3 miesiące
10 €
2 € za 1000
Kup ten pakiet25 000 e-maili
ważny 6 miesięcy
39 €
1,56 € za 1000
Kup ten pakiet100 000 e-maili
ważny 12 miesięcy
129 €
1,29 € za 1000
Kup ten pakiet
Nasza rekomendacja
Plan Free
Pakiety do kupienia
- styczeń: 1× pakiet 5000 e-maili10 €
- marzec: 1× pakiet 25 000 e-maili39 €
- lipiec: 1× pakiet 25 000 e-maili39 €
- grudzień: 1× pakiet 25 000 e-maili39 €
- Plan
- 0 €
- Pakiety
- 127 €
- Razem za rok
- 127 €
Plan pokrywający przez cały rok Twój szczyt 25 000 e-maili (Business 50k) kosztowałby 468 €. Oszczędzasz 341 € (73%).
Zacznij za darmoFunkcje
Wszystko, czego potrzebuje formularz kontaktowy – i dużo więcej
Szablony HTML z podglądem na żywo
Pełny HTML, warunki i pętle Handlebars, typowane parametry z walidacją, wersje z porównaniem zmian i przywracaniem.
Twój dostawca, Twoja reputacja
SMTP, Gmail, Outlook, Mailgun, SES, Postmark, Mailjet, Brevo i Resend, z usługą zapasową dla każdego szablonu.
Wbudowana ochrona przed spamem
Cloudflare Turnstile na wszystkich formularzach jednym kliknięciem, lista dozwolonych domen, limity na IP i na klucz, blokowanie przeglądarek headless i alerty o anomaliach.
Przeszukiwalna historia
Wyrenderowana treść, parametry i oś zdarzeń każdej wiadomości. Ponowna wysyłka jednym kliknięciem, eksport do CSV.
Śledzenie doręczeń
Doręczone, odbite, zgłoszone jako spam, otwarte i kliknięte – prosto z webhooków Twojego dostawcy, a twarde odbicia trafiają automatycznie na listę wykluczeń.
Zespoły, role i MFA
Zapraszaj współpracowników z rolami: właściciel, administrator, programista, obserwator lub płatności. TOTP, kody zapasowe i dziennik audytu dla wrażliwych operacji.
SDK z typowanymi parametrami
Vanilla JS, React, React Native, Vue, Svelte i Node. Uruchom npx frontmail types, a Twój edytor zna każdy parametr szablonu.
Błędy, które same się tłumaczą
Jeden format błędów z kodem, komunikatem i linkiem do dokumentacji. SDK ponawiają błędy sieci i 5xx, nie wysyłając niczego dwa razy.
Dostawcy
Działa z usługą e-mail, którą już masz
Prywatne skrzynki dla małych stron, dostawcy transakcyjni dla większej skali – a w dokumentacji instrukcja krok po kroku dla każdego z nich.
- SMTPOnet, WP, Zoho, własny serwer…SMTP
- GmailOAuth
- Outlook / Microsoft 365OAuth
- Amazon SESAPI
- MailgunEU / USAPI
- PostmarkAPI
- MailjetAPI
- BrevoAPI
- ResendAPI
Dlaczego nie wywołać API dostawcy bezpośrednio?
Amazon SES, Mailgun, Postmark czy Gmail API dostarczą wiadomość. Wszystko wokół publicznego formularza – klucze, boty, awarie, szablony, historia – zostaje jednak po stronie twojego backendu. Frontmail jest tym backendem i dalej wysyła przez twojego dostawcę.
| Czego potrzebujesz | Samo API dostawcy | Z Frontmailem |
|---|---|---|
| Wysyłka ze strony lub aplikacji mobilnej | Wymaga tajnego klucza API albo tokenu OAuth, który nie może trafić do przeglądarki – więc budujesz i utrzymujesz własny backend. | Klucz publiczny i SDK dla webu, React Native, Kotlina i Swifta. Żadnego serwera do pisania i pilnowania. |
| Ochrona publicznego formularza przed botami | CAPTCHA, rate limity i sprawdzanie pochodzenia musi dodać twój backend. | Turnstile, dozwolone domeny, limity na IP i klucz oraz zablokowana treść zawsze, gdy odbiorcę podaje formularz. |
| Wygasłe dane logowania lub awaria dostawcy | Wysyłka się nie udaje, a o losie wiadomości decyduje twój kod. | Codzienne sprawdzanie usług, usługa zapasowa dla każdego szablonu, a nieudane wiadomości czekają i wychodzą po ponownym połączeniu. |
| Szablony | Każdy dostawca ma własny format i API szablonów – albo HTML siedzi w twoim kodzie. | Edytor HTML z podglądem na żywo, typowane parametry, wersje i warianty językowe. Ten sam szablon działa z każdym dostawcą. |
| Historia i statusy doręczeń | Każdy dostawca raportuje zdarzenia po swojemu (webhooki, powiadomienia SNS), a zapisujesz je sam. | Jedna przeszukiwalna historia ze statusami doręczono, odbito, zgłoszono jako spam, otwarto i kliknięto dla każdego dostawcy. |
| Zmiana dostawcy | Przepisanie integracji. | Przełączasz usługę w panelu – kod zostaje bez zmian. |
Frontmail nie zastępuje twojego dostawcy – wiadomości nadal wychodzą z twojej domeny przez twoje konto. Jeśli masz już backend wysyłający duże wolumeny, bezpośrednie wywołanie dostawcy może wyjść taniej. Nazwy produktów są znakami towarowymi ich właścicieli.
Przejście z EmailJS
Zmień jeden import
Pakiet @frontmail/emailjs-compat udostępnia te same funkcje co @emailjs/browser. Odtwórz usługę i szablon w Frontmail, podmień import i zostaw swój kod.
- 1Podłącz swoją usługę e-mail i zaimportuj HTML szablonu.
- 2Podmień import pakietu i klucze.
- 3Wdróż. Później możesz przejść na @frontmail/browser, żeby mieć typowane parametry.
- import emailjs from '@emailjs/browser';
+ import emailjs from '@frontmail/emailjs-compat';
emailjs.init({ publicKey: 'YOUR_PUBLIC_KEY' });
emailjs
.sendForm('YOUR_SERVICE_ID', 'YOUR_TEMPLATE_ID', '#contact-form')
.then((response) => console.log('SUCCESS', response.status));Porównanie obu usług
| Sytuacja | EmailJS* | Frontmail |
|---|---|---|
| Wyczerpany limit miesięczny | Kolejne żądania nie są wysyłane, dopóki limit się nie odnowi albo nie zmienisz planu. | Żądania są przyjmowane i wstrzymywane do 14 dni (3 dni w planie Free), a po doładowaniu wysyłane automatycznie. |
| Rate limit REST API | 1 żądanie na sekundę. | 2–50 żądań na sekundę zależnie od planu, do tego endpoint do wysyłki zbiorczej. |
| Sezonowy szczyt | Przejście na wyższy plan. | Zostajesz przy swoim planie i kupujesz pakiet kredytów ważny 3–12 miesięcy. |
* Informacje o EmailJS według stanu na wrzesień 2026 r., na podstawie emailjs.com/pricing. EmailJS jest znakiem towarowym swojego właściciela; Frontmail nie jest powiązany z EmailJS.
Porównaj Frontmail z innymi usługamiCennik
Proste plany. Pakiety na szczyty.
Zacznij za darmo, przejdź wyżej, gdy potrzebujesz więcej. Rozliczenie roczne oszczędza 20%.
Free
300 e-maili / mies.
0 €/ mies.
Za darmo na zawsze
Zacznij za darmo- Szablony: 3
- Bez załączników
- Historia: 7 dni
- 1 użytkownik
- Limit żądań: 2/s
- Kolejka wstrzymanych: 3 dni
- Dozwolone domeny i Turnstile
- Stopka „Wysłano przez Frontmail”
Starter
3000 e-maili / mies.
7 €/ mies.
84 € płatne rocznie
Wybierz Starter- Szablony: 10
- Załączniki do 1 MB na żądanie
- Historia: 30 dni
- 1 użytkownik
- Limit żądań: 5/s
- Kolejka wstrzymanych: 14 dni
- Bufor debetu 10%
- Dozwolone domeny i Turnstile
- Najpopularniejszy
Pro
10 000 e-maili / mies.
15 €/ mies.
180 € płatne rocznie
Wybierz Pro- Bez limitu szablonów
- Załączniki do 5 MB na żądanie
- Historia: 90 dni
- Użytkownicy: 5
- Limit żądań: 20/s
- Kolejka wstrzymanych: 14 dni
- Bufor debetu 10%
- Dozwolone domeny i Turnstile
Business
50 000 e-maili / mies.
39 €/ mies.
468 € płatne rocznie
Wybierz Business 50k- Bez limitu szablonów
- Załączniki do 25 MB na żądanie
- Historia: 180 dni
- Bez limitu użytkowników
- Limit żądań: 50/s
- Kolejka wstrzymanych: 14 dni
- Bufor debetu 10%
- Dozwolone domeny i Turnstile
Warianty Business
Pakiety kredytów
Jednorazowy zakup, dostępny w każdym planie. Zużywane po limicie miesięcznym, najpierw te, które wygasają najwcześniej.
Porównaj wszystkie plany
| Plan | Free | Starter | Pro | Business 50k | Business 100k | Business 200k |
|---|---|---|---|---|---|---|
| Cena / mies. | 0 € | 7 € | 15 € | 39 € | 71 € | 127 € |
| E-maile / mies. | 300 | 3000 | 10 000 | 50 000 | 100 000 | 200 000 |
| Szablony | 3 | 10 | Bez limitu | Bez limitu | Bez limitu | Bez limitu |
| Załączniki | – | 1 MB | 5 MB | 25 MB | 25 MB | 25 MB |
| Historia | 7 dni | 30 dni | 90 dni | 180 dni | 180 dni | 180 dni |
| Użytkownicy | 1 | 1 | 5 | Bez limitu | Bez limitu | Bez limitu |
| Rate limit | 2 rps | 5 rps | 20 rps | 50 rps | 50 rps | 50 rps |
| Debet | – | 10% | 10% | 10% | 10% | 10% |
| Kolejka wstrzymanych | 3 dni | 14 dni | 14 dni | 14 dni | 14 dni | 14 dni |
Ceny nie zawierają VAT. Firmy z UE z ważnym numerem VAT UE otrzymują fakturę w mechanizmie odwrotnego obciążenia.
Pytania o rozliczenia
Czy niewykorzystany limit przechodzi na kolejny miesiąc?
Nie – limit miesięczny odnawia się w każdym okresie rozliczeniowym. Z pakietami kredytów jest inaczej: są ważne 3, 6 lub 12 miesięcy, więc kupuj je wtedy, kiedy ich potrzebujesz.
Co się stanie, gdy skończą mi się kredyty?
Plany płatne najpierw korzystają z bufora debetu. Potem nowe wiadomości są wstrzymywane (nie odrzucane) i wychodzą automatycznie, gdy kupisz pakiet, zadziała automatyczne doładowanie, przejdziesz na wyższy plan albo zacznie się nowy okres. Jeśli wolisz twarde błędy, przełącz organizację w tryb odrzucania – API zwróci wtedy 402.
Jak rozliczany jest debet?
Faktycznie wykorzystane kredyty z debetu doliczamy do kolejnej faktury. Niewykorzystany debet nic nie kosztuje.
Czy mogę zmienić lub anulować plan?
Przejście na wyższy plan działa od razu, z proporcjonalną dopłatą. Przejście na niższy plan i anulowanie zaczynają obowiązywać z końcem opłaconego okresu. Kupione pakiety pozostają ważne aż do wygaśnięcia.
W jakiej walucie zapłacę?
Klienci rozliczani w UE płacą w euro, wszyscy pozostali w dolarach amerykańskich. VAT jest naliczany przy płatności na podstawie kraju rozliczenia i numeru VAT.
Jak mogę zapłacić?
Kartą, przez Apple Pay lub Google Pay, a tam, gdzie to możliwe, także poleceniem zapłaty SEPA. Do każdej płatności dostajesz fakturę do pobrania w panelu.
FAQ
Najczęściej zadawane pytania
Czy umieszczenie klucza publicznego we frontendzie jest bezpieczne?
Tak. Klucz publiczny może wysyłać tylko Twoje szablony, tylko z domen na Twojej liście dozwolonych i za Turnstile oraz limitami. Klucze prywatne są wyłącznie dla serwerów i nigdy nie powinny trafić do kodu w przeglądarce.
Czy potrzebuję własnego dostawcy poczty?
Tak – Frontmail wysyła przez usługę, którą podłączysz, więc wiadomości wychodzą z Twojej domeny i na Twoją reputację. Dla małej strony wystarczy prywatne konto Gmail lub Outlook.
Co zawiera plan Free?
300 e-maili miesięcznie, szablony: 3, ochronę przed spamem i 7 dni historii. E-maile mają małą stopkę „Wysłano przez Frontmail”. Pakiety kredytów możesz kupić także w planie Free.
Gdzie przechowywane są moje dane?
W regionie AWS eu-central-1 (Frankfurt, Niemcy). Dane dostępowe do dostawców są szyfrowane za pomocą AWS KMS. Historia wiadomości jest przechowywana tylko tak długo, jak pozwala Twój plan.
Co jeśli połączenie z Gmailem lub Outlookiem wygaśnie?
Każdą usługę sprawdzamy codziennie i natychmiast po błędzie uwierzytelniania. Dostaniesz e-mail i baner w panelu; wiadomości pójdą przez usługę zapasową albo poczekają jako wstrzymane, aż połączysz konto ponownie.
Czy mogę wysyłać także z serwera?
Tak. Node SDK i REST API przyjmują klucz prywatny, który pomija sprawdzanie originu i CAPTCHA oraz odblokowuje wysyłkę zbiorczą do 100 wiadomości w jednym żądaniu.
Po co Frontmail, skoro jest Amazon SES, Mailgun albo Gmail API?
Używasz ich razem. Te API wymagają tajnego klucza, więc nie da się ich wywołać z przeglądarki ani z aplikacji. Frontmail stoi pośrodku: przechowuje dane logowania, chroni formularz przed botami, renderuje szablon i wysyła przez dostawcę, którego podłączysz.
Czy mogę wysyłać e-maile przez Amazon SNS?
SNS to usługa powiadomień: jej subskrypcje e-mail wysyłają zwykłe tekstowe powiadomienia na adresy, które potwierdziły subskrypcję. Nadaje się do alertów, nie do wiadomości dla klientów. Do e-maili z twojej domeny podłącz Amazon SES – Frontmail zamieni jego powiadomienia SNS o doręczeniach w statusy wiadomości.
Wdróż formularz jeszcze dziś. Przestań martwić się sezonem.
Plan Free, bez karty, pełne API. Przejdź wyżej albo dokup pakiet, kiedy tylko ruch tego wymaga.