Poradnik

Backend dla formularzy z Lovable, Bolt, v0 i Cursor

Wygenerowany formularz mówi „dziękujemy” i gubi dane. Tak sprawisz, by zgłoszenia naprawdę docierały — w każdym kreatorze AI.

Krótka odpowiedź. Lovable, Bolt, v0 i Cursor tworzą formularze, które pokazują sukces, ale nie wysyłają danych. Masz trzy drogi: backend kreatora, hosted form backend albo własną funkcję serverless. Dla formularza kontaktowego najszybszy jest hosted backend: jedno polecenie podpina POST na /submit z publicznym kluczem, a dostawę sprawdź w skrzynce, poczcie i Telegramie jeszcze przed startem.

Formgong teamZaktualizowano

Backend dla formularzy z Lovable, Bolt, v0 i Cursor
Backend dla formularzy z Lovable, Bolt, v0 i Cursor

Dlaczego wygenerowany formularz nic nie wysyła

Lovable, Bolt, v0 i Cursor świetnie generują interfejs: pola, walidacja, przycisk i „Dziękujemy!”. Domyślnie jednak przycisk często nie robi nic użytecznego — obsługa pokazuje podziękowanie od razu, bez żadnego żądania sieciowego, więc dane nigdzie się nie zapisują.

Drugi wzorzec: AI samo podpina Supabase albo Lovable Cloud. To działa, ale dla prostego formularza kontaktowego ciągnie za sobą bazę danych, konfigurację dostępów i zwykle osobną usługę email w rodzaju Resend. Stan swojej formy sprawdzisz w minutę: otwórz narzędzia deweloperskie, kartę Network i wyślij formularz — brak żądania POST oznacza formę dekoracyjną.

Trzy działające drogi dla formularza

1. Backend kreatora. Lovable Cloud / Supabase plus konektor pocztowy. Ma sens, gdy aplikacja już korzysta z autoryzacji, baz danych lub innych scenariuszy serwerowych. Dla samotnego formularza kontaktowego to zbędna infrastruktura.

2. Hosted form backend. Formularz wysyła POST na jeden endpoint z publicznym kluczem; serwis zapisuje zgłoszenia i powiadamia pocztą oraz Telegramem. Najszybsza droga dla landingów i wizytówek: bez schematów, funkcji edge i serwerów.

3. Własna funkcja serverless. Pełna kontrola i pełna odpowiedzialność: kod, sekrety, filtrowanie spamu i ponawianie dostawy po twojej stronie. Ten artykuł opisuje drugą drogę — działa tak samo w każdym kreatorze generującym HTML lub React.

Kryteria wyboru backendu dla formularzy

Dowód dostawy. „Dziękujemy” na stronie nic nie dowodzi: potrzebujesz skrzynki ze statusami przyjęcia, dostawy i spamu. W Formgong to inbox ze szczegółami dostawy per kanał. Ochrona przed spamem. Minimum honeypot, lepiej z opcjonalnym Turnstile i oceną spamu; spam nie powinien zużywać miesięcznego limitu.

Kanały powiadomień. Poczta to baza, dla szybkiej reakcji zespołu potrzebny jest Telegram, dla integracji podpisane webhooki. Lokalizacja danych. Przy klientach z UE sprawdź, gdzie fizycznie leżą zgłoszenia: Formgong trzyma wszystko w Cloudflare z jurysdykcją UE — D1, kolejka i pliki są europejskie. Zmiany bez przebudowy strony. Odbiorców, przekierowania i auto-odpowiedź zmieniaj w panelu, nie w kodzie generowanym ponownie przez AI.

Jedno polecenie dla każdego kreatora

Otwórz czat swojego projektu i poproś o podłączenie istniejącego formularza z zachowaniem designu. Polecenie poniżej działa w Lovable, Bolt, v0 i Cursor; zastąp fk_your_access_key kluczem z sekcji podłączenia strony twojego formularza w panelu Formgong.

Polecenie integracji
Connect this form to Formgong. Keep its design and field names.
1. Send a POST request to https://formgong.com/submit (FormData or JSON with access_key).
2. access_key: fk_your_access_key (a public key; it can stay in the code).
3. Show success only after a response with success: true.
4. On error, keep the entered field values and show an error message.
5. Add a hidden botcheck field (honeypot) with no visible UI change.
6. Do not add tokens, secrets, or file inputs.
Przykład żądania API

Podmień klucz i dodaj obsługę oczekiwania, sukcesu oraz błędu. Nie usuwaj wpisanych danych po nieudanej próbie.

