The site uses Netlify Forms for all form submissions. Forms are defined in Astro page markup with data-netlify="true" and submitted client-side via JavaScript fetch. Netlify captures the data and forwards it to Notion via a Netlify integration.
| Form | Page | Netlify form name | Notion target |
|---|---|---|---|
| Assembly application | /assemblies/[slug]/ |
assembly-application |
Assembly applications database |
| Membership enquiry | /membership/enquire/ |
membership-enquiry |
Membership enquiries database |
- User submits the form on the website
- Client-side JavaScript sends the data to Netlify via
fetchPOST - Netlify captures the submission (spam filtering, bot detection via honeypot field)
- Netlify forwards the data to Notion via the Netlify–Notion integration
The form will show "success" as long as Netlify accepted the submission. It does not confirm that the data reached Notion. If there is a problem between Netlify and Notion (integration error, Notion API issue, database schema change), the user will still see a success message but the data won't appear in Notion.
If people report submitting forms but data isn't appearing in Notion:
- Check Netlify for errors — go to the Netlify project dashboard and look for integration errors or failed webhooks
- Recover data from Netlify — every Netlify project has a Forms section in the dashboard. All submissions are stored there regardless of whether the Notion integration succeeded. You can always recover the data manually from Netlify.
- Check the Notion integration — verify the Netlify–Notion integration is still connected and the target database hasn't changed
The data is always safe in Netlify. The only failure point is the Netlify → Notion forwarding.
All forms use a honeypot field (netlify-honeypot="bot-field") — a hidden input that bots fill in but humans don't. Netlify automatically filters these out. Netlify also applies its own built-in spam detection on top of this.
To add a new Netlify form:
- Add
data-netlify="true"andnetlify-honeypot="bot-field"to the<form>element - Include a hidden input:
<input type="hidden" name="form-name" value="your-form-name" /> - Include the honeypot:
<p class="hidden"><label>Don't fill this out: <input name="bot-field" /></label></p> - Add client-side submission handling (see existing forms for the pattern)
- Deploy to Netlify — the form will be auto-detected on first deploy
- Configure the Netlify → Notion integration for the new form in the Netlify dashboard
Both forms fire GA4 events on successful submission:
- Assembly form:
assembly_applicationevent withassembly_name - Membership enquiry:
membership_enquiryevent withorganisation
See Google Analytics doc for more on GA4 tracking.