What problem does it solve? Adding a working contact, lead-capture, or file-upload form to a static or framework-based site normally requires building and maintaining a backend endpoint. Netlify Forms detects HTML forms at deploy time and handles submission storage, spam filtering, and notifications without any server code, but getting it right involves non-obvious rules around SSR apps, AJAX encoding, and spam false positives. ## Core Features & Use Cases - Deploy-time form detection: Mark forms with data-netlify="true" and Netlify registers them by parsing the built HTML, with no runtime API or backend code. - Framework and SSR support: Register JS-rendered forms in Next.js, Nuxt, SvelteKit, Astro, and Gatsby using a static skeleton file (public/__forms.html) with exactly matching field names. - AJAX submission and file uploads: Submit URL-encoded form data via fetch, upload files with multipart requests, and redirect to custom extensionless success pages. - Spam prevention and notifications: Use honeypots, Netlify or custom reCAPTCHA, Akismet filtering, and configurable email/webhook/Slack notifications with templated subject lines. - Use Case: A Next.js site's contact form silently fails because fetch("/") is intercepted by the SSR catch-all. This Skill directs you to create the static skeleton file and POST to /__forms.html instead. ## Quick Start Add a contact form to my Netlify-hosted Astro site with a honeypot, AJAX submission, and a custom thank-you page.