Supabase op je landingspagina's
Serieuze leadgenpartijen willen uiteindelijk de ruwe data in een database die ze zelf beheren: om leads te koppelen aan uitgaven, om SQL te draaien op leadkwaliteit, om een afnemersportaal of een app voor verkopers te voeden. Het endpoint bouwen dat de leads ontvangt, is meestal het deel dat vastloopt, omdat iemand het moet schrijven en draaiende moet houden.
Supabase haalt dat deel weg. Elke tabel heeft al een REST-endpoint, en de webhook van LanderLab post elke lead daarnaartoe als een platte set kolomnamen en waarden. Postgres voegt de rij in, Row Level Security bepaalt wat het verzoek mag doen, en de lead staat in je database met de campagne en de variant erop.
Een Postgres-rij per lead, in jouw schema
De body van het verzoek is plat, één sleutel per kolom, dus elke lead wordt een rij met getypeerde kolommen, een created_at-tijdstempel uit de standaardwaarde van de kolom en een id waarnaar je andere systemen kunnen verwijzen. Sleutels die bij geen enkele kolom horen, worden afgewezen, en zo blijft verdwaalde data uit de tabel.
Omdat het Postgres is, is de rij klaar voor alles wat SQL doet: een view met leads per campagne per dag, een join met je kostentabel, een unieke index op e-mail als je herhaalde inzendingen liever weigert dan ze twee keer op te slaan.
Afgeschermd met Row Level Security
De webhook schrijft met de publishable key van je project, en Row Level Security bepaalt wat die sleutel mag doen. Sta inserts op de leadtabel toe en verder niets, en de sleutel kan leads toevoegen maar ze nooit lezen, wijzigen of verwijderen, dus leaddata blijft buiten bereik, ook al is de sleutel niet geheim.
De secret key, die Row Level Security omzeilt, hoeft je eigen backend nooit te verlaten: een leadformulier heeft hem niet nodig.
Je eigen bron van waarheid voor leadkwaliteit
Builders, CRM's en trackers hebben elk een deel van het verhaal. Een Supabase-tabel met elke lead en zijn utm_campaign, click ID, landingspagina en variant is het deel dat jij beheert. Laad de dagelijkse uitgaven in een tweede tabel en een SQL-view geeft de kosten per lead per campagne en variant; voeg de uitkomsten toe die je afnemers of verkopers vastleggen en hij geeft de kosten per verkoop.
Zo beslis je een split-test eerlijk: niet welke variant meer ingevulde formulieren kreeg, maar van welke variant de leads geld opleverden.
Leads die een mislukte insert overleven
Elke lead blijft ook bewaard op het tabblad Leads van LanderLab, te filteren op datum en variant en als CSV te exporteren op Grow en hoger, tenzij “Compliant leadlevering” aanstaat. Mislukt een insert ooit, bijvoorbeeld nadat een kolom hernoemd is, dan is de lead niet weg: herstel de tabel en vul aan vanuit de export. Verstuur je in plaats daarvan via de Workflows (bèta) van LanderLab, dan laat de Runs-weergave precies zien welk verzoek van welke lead mislukte.