JavaScript
async function onSubmit(event) {
  event.preventDefault();
  const fields = Object.fromEntries(new FormData(event.currentTarget));
  const response = await fetch("https://formgong.com/submit", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      Accept: "application/json",
    },
    // _lang: language of Formgong messages and the autoreply (multilingual site: document.documentElement.lang).
    body: JSON.stringify({ _lang: "en", ...fields, access_key: "fk_your_access_key" }),
  });
  const result = await response.json();
  if (!result.success) throw new Error(result.message || "Could not send. Please try again.");
  return result.message; // localized "Sent. Thank you!"
}

Sprawdź dostawę, nie napis „Udało się”

Gdy kreator zastosuje zmiany, wyślij jedno rozpoznawalne zgłoszenie testowe i przejdź całą drogę:

  1. Żądanie. W karcie Network widać POST na https://formgong.com/submit z odpowiedzią success: true.
  2. Zapis. Zgłoszenie pojawiło się w skrzynce tego formularza w Formgong, ze wszystkimi polami.
  3. Poczta. W planie Free e-mail przychodzi w porannym skrócie następnego dnia o 08:00, w strefie czasowej właściciela konta, do jednego odbiorcy. W Pro i Business każdy lead jest wysyłany osobnym e-mailem. Sprawdź folder spam.
  4. Telegram. Telegram przychodzi od razu w każdym planie, także Free. Jeśli czat jest połączony, wiadomość trafia właśnie do niego.

Po publikacji powtórz test na prawdziwym domenie: podgląd edytora może zachowywać się inaczej. Pełny rozkład jazdy opisuje diagnostyka dostawy.

Po starcie: zmiany bez ponownej generacji

Gdy formularz działa, większość zmian nie wymaga powrotu do kreatora. W panelu Formgong zmienisz odbiorców emaili, połączone czaty Telegram, przekierowania po wysłaniu, auto-odpowiedź dla odwiedzającego i ochronę.

Jeśli zgłoszenia nagle przestały docierać po redesignie, nie zgaduj: diagnostyka formularza w Formgong wczyta twoją stronę i pokaże, czy snippet jest poprawnie zainstalowany — adres, metodę, klucz i wymagane pola. Analityka formularza pokaże, przy których polach odwiedzający przerywają wypełnianie; to tańsze niż eksperyment A/B i nie wymaga nowego kodu.

Typowe błędy AI przy generowaniu formularzy

Pojawia się „Udało się”, ale nie ma żądania
Kreator wygenerował dekoracyjną obsługę. Poproś: „Wysyłaj dane przez fetch i pokazuj sukces dopiero po odpowiedzi success: true”.
W kodzie został fk_your_access_key
To placeholder. Weź prawdziwy klucz z sekcji podłączenia strony swojego formularza i go podstaw.
Po błędzie pola się czyszczą
Odwiedzający traci wpisany tekst. Obsługa ma zachować wartości i pokazać błąd; dopisz to w kolejnym poleceniu.
Po włączeniu Turnstile formularz przestał działać
Widżet trzeba dodać do kodu i przesyłać cf-turnstile-response. Po zmianie ochrony odśwież przykład podłączenia w panelu.
Zgłoszenie jest, ale email nie przychodzi
Sprawdź potwierdzenie emaila właściciela i odbiorców. Niezweryfikowane adresy nie są celami dostawy; szczegóły w diagnostyce dostawy.

Pytania i odpowiedzi

Czy formularz z kreatora AI potrzebuje Supabase?

Nie, jeśli to samotny formularz kontaktowy. Hosted backend przyjmuje POST z publicznym kluczem i dostarcza powiadomienia; Supabase lub Lovable Cloud mają sens, gdy aplikacja już ich używa do innych scenariuszy.

Czy access_key może zostać w wygenerowanym kodzie?

Tak. To publiczny klucz przyjmowania zgłoszeń bez dostępu do skrzynki ani ustawień. Sekretów, tokenów botów i kluczy usług pocztowych nie dodaje się do frontendu.

Czy polecenie zadziała w każdym kreatorze?

W tych, które generują HTML lub React i mogą wykonać fetch: Lovable, Bolt, v0, Cursor. Różnią się sposobem zastosowania zmian; weryfikujesz efekt — żądanie POST i success: true.

Gdzie przechowywane są zgłoszenia klientów?

Zgłoszenia i pliki są przechowywane w UE, w Cloudflare D1 i w magazynie plików z jurysdykcją UE. Powiadomienia wysłane do Telegrama, Slacka lub Discorda przetwarzają te usługi, poza tym magazynem. Polityka prywatności na stronie nadal jest potrzebna.

Źródła i dokumentacja

Oficjalne materiały pomocnicze: Lovable Cloud, MDN: Fetch API. Dokumentacja Formgong, Przechowywanie danych.

Artykuł w formacie Markdown

Oceń ten poradnik

Twoja ocena

Czytamy każdą ocenę. Komentarz pojawi się tutaj dopiero po naszym zatwierdzeniu.

← Wróć do bloga