Astro
Astro pages are mostly static HTML — perfect for a plain action form. No client JavaScript required.
HTML form (recommended)
In any .astro page:
---
// src/pages/contact.astro
const endpoint = import.meta.env.PUBLIC_SENDULER_ENDPOINT ?? "https://senduler.com/f/your-key";
---
<form action={endpoint} method="POST">
<input type="email" name="email" required />
<textarea name="message" required></textarea>
<input type="text" name="_gotcha" hidden tabindex="-1" autocomplete="off" />
<button type="submit">Send</button>
</form>
Set the form's submit behaviour to Redirect in the dashboard and add your thank-you URL, or use _next on the query string.
JSON submit (client island)
If you prefer fetch, set submit behaviour to JSON and use a small client component — see React & JavaScript.
Environment variable
Store your endpoint key in .env:
PUBLIC_SENDULER_ENDPOINT=https://senduler.com/f/your-key
Lock the form to your production domain under Email and privacy → Allowed origins.