[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-netlify-netlify-forms":3,"mdc-9v4hgg-key":33,"related-org-netlify-netlify-forms":4001,"related-repo-netlify-netlify-forms":4173},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":31,"mdContent":32},"netlify-forms","handle HTML forms with Netlify","Guide for using Netlify Forms for HTML form handling. Use when adding contact forms, feedback forms, file upload forms, or any form that should be collected by Netlify. Covers the data-netlify attribute, spam filtering, AJAX submissions, file uploads, notifications, and the submissions API.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"netlify","Netlify","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnetlify.png",[12,16,17,20],{"name":13,"slug":14,"type":15},"HTML","html","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"Forms","forms",{"name":21,"slug":22,"type":15},"Web Development","web-development",24,"https:\u002F\u002Fgithub.com\u002Fnetlify\u002Fcontext-and-tools","2026-07-14T05:40:16.075367",null,5,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":26},[],"https:\u002F\u002Fgithub.com\u002Fnetlify\u002Fcontext-and-tools\u002Ftree\u002FHEAD\u002Fskills\u002Fnetlify-forms","---\nname: netlify-forms\ndescription: Guide for using Netlify Forms for HTML form handling. Use when adding contact forms, feedback forms, file upload forms, or any form that should be collected by Netlify. Covers the data-netlify attribute, spam filtering, AJAX submissions, file uploads, notifications, and the submissions API.\n---\n\n# Netlify Forms\n\nNetlify Forms collects HTML form submissions without server-side code. Form detection must be enabled in the Netlify UI (Forms section).\n\n> **Enabling detection only affects future deploys.** Netlify scans for forms at deploy time, so turning on (or re-enabling) form detection does **not** rescan your current live deploy. After enabling detection you must trigger a new deploy\u002Fbuild before an already-published form is registered and starts collecting submissions.\n\n## Basic Setup\n\nAdd `data-netlify=\"true\"` and a unique `name` to the form:\n\n```html\n\u003Cform name=\"contact\" method=\"POST\" data-netlify=\"true\">\n  \u003Clabel>Name: \u003Cinput type=\"text\" name=\"name\" \u002F>\u003C\u002Flabel>\n  \u003Clabel>Email: \u003Cinput type=\"email\" name=\"email\" \u002F>\u003C\u002Flabel>\n  \u003Clabel>Message: \u003Ctextarea name=\"message\">\u003C\u002Ftextarea>\u003C\u002Flabel>\n  \u003Cbutton type=\"submit\">Send\u003C\u002Fbutton>\n\u003C\u002Fform>\n```\n\nNetlify's build system detects the form and injects a hidden `form-name` input automatically. For a custom success page, add `action=\"\u002Fthank-you\"` to the form tag. Use paths without `.html` extension — Netlify serves `thank-you.html` at `\u002Fthank-you` by default, and the `.html` path returns 404.\n\n## JavaScript-Rendered Forms (React, Vue, SSR Frameworks)\n\nFor forms rendered by JavaScript frameworks (React, Vue, Astro, TanStack Start, Next.js, SvelteKit, Remix, Nuxt), Netlify's build parser cannot detect the form in static HTML. You MUST create a static HTML skeleton file for build-time form detection:\n\n> **Form detection parses prerendered HTML only.** A `data-netlify` form is registered only if it appears in HTML produced at build time. On an Astro route that is server-rendered on demand (`export const prerender = false`, or an `output: \"server\"` route), the form is generated per request and is never scanned at build — so it is never registered. Put the form on a prerendered page, or add the static skeleton file below.\n\nCreate a static HTML file in `public\u002F` (e.g. `public\u002F__forms.html`) containing a hidden copy of each form:\n\n```html\n\u003C!DOCTYPE html>\n\u003Chtml>\n  \u003Cbody>\n    \u003Cform name=\"contact\" data-netlify=\"true\" netlify-honeypot=\"bot-field\" hidden>\n      \u003Cinput type=\"hidden\" name=\"form-name\" value=\"contact\" \u002F>\n      \u003Cinput type=\"text\" name=\"name\" \u002F>\n      \u003Cinput type=\"email\" name=\"email\" \u002F>\n      \u003Ctextarea name=\"message\">\u003C\u002Ftextarea>\n      \u003Cinput name=\"bot-field\" \u002F>\n    \u003C\u002Fform>\n  \u003C\u002Fbody>\n\u003C\u002Fhtml>\n```\n\n**Rules:**\n- The form `name` must exactly match the `form-name` value used in your component's fetch call\n- Include every field your component submits — Netlify validates field names against the registered form\n- Without this file, Netlify cannot detect the form and submissions will silently fail\n\nYour component must also include a hidden `form-name` input:\n\n```jsx\n\u003Cform name=\"contact\" method=\"POST\" data-netlify=\"true\">\n  \u003Cinput type=\"hidden\" name=\"form-name\" value=\"contact\" \u002F>\n  {\u002F* ... fields ... *\u002F}\n\u003C\u002Fform>\n```\n\n## AJAX Submissions\n\n> **Netlify Forms does not accept JSON.** The submission body must be `application\u002Fx-www-form-urlencoded` (encode the fields with `URLSearchParams`) or `multipart\u002Fform-data` (a raw `FormData` object, for file uploads). A `fetch` that sends `JSON.stringify(...)` with `Content-Type: application\u002Fjson` is silently **not** recorded as a submission — always send URL-encoded key\u002Fvalue pairs (or `FormData`), never JSON.\n\n### Vanilla JavaScript\n\n```javascript\nconst form = document.querySelector(\"form\");\nform.addEventListener(\"submit\", async (e) => {\n  e.preventDefault();\n  const formData = new FormData(form);\n  await fetch(\"\u002F\", {\n    method: \"POST\",\n    headers: { \"Content-Type\": \"application\u002Fx-www-form-urlencoded\" },\n    body: new URLSearchParams(formData).toString(),\n  });\n});\n```\n\n> **SSR frameworks (TanStack Start, Next.js, SvelteKit, Remix, Nuxt):** The `fetch` URL must target the static skeleton\n> file path (e.g. `\"\u002F__forms.html\"`), **not** `\"\u002F\"`. In SSR apps, `fetch(\"\u002F\")` is intercepted by the SSR catch-all\n> function and never reaches Netlify's form processing middleware. See the React example and troubleshooting section below.\n\n### React Example\n\n```tsx\nfunction ContactForm() {\n  const handleSubmit = async (e: React.FormEvent\u003CHTMLFormElement>) => {\n    e.preventDefault();\n    const formData = new FormData(e.currentTarget);\n    \u002F\u002F For SSR apps, use the skeleton file path instead of \"\u002F\" (e.g. \"\u002F__forms.html\")\n    const response = await fetch(\"\u002F__forms.html\", {\n      method: \"POST\",\n      headers: { \"Content-Type\": \"application\u002Fx-www-form-urlencoded\" },\n      body: new URLSearchParams(formData as any).toString(),\n    });\n    if (response.ok) {\n      \u002F\u002F Show success feedback\n    }\n  };\n\n  return (\n    \u003Cform name=\"contact\" method=\"POST\" data-netlify=\"true\" onSubmit={handleSubmit}>\n      \u003Cinput type=\"hidden\" name=\"form-name\" value=\"contact\" \u002F>\n      \u003Cinput type=\"text\" name=\"name\" placeholder=\"Name\" \u002F>\n      \u003Cinput type=\"email\" name=\"email\" placeholder=\"Email\" \u002F>\n      \u003Ctextarea name=\"message\" placeholder=\"Message\" \u002F>\n      \u003Cbutton type=\"submit\">Send\u003C\u002Fbutton>\n    \u003C\u002Fform>\n  );\n}\n```\n\n> **SSR troubleshooting:** If form submissions appear to succeed (200 response) but nothing shows in the Netlify Forms\n> UI, the POST is likely being intercepted by the SSR function. Ensure `fetch` targets the skeleton file path (e.g.\n> `\"\u002F__forms.html\"`), not `\"\u002F\"`. The skeleton file path routes through the CDN origin where Netlify's form handler runs.\n\n## Spam Filtering\n\nNetlify uses Akismet automatically. Add a honeypot field for extra protection:\n\n```html\n\u003Cform name=\"contact\" method=\"POST\" netlify-honeypot=\"bot-field\" data-netlify=\"true\">\n  \u003Cp style=\"display:none\">\n    \u003Clabel>Don't fill this out: \u003Cinput name=\"bot-field\" \u002F>\u003C\u002Flabel>\n  \u003C\u002Fp>\n  \u003C!-- visible fields -->\n\u003C\u002Fform>\n```\n\nFor reCAPTCHA, add `data-netlify-recaptcha=\"true\"` to the form and include `\u003Cdiv data-netlify-recaptcha=\"true\">\u003C\u002Fdiv>` where the widget should appear.\n\nBy default Netlify provisions and verifies the reCAPTCHA for you — do **not** add a site key\u002Fsecret or load Google's reCAPTCHA script yourself. To use **your own** reCAPTCHA v2 keys, keep the same `data-netlify-recaptcha=\"true\"` markup and set the credentials as Netlify environment variables: `SITE_RECAPTCHA_KEY` (the site key, scoped to Builds and Runtime) and `SITE_RECAPTCHA_SECRET` (the secret, scoped to Runtime). Netlify picks these up automatically — the secret stays server-side as an env var (never hardcoded in client code), and you still don't render the widget with Google's own script or build a custom Function to verify the token.\n\n> **Spam submissions are silent.** Akismet-flagged submissions are moved to a separate **Spam** list in the Forms UI — they do **not** appear in the verified submissions list and do **not** trigger email\u002FSlack notifications. Submissions caught by a honeypot field or a failed reCAPTCHA challenge are discarded entirely and never appear in either list. So a \"missing\" legitimate submission is usually a false-positive spam classification, not a delivery bug: check the Spam list (or the Submissions API with `?state=spam`) and mark it verified — do not build a custom Function to \"recover\" it or disable spam filtering as a first resort.\n\n## File Uploads\n\n```html\n\u003Cform name=\"upload\" enctype=\"multipart\u002Fform-data\" data-netlify=\"true\">\n  \u003Cinput type=\"text\" name=\"name\" \u002F>\n  \u003Cinput type=\"file\" name=\"attachment\" \u002F>\n  \u003Cbutton type=\"submit\">Upload\u003C\u002Fbutton>\n\u003C\u002Fform>\n```\n\nFor AJAX file uploads, use `FormData` directly — do **not** set `Content-Type` (the browser sets it with the correct boundary):\n\n```javascript\nawait fetch(\"\u002F\", { method: \"POST\", body: new FormData(form) });\n```\n\n**Limits:** 8 MB max request size, 30-second timeout, one file per input field.\n\n## Notifications\n\nConfigure in the Netlify UI under **Project configuration > Notifications**:\n\n- **Email**: Auto-sends on submission. Add `\u003Cinput type=\"hidden\" name=\"subject\" value=\"Contact form\" \u002F>` for custom subject lines.\n- **Slack**: Via Netlify App for Slack.\n- **Webhooks**: Trigger external services on submission.\n\n## Submissions API\n\nAccess submissions programmatically:\n\n```\nGET \u002Fapi\u002Fv1\u002Fforms\u002F{form_id}\u002Fsubmissions\nAuthorization: Bearer \u003CPERSONAL_ACCESS_TOKEN>\n```\n\nKey endpoints:\n\n| Action | Method | Path |\n|---|---|---|\n| List forms | GET | `\u002Fapi\u002Fv1\u002Fsites\u002F{site_id}\u002Fforms` |\n| Get submissions | GET | `\u002Fapi\u002Fv1\u002Fforms\u002F{form_id}\u002Fsubmissions` |\n| Get spam | GET | `\u002Fapi\u002Fv1\u002Fforms\u002F{form_id}\u002Fsubmissions?state=spam` |\n| Delete submission | DELETE | `\u002Fapi\u002Fv1\u002Fsubmissions\u002F{id}` |\n\n### Pagination\n\nThe Netlify API paginates any response over 100 items (100 per page by default). Pass `?page=` (1-based) and optionally `?per_page=` (max 100), and follow the `Link` response header — it carries the `rel=\"next\"` and `rel=\"last\"` page URLs. To sync **every** submission, page through until there is no `rel=\"next\"` link (or a page returns fewer than `per_page` items). A single request does **not** return all submissions once a form has more than 100 — code that reads only the first response silently drops the rest.\n\n## Use only documented surfaces\n\nTo manage forms or read submissions programmatically, use the documented `netlify` CLI or the Submissions API above with an explicit personal access token supplied via an environment variable. Do **not** go around the documented surface:\n\n- **Do not curl `https:\u002F\u002Fapi.netlify.com\u002F...`** with an invented endpoint shape, and do **not** run `netlify api \u003Cmethod>` as a recovery hatch when a documented path fails.\n- **Do not read the token** out of `~\u002FLibrary\u002FPreferences\u002Fnetlify\u002Fconfig.json` (or anywhere on disk) — it comes from the configured env var.\n\nIf a documented path fails, report the exact error and context to the user and stop.\n",{"data":34,"body":35},{"name":4,"description":6},{"type":36,"children":37},"root",[38,46,52,74,81,103,519,571,577,582,619,640,1103,1111,1145,1157,1350,1356,1438,1445,1855,1905,1911,2845,2879,2885,2890,3127,3148,3189,3229,3235,3498,3523,3624,3634,3640,3651,3691,3697,3702,3712,3717,3836,3842,3915,3921,3939,3990,3995],{"type":39,"tag":40,"props":41,"children":42},"element","h1",{"id":4},[43],{"type":44,"value":45},"text","Netlify Forms",{"type":39,"tag":47,"props":48,"children":49},"p",{},[50],{"type":44,"value":51},"Netlify Forms collects HTML form submissions without server-side code. Form detection must be enabled in the Netlify UI (Forms section).",{"type":39,"tag":53,"props":54,"children":55},"blockquote",{},[56],{"type":39,"tag":47,"props":57,"children":58},{},[59,65,67,72],{"type":39,"tag":60,"props":61,"children":62},"strong",{},[63],{"type":44,"value":64},"Enabling detection only affects future deploys.",{"type":44,"value":66}," Netlify scans for forms at deploy time, so turning on (or re-enabling) form detection does ",{"type":39,"tag":60,"props":68,"children":69},{},[70],{"type":44,"value":71},"not",{"type":44,"value":73}," rescan your current live deploy. After enabling detection you must trigger a new deploy\u002Fbuild before an already-published form is registered and starts collecting submissions.",{"type":39,"tag":75,"props":76,"children":78},"h2",{"id":77},"basic-setup",[79],{"type":44,"value":80},"Basic Setup",{"type":39,"tag":47,"props":82,"children":83},{},[84,86,93,95,101],{"type":44,"value":85},"Add ",{"type":39,"tag":87,"props":88,"children":90},"code",{"className":89},[],[91],{"type":44,"value":92},"data-netlify=\"true\"",{"type":44,"value":94}," and a unique ",{"type":39,"tag":87,"props":96,"children":98},{"className":97},[],[99],{"type":44,"value":100},"name",{"type":44,"value":102}," to the form:",{"type":39,"tag":104,"props":105,"children":109},"pre",{"className":106,"code":107,"language":14,"meta":108,"style":108},"language-html shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cform name=\"contact\" method=\"POST\" data-netlify=\"true\">\n  \u003Clabel>Name: \u003Cinput type=\"text\" name=\"name\" \u002F>\u003C\u002Flabel>\n  \u003Clabel>Email: \u003Cinput type=\"email\" name=\"email\" \u002F>\u003C\u002Flabel>\n  \u003Clabel>Message: \u003Ctextarea name=\"message\">\u003C\u002Ftextarea>\u003C\u002Flabel>\n  \u003Cbutton type=\"submit\">Send\u003C\u002Fbutton>\n\u003C\u002Fform>\n","",[110],{"type":39,"tag":87,"props":111,"children":112},{"__ignoreMap":108},[113,206,294,376,448,503],{"type":39,"tag":114,"props":115,"children":118},"span",{"class":116,"line":117},"line",1,[119,125,131,137,142,147,153,157,162,166,170,175,179,184,188,192,197,201],{"type":39,"tag":114,"props":120,"children":122},{"style":121},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[123],{"type":44,"value":124},"\u003C",{"type":39,"tag":114,"props":126,"children":128},{"style":127},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[129],{"type":44,"value":130},"form",{"type":39,"tag":114,"props":132,"children":134},{"style":133},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[135],{"type":44,"value":136}," name",{"type":39,"tag":114,"props":138,"children":139},{"style":121},[140],{"type":44,"value":141},"=",{"type":39,"tag":114,"props":143,"children":144},{"style":121},[145],{"type":44,"value":146},"\"",{"type":39,"tag":114,"props":148,"children":150},{"style":149},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[151],{"type":44,"value":152},"contact",{"type":39,"tag":114,"props":154,"children":155},{"style":121},[156],{"type":44,"value":146},{"type":39,"tag":114,"props":158,"children":159},{"style":133},[160],{"type":44,"value":161}," method",{"type":39,"tag":114,"props":163,"children":164},{"style":121},[165],{"type":44,"value":141},{"type":39,"tag":114,"props":167,"children":168},{"style":121},[169],{"type":44,"value":146},{"type":39,"tag":114,"props":171,"children":172},{"style":149},[173],{"type":44,"value":174},"POST",{"type":39,"tag":114,"props":176,"children":177},{"style":121},[178],{"type":44,"value":146},{"type":39,"tag":114,"props":180,"children":181},{"style":133},[182],{"type":44,"value":183}," data-netlify",{"type":39,"tag":114,"props":185,"children":186},{"style":121},[187],{"type":44,"value":141},{"type":39,"tag":114,"props":189,"children":190},{"style":121},[191],{"type":44,"value":146},{"type":39,"tag":114,"props":193,"children":194},{"style":149},[195],{"type":44,"value":196},"true",{"type":39,"tag":114,"props":198,"children":199},{"style":121},[200],{"type":44,"value":146},{"type":39,"tag":114,"props":202,"children":203},{"style":121},[204],{"type":44,"value":205},">\n",{"type":39,"tag":114,"props":207,"children":209},{"class":116,"line":208},2,[210,215,220,225,231,235,240,245,249,253,257,261,265,269,273,277,281,286,290],{"type":39,"tag":114,"props":211,"children":212},{"style":121},[213],{"type":44,"value":214},"  \u003C",{"type":39,"tag":114,"props":216,"children":217},{"style":127},[218],{"type":44,"value":219},"label",{"type":39,"tag":114,"props":221,"children":222},{"style":121},[223],{"type":44,"value":224},">",{"type":39,"tag":114,"props":226,"children":228},{"style":227},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[229],{"type":44,"value":230},"Name: ",{"type":39,"tag":114,"props":232,"children":233},{"style":121},[234],{"type":44,"value":124},{"type":39,"tag":114,"props":236,"children":237},{"style":127},[238],{"type":44,"value":239},"input",{"type":39,"tag":114,"props":241,"children":242},{"style":133},[243],{"type":44,"value":244}," type",{"type":39,"tag":114,"props":246,"children":247},{"style":121},[248],{"type":44,"value":141},{"type":39,"tag":114,"props":250,"children":251},{"style":121},[252],{"type":44,"value":146},{"type":39,"tag":114,"props":254,"children":255},{"style":149},[256],{"type":44,"value":44},{"type":39,"tag":114,"props":258,"children":259},{"style":121},[260],{"type":44,"value":146},{"type":39,"tag":114,"props":262,"children":263},{"style":133},[264],{"type":44,"value":136},{"type":39,"tag":114,"props":266,"children":267},{"style":121},[268],{"type":44,"value":141},{"type":39,"tag":114,"props":270,"children":271},{"style":121},[272],{"type":44,"value":146},{"type":39,"tag":114,"props":274,"children":275},{"style":149},[276],{"type":44,"value":100},{"type":39,"tag":114,"props":278,"children":279},{"style":121},[280],{"type":44,"value":146},{"type":39,"tag":114,"props":282,"children":283},{"style":121},[284],{"type":44,"value":285}," \u002F>\u003C\u002F",{"type":39,"tag":114,"props":287,"children":288},{"style":127},[289],{"type":44,"value":219},{"type":39,"tag":114,"props":291,"children":292},{"style":121},[293],{"type":44,"value":205},{"type":39,"tag":114,"props":295,"children":297},{"class":116,"line":296},3,[298,302,306,310,315,319,323,327,331,335,340,344,348,352,356,360,364,368,372],{"type":39,"tag":114,"props":299,"children":300},{"style":121},[301],{"type":44,"value":214},{"type":39,"tag":114,"props":303,"children":304},{"style":127},[305],{"type":44,"value":219},{"type":39,"tag":114,"props":307,"children":308},{"style":121},[309],{"type":44,"value":224},{"type":39,"tag":114,"props":311,"children":312},{"style":227},[313],{"type":44,"value":314},"Email: ",{"type":39,"tag":114,"props":316,"children":317},{"style":121},[318],{"type":44,"value":124},{"type":39,"tag":114,"props":320,"children":321},{"style":127},[322],{"type":44,"value":239},{"type":39,"tag":114,"props":324,"children":325},{"style":133},[326],{"type":44,"value":244},{"type":39,"tag":114,"props":328,"children":329},{"style":121},[330],{"type":44,"value":141},{"type":39,"tag":114,"props":332,"children":333},{"style":121},[334],{"type":44,"value":146},{"type":39,"tag":114,"props":336,"children":337},{"style":149},[338],{"type":44,"value":339},"email",{"type":39,"tag":114,"props":341,"children":342},{"style":121},[343],{"type":44,"value":146},{"type":39,"tag":114,"props":345,"children":346},{"style":133},[347],{"type":44,"value":136},{"type":39,"tag":114,"props":349,"children":350},{"style":121},[351],{"type":44,"value":141},{"type":39,"tag":114,"props":353,"children":354},{"style":121},[355],{"type":44,"value":146},{"type":39,"tag":114,"props":357,"children":358},{"style":149},[359],{"type":44,"value":339},{"type":39,"tag":114,"props":361,"children":362},{"style":121},[363],{"type":44,"value":146},{"type":39,"tag":114,"props":365,"children":366},{"style":121},[367],{"type":44,"value":285},{"type":39,"tag":114,"props":369,"children":370},{"style":127},[371],{"type":44,"value":219},{"type":39,"tag":114,"props":373,"children":374},{"style":121},[375],{"type":44,"value":205},{"type":39,"tag":114,"props":377,"children":379},{"class":116,"line":378},4,[380,384,388,392,397,401,406,410,414,418,423,427,432,436,440,444],{"type":39,"tag":114,"props":381,"children":382},{"style":121},[383],{"type":44,"value":214},{"type":39,"tag":114,"props":385,"children":386},{"style":127},[387],{"type":44,"value":219},{"type":39,"tag":114,"props":389,"children":390},{"style":121},[391],{"type":44,"value":224},{"type":39,"tag":114,"props":393,"children":394},{"style":227},[395],{"type":44,"value":396},"Message: ",{"type":39,"tag":114,"props":398,"children":399},{"style":121},[400],{"type":44,"value":124},{"type":39,"tag":114,"props":402,"children":403},{"style":127},[404],{"type":44,"value":405},"textarea",{"type":39,"tag":114,"props":407,"children":408},{"style":133},[409],{"type":44,"value":136},{"type":39,"tag":114,"props":411,"children":412},{"style":121},[413],{"type":44,"value":141},{"type":39,"tag":114,"props":415,"children":416},{"style":121},[417],{"type":44,"value":146},{"type":39,"tag":114,"props":419,"children":420},{"style":149},[421],{"type":44,"value":422},"message",{"type":39,"tag":114,"props":424,"children":425},{"style":121},[426],{"type":44,"value":146},{"type":39,"tag":114,"props":428,"children":429},{"style":121},[430],{"type":44,"value":431},">\u003C\u002F",{"type":39,"tag":114,"props":433,"children":434},{"style":127},[435],{"type":44,"value":405},{"type":39,"tag":114,"props":437,"children":438},{"style":121},[439],{"type":44,"value":431},{"type":39,"tag":114,"props":441,"children":442},{"style":127},[443],{"type":44,"value":219},{"type":39,"tag":114,"props":445,"children":446},{"style":121},[447],{"type":44,"value":205},{"type":39,"tag":114,"props":449,"children":450},{"class":116,"line":27},[451,455,460,464,468,472,477,481,485,490,495,499],{"type":39,"tag":114,"props":452,"children":453},{"style":121},[454],{"type":44,"value":214},{"type":39,"tag":114,"props":456,"children":457},{"style":127},[458],{"type":44,"value":459},"button",{"type":39,"tag":114,"props":461,"children":462},{"style":133},[463],{"type":44,"value":244},{"type":39,"tag":114,"props":465,"children":466},{"style":121},[467],{"type":44,"value":141},{"type":39,"tag":114,"props":469,"children":470},{"style":121},[471],{"type":44,"value":146},{"type":39,"tag":114,"props":473,"children":474},{"style":149},[475],{"type":44,"value":476},"submit",{"type":39,"tag":114,"props":478,"children":479},{"style":121},[480],{"type":44,"value":146},{"type":39,"tag":114,"props":482,"children":483},{"style":121},[484],{"type":44,"value":224},{"type":39,"tag":114,"props":486,"children":487},{"style":227},[488],{"type":44,"value":489},"Send",{"type":39,"tag":114,"props":491,"children":492},{"style":121},[493],{"type":44,"value":494},"\u003C\u002F",{"type":39,"tag":114,"props":496,"children":497},{"style":127},[498],{"type":44,"value":459},{"type":39,"tag":114,"props":500,"children":501},{"style":121},[502],{"type":44,"value":205},{"type":39,"tag":114,"props":504,"children":506},{"class":116,"line":505},6,[507,511,515],{"type":39,"tag":114,"props":508,"children":509},{"style":121},[510],{"type":44,"value":494},{"type":39,"tag":114,"props":512,"children":513},{"style":127},[514],{"type":44,"value":130},{"type":39,"tag":114,"props":516,"children":517},{"style":121},[518],{"type":44,"value":205},{"type":39,"tag":47,"props":520,"children":521},{},[522,524,530,532,538,540,546,548,554,556,562,564,569],{"type":44,"value":523},"Netlify's build system detects the form and injects a hidden ",{"type":39,"tag":87,"props":525,"children":527},{"className":526},[],[528],{"type":44,"value":529},"form-name",{"type":44,"value":531}," input automatically. For a custom success page, add ",{"type":39,"tag":87,"props":533,"children":535},{"className":534},[],[536],{"type":44,"value":537},"action=\"\u002Fthank-you\"",{"type":44,"value":539}," to the form tag. Use paths without ",{"type":39,"tag":87,"props":541,"children":543},{"className":542},[],[544],{"type":44,"value":545},".html",{"type":44,"value":547}," extension — Netlify serves ",{"type":39,"tag":87,"props":549,"children":551},{"className":550},[],[552],{"type":44,"value":553},"thank-you.html",{"type":44,"value":555}," at ",{"type":39,"tag":87,"props":557,"children":559},{"className":558},[],[560],{"type":44,"value":561},"\u002Fthank-you",{"type":44,"value":563}," by default, and the ",{"type":39,"tag":87,"props":565,"children":567},{"className":566},[],[568],{"type":44,"value":545},{"type":44,"value":570}," path returns 404.",{"type":39,"tag":75,"props":572,"children":574},{"id":573},"javascript-rendered-forms-react-vue-ssr-frameworks",[575],{"type":44,"value":576},"JavaScript-Rendered Forms (React, Vue, SSR Frameworks)",{"type":39,"tag":47,"props":578,"children":579},{},[580],{"type":44,"value":581},"For forms rendered by JavaScript frameworks (React, Vue, Astro, TanStack Start, Next.js, SvelteKit, Remix, Nuxt), Netlify's build parser cannot detect the form in static HTML. You MUST create a static HTML skeleton file for build-time form detection:",{"type":39,"tag":53,"props":583,"children":584},{},[585],{"type":39,"tag":47,"props":586,"children":587},{},[588,593,595,601,603,609,611,617],{"type":39,"tag":60,"props":589,"children":590},{},[591],{"type":44,"value":592},"Form detection parses prerendered HTML only.",{"type":44,"value":594}," A ",{"type":39,"tag":87,"props":596,"children":598},{"className":597},[],[599],{"type":44,"value":600},"data-netlify",{"type":44,"value":602}," form is registered only if it appears in HTML produced at build time. On an Astro route that is server-rendered on demand (",{"type":39,"tag":87,"props":604,"children":606},{"className":605},[],[607],{"type":44,"value":608},"export const prerender = false",{"type":44,"value":610},", or an ",{"type":39,"tag":87,"props":612,"children":614},{"className":613},[],[615],{"type":44,"value":616},"output: \"server\"",{"type":44,"value":618}," route), the form is generated per request and is never scanned at build — so it is never registered. Put the form on a prerendered page, or add the static skeleton file below.",{"type":39,"tag":47,"props":620,"children":621},{},[622,624,630,632,638],{"type":44,"value":623},"Create a static HTML file in ",{"type":39,"tag":87,"props":625,"children":627},{"className":626},[],[628],{"type":44,"value":629},"public\u002F",{"type":44,"value":631}," (e.g. ",{"type":39,"tag":87,"props":633,"children":635},{"className":634},[],[636],{"type":44,"value":637},"public\u002F__forms.html",{"type":44,"value":639},") containing a hidden copy of each form:",{"type":39,"tag":104,"props":641,"children":643},{"className":106,"code":642,"language":14,"meta":108,"style":108},"\u003C!DOCTYPE html>\n\u003Chtml>\n  \u003Cbody>\n    \u003Cform name=\"contact\" data-netlify=\"true\" netlify-honeypot=\"bot-field\" hidden>\n      \u003Cinput type=\"hidden\" name=\"form-name\" value=\"contact\" \u002F>\n      \u003Cinput type=\"text\" name=\"name\" \u002F>\n      \u003Cinput type=\"email\" name=\"email\" \u002F>\n      \u003Ctextarea name=\"message\">\u003C\u002Ftextarea>\n      \u003Cinput name=\"bot-field\" \u002F>\n    \u003C\u002Fform>\n  \u003C\u002Fbody>\n\u003C\u002Fhtml>\n",[644],{"type":39,"tag":87,"props":645,"children":646},{"__ignoreMap":108},[647,669,684,700,783,862,917,973,1017,1053,1070,1087],{"type":39,"tag":114,"props":648,"children":649},{"class":116,"line":117},[650,655,660,665],{"type":39,"tag":114,"props":651,"children":652},{"style":121},[653],{"type":44,"value":654},"\u003C!",{"type":39,"tag":114,"props":656,"children":657},{"style":127},[658],{"type":44,"value":659},"DOCTYPE",{"type":39,"tag":114,"props":661,"children":662},{"style":133},[663],{"type":44,"value":664}," html",{"type":39,"tag":114,"props":666,"children":667},{"style":121},[668],{"type":44,"value":205},{"type":39,"tag":114,"props":670,"children":671},{"class":116,"line":208},[672,676,680],{"type":39,"tag":114,"props":673,"children":674},{"style":121},[675],{"type":44,"value":124},{"type":39,"tag":114,"props":677,"children":678},{"style":127},[679],{"type":44,"value":14},{"type":39,"tag":114,"props":681,"children":682},{"style":121},[683],{"type":44,"value":205},{"type":39,"tag":114,"props":685,"children":686},{"class":116,"line":296},[687,691,696],{"type":39,"tag":114,"props":688,"children":689},{"style":121},[690],{"type":44,"value":214},{"type":39,"tag":114,"props":692,"children":693},{"style":127},[694],{"type":44,"value":695},"body",{"type":39,"tag":114,"props":697,"children":698},{"style":121},[699],{"type":44,"value":205},{"type":39,"tag":114,"props":701,"children":702},{"class":116,"line":378},[703,708,712,716,720,724,728,732,736,740,744,748,752,757,761,765,770,774,779],{"type":39,"tag":114,"props":704,"children":705},{"style":121},[706],{"type":44,"value":707},"    \u003C",{"type":39,"tag":114,"props":709,"children":710},{"style":127},[711],{"type":44,"value":130},{"type":39,"tag":114,"props":713,"children":714},{"style":133},[715],{"type":44,"value":136},{"type":39,"tag":114,"props":717,"children":718},{"style":121},[719],{"type":44,"value":141},{"type":39,"tag":114,"props":721,"children":722},{"style":121},[723],{"type":44,"value":146},{"type":39,"tag":114,"props":725,"children":726},{"style":149},[727],{"type":44,"value":152},{"type":39,"tag":114,"props":729,"children":730},{"style":121},[731],{"type":44,"value":146},{"type":39,"tag":114,"props":733,"children":734},{"style":133},[735],{"type":44,"value":183},{"type":39,"tag":114,"props":737,"children":738},{"style":121},[739],{"type":44,"value":141},{"type":39,"tag":114,"props":741,"children":742},{"style":121},[743],{"type":44,"value":146},{"type":39,"tag":114,"props":745,"children":746},{"style":149},[747],{"type":44,"value":196},{"type":39,"tag":114,"props":749,"children":750},{"style":121},[751],{"type":44,"value":146},{"type":39,"tag":114,"props":753,"children":754},{"style":133},[755],{"type":44,"value":756}," netlify-honeypot",{"type":39,"tag":114,"props":758,"children":759},{"style":121},[760],{"type":44,"value":141},{"type":39,"tag":114,"props":762,"children":763},{"style":121},[764],{"type":44,"value":146},{"type":39,"tag":114,"props":766,"children":767},{"style":149},[768],{"type":44,"value":769},"bot-field",{"type":39,"tag":114,"props":771,"children":772},{"style":121},[773],{"type":44,"value":146},{"type":39,"tag":114,"props":775,"children":776},{"style":133},[777],{"type":44,"value":778}," hidden",{"type":39,"tag":114,"props":780,"children":781},{"style":121},[782],{"type":44,"value":205},{"type":39,"tag":114,"props":784,"children":785},{"class":116,"line":27},[786,791,795,799,803,807,812,816,820,824,828,832,836,841,845,849,853,857],{"type":39,"tag":114,"props":787,"children":788},{"style":121},[789],{"type":44,"value":790},"      \u003C",{"type":39,"tag":114,"props":792,"children":793},{"style":127},[794],{"type":44,"value":239},{"type":39,"tag":114,"props":796,"children":797},{"style":133},[798],{"type":44,"value":244},{"type":39,"tag":114,"props":800,"children":801},{"style":121},[802],{"type":44,"value":141},{"type":39,"tag":114,"props":804,"children":805},{"style":121},[806],{"type":44,"value":146},{"type":39,"tag":114,"props":808,"children":809},{"style":149},[810],{"type":44,"value":811},"hidden",{"type":39,"tag":114,"props":813,"children":814},{"style":121},[815],{"type":44,"value":146},{"type":39,"tag":114,"props":817,"children":818},{"style":133},[819],{"type":44,"value":136},{"type":39,"tag":114,"props":821,"children":822},{"style":121},[823],{"type":44,"value":141},{"type":39,"tag":114,"props":825,"children":826},{"style":121},[827],{"type":44,"value":146},{"type":39,"tag":114,"props":829,"children":830},{"style":149},[831],{"type":44,"value":529},{"type":39,"tag":114,"props":833,"children":834},{"style":121},[835],{"type":44,"value":146},{"type":39,"tag":114,"props":837,"children":838},{"style":133},[839],{"type":44,"value":840}," value",{"type":39,"tag":114,"props":842,"children":843},{"style":121},[844],{"type":44,"value":141},{"type":39,"tag":114,"props":846,"children":847},{"style":121},[848],{"type":44,"value":146},{"type":39,"tag":114,"props":850,"children":851},{"style":149},[852],{"type":44,"value":152},{"type":39,"tag":114,"props":854,"children":855},{"style":121},[856],{"type":44,"value":146},{"type":39,"tag":114,"props":858,"children":859},{"style":121},[860],{"type":44,"value":861}," \u002F>\n",{"type":39,"tag":114,"props":863,"children":864},{"class":116,"line":505},[865,869,873,877,881,885,889,893,897,901,905,909,913],{"type":39,"tag":114,"props":866,"children":867},{"style":121},[868],{"type":44,"value":790},{"type":39,"tag":114,"props":870,"children":871},{"style":127},[872],{"type":44,"value":239},{"type":39,"tag":114,"props":874,"children":875},{"style":133},[876],{"type":44,"value":244},{"type":39,"tag":114,"props":878,"children":879},{"style":121},[880],{"type":44,"value":141},{"type":39,"tag":114,"props":882,"children":883},{"style":121},[884],{"type":44,"value":146},{"type":39,"tag":114,"props":886,"children":887},{"style":149},[888],{"type":44,"value":44},{"type":39,"tag":114,"props":890,"children":891},{"style":121},[892],{"type":44,"value":146},{"type":39,"tag":114,"props":894,"children":895},{"style":133},[896],{"type":44,"value":136},{"type":39,"tag":114,"props":898,"children":899},{"style":121},[900],{"type":44,"value":141},{"type":39,"tag":114,"props":902,"children":903},{"style":121},[904],{"type":44,"value":146},{"type":39,"tag":114,"props":906,"children":907},{"style":149},[908],{"type":44,"value":100},{"type":39,"tag":114,"props":910,"children":911},{"style":121},[912],{"type":44,"value":146},{"type":39,"tag":114,"props":914,"children":915},{"style":121},[916],{"type":44,"value":861},{"type":39,"tag":114,"props":918,"children":920},{"class":116,"line":919},7,[921,925,929,933,937,941,945,949,953,957,961,965,969],{"type":39,"tag":114,"props":922,"children":923},{"style":121},[924],{"type":44,"value":790},{"type":39,"tag":114,"props":926,"children":927},{"style":127},[928],{"type":44,"value":239},{"type":39,"tag":114,"props":930,"children":931},{"style":133},[932],{"type":44,"value":244},{"type":39,"tag":114,"props":934,"children":935},{"style":121},[936],{"type":44,"value":141},{"type":39,"tag":114,"props":938,"children":939},{"style":121},[940],{"type":44,"value":146},{"type":39,"tag":114,"props":942,"children":943},{"style":149},[944],{"type":44,"value":339},{"type":39,"tag":114,"props":946,"children":947},{"style":121},[948],{"type":44,"value":146},{"type":39,"tag":114,"props":950,"children":951},{"style":133},[952],{"type":44,"value":136},{"type":39,"tag":114,"props":954,"children":955},{"style":121},[956],{"type":44,"value":141},{"type":39,"tag":114,"props":958,"children":959},{"style":121},[960],{"type":44,"value":146},{"type":39,"tag":114,"props":962,"children":963},{"style":149},[964],{"type":44,"value":339},{"type":39,"tag":114,"props":966,"children":967},{"style":121},[968],{"type":44,"value":146},{"type":39,"tag":114,"props":970,"children":971},{"style":121},[972],{"type":44,"value":861},{"type":39,"tag":114,"props":974,"children":976},{"class":116,"line":975},8,[977,981,985,989,993,997,1001,1005,1009,1013],{"type":39,"tag":114,"props":978,"children":979},{"style":121},[980],{"type":44,"value":790},{"type":39,"tag":114,"props":982,"children":983},{"style":127},[984],{"type":44,"value":405},{"type":39,"tag":114,"props":986,"children":987},{"style":133},[988],{"type":44,"value":136},{"type":39,"tag":114,"props":990,"children":991},{"style":121},[992],{"type":44,"value":141},{"type":39,"tag":114,"props":994,"children":995},{"style":121},[996],{"type":44,"value":146},{"type":39,"tag":114,"props":998,"children":999},{"style":149},[1000],{"type":44,"value":422},{"type":39,"tag":114,"props":1002,"children":1003},{"style":121},[1004],{"type":44,"value":146},{"type":39,"tag":114,"props":1006,"children":1007},{"style":121},[1008],{"type":44,"value":431},{"type":39,"tag":114,"props":1010,"children":1011},{"style":127},[1012],{"type":44,"value":405},{"type":39,"tag":114,"props":1014,"children":1015},{"style":121},[1016],{"type":44,"value":205},{"type":39,"tag":114,"props":1018,"children":1020},{"class":116,"line":1019},9,[1021,1025,1029,1033,1037,1041,1045,1049],{"type":39,"tag":114,"props":1022,"children":1023},{"style":121},[1024],{"type":44,"value":790},{"type":39,"tag":114,"props":1026,"children":1027},{"style":127},[1028],{"type":44,"value":239},{"type":39,"tag":114,"props":1030,"children":1031},{"style":133},[1032],{"type":44,"value":136},{"type":39,"tag":114,"props":1034,"children":1035},{"style":121},[1036],{"type":44,"value":141},{"type":39,"tag":114,"props":1038,"children":1039},{"style":121},[1040],{"type":44,"value":146},{"type":39,"tag":114,"props":1042,"children":1043},{"style":149},[1044],{"type":44,"value":769},{"type":39,"tag":114,"props":1046,"children":1047},{"style":121},[1048],{"type":44,"value":146},{"type":39,"tag":114,"props":1050,"children":1051},{"style":121},[1052],{"type":44,"value":861},{"type":39,"tag":114,"props":1054,"children":1056},{"class":116,"line":1055},10,[1057,1062,1066],{"type":39,"tag":114,"props":1058,"children":1059},{"style":121},[1060],{"type":44,"value":1061},"    \u003C\u002F",{"type":39,"tag":114,"props":1063,"children":1064},{"style":127},[1065],{"type":44,"value":130},{"type":39,"tag":114,"props":1067,"children":1068},{"style":121},[1069],{"type":44,"value":205},{"type":39,"tag":114,"props":1071,"children":1073},{"class":116,"line":1072},11,[1074,1079,1083],{"type":39,"tag":114,"props":1075,"children":1076},{"style":121},[1077],{"type":44,"value":1078},"  \u003C\u002F",{"type":39,"tag":114,"props":1080,"children":1081},{"style":127},[1082],{"type":44,"value":695},{"type":39,"tag":114,"props":1084,"children":1085},{"style":121},[1086],{"type":44,"value":205},{"type":39,"tag":114,"props":1088,"children":1090},{"class":116,"line":1089},12,[1091,1095,1099],{"type":39,"tag":114,"props":1092,"children":1093},{"style":121},[1094],{"type":44,"value":494},{"type":39,"tag":114,"props":1096,"children":1097},{"style":127},[1098],{"type":44,"value":14},{"type":39,"tag":114,"props":1100,"children":1101},{"style":121},[1102],{"type":44,"value":205},{"type":39,"tag":47,"props":1104,"children":1105},{},[1106],{"type":39,"tag":60,"props":1107,"children":1108},{},[1109],{"type":44,"value":1110},"Rules:",{"type":39,"tag":1112,"props":1113,"children":1114},"ul",{},[1115,1135,1140],{"type":39,"tag":1116,"props":1117,"children":1118},"li",{},[1119,1121,1126,1128,1133],{"type":44,"value":1120},"The form ",{"type":39,"tag":87,"props":1122,"children":1124},{"className":1123},[],[1125],{"type":44,"value":100},{"type":44,"value":1127}," must exactly match the ",{"type":39,"tag":87,"props":1129,"children":1131},{"className":1130},[],[1132],{"type":44,"value":529},{"type":44,"value":1134}," value used in your component's fetch call",{"type":39,"tag":1116,"props":1136,"children":1137},{},[1138],{"type":44,"value":1139},"Include every field your component submits — Netlify validates field names against the registered form",{"type":39,"tag":1116,"props":1141,"children":1142},{},[1143],{"type":44,"value":1144},"Without this file, Netlify cannot detect the form and submissions will silently fail",{"type":39,"tag":47,"props":1146,"children":1147},{},[1148,1150,1155],{"type":44,"value":1149},"Your component must also include a hidden ",{"type":39,"tag":87,"props":1151,"children":1153},{"className":1152},[],[1154],{"type":44,"value":529},{"type":44,"value":1156}," input:",{"type":39,"tag":104,"props":1158,"children":1162},{"className":1159,"code":1160,"language":1161,"meta":108,"style":108},"language-jsx shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cform name=\"contact\" method=\"POST\" data-netlify=\"true\">\n  \u003Cinput type=\"hidden\" name=\"form-name\" value=\"contact\" \u002F>\n  {\u002F* ... fields ... *\u002F}\n\u003C\u002Fform>\n","jsx",[1163],{"type":39,"tag":87,"props":1164,"children":1165},{"__ignoreMap":108},[1166,1241,1316,1335],{"type":39,"tag":114,"props":1167,"children":1168},{"class":116,"line":117},[1169,1173,1177,1181,1185,1189,1193,1197,1201,1205,1209,1213,1217,1221,1225,1229,1233,1237],{"type":39,"tag":114,"props":1170,"children":1171},{"style":121},[1172],{"type":44,"value":124},{"type":39,"tag":114,"props":1174,"children":1175},{"style":127},[1176],{"type":44,"value":130},{"type":39,"tag":114,"props":1178,"children":1179},{"style":133},[1180],{"type":44,"value":136},{"type":39,"tag":114,"props":1182,"children":1183},{"style":121},[1184],{"type":44,"value":141},{"type":39,"tag":114,"props":1186,"children":1187},{"style":121},[1188],{"type":44,"value":146},{"type":39,"tag":114,"props":1190,"children":1191},{"style":149},[1192],{"type":44,"value":152},{"type":39,"tag":114,"props":1194,"children":1195},{"style":121},[1196],{"type":44,"value":146},{"type":39,"tag":114,"props":1198,"children":1199},{"style":133},[1200],{"type":44,"value":161},{"type":39,"tag":114,"props":1202,"children":1203},{"style":121},[1204],{"type":44,"value":141},{"type":39,"tag":114,"props":1206,"children":1207},{"style":121},[1208],{"type":44,"value":146},{"type":39,"tag":114,"props":1210,"children":1211},{"style":149},[1212],{"type":44,"value":174},{"type":39,"tag":114,"props":1214,"children":1215},{"style":121},[1216],{"type":44,"value":146},{"type":39,"tag":114,"props":1218,"children":1219},{"style":133},[1220],{"type":44,"value":183},{"type":39,"tag":114,"props":1222,"children":1223},{"style":121},[1224],{"type":44,"value":141},{"type":39,"tag":114,"props":1226,"children":1227},{"style":121},[1228],{"type":44,"value":146},{"type":39,"tag":114,"props":1230,"children":1231},{"style":149},[1232],{"type":44,"value":196},{"type":39,"tag":114,"props":1234,"children":1235},{"style":121},[1236],{"type":44,"value":146},{"type":39,"tag":114,"props":1238,"children":1239},{"style":121},[1240],{"type":44,"value":205},{"type":39,"tag":114,"props":1242,"children":1243},{"class":116,"line":208},[1244,1248,1252,1256,1260,1264,1268,1272,1276,1280,1284,1288,1292,1296,1300,1304,1308,1312],{"type":39,"tag":114,"props":1245,"children":1246},{"style":121},[1247],{"type":44,"value":214},{"type":39,"tag":114,"props":1249,"children":1250},{"style":127},[1251],{"type":44,"value":239},{"type":39,"tag":114,"props":1253,"children":1254},{"style":133},[1255],{"type":44,"value":244},{"type":39,"tag":114,"props":1257,"children":1258},{"style":121},[1259],{"type":44,"value":141},{"type":39,"tag":114,"props":1261,"children":1262},{"style":121},[1263],{"type":44,"value":146},{"type":39,"tag":114,"props":1265,"children":1266},{"style":149},[1267],{"type":44,"value":811},{"type":39,"tag":114,"props":1269,"children":1270},{"style":121},[1271],{"type":44,"value":146},{"type":39,"tag":114,"props":1273,"children":1274},{"style":133},[1275],{"type":44,"value":136},{"type":39,"tag":114,"props":1277,"children":1278},{"style":121},[1279],{"type":44,"value":141},{"type":39,"tag":114,"props":1281,"children":1282},{"style":121},[1283],{"type":44,"value":146},{"type":39,"tag":114,"props":1285,"children":1286},{"style":149},[1287],{"type":44,"value":529},{"type":39,"tag":114,"props":1289,"children":1290},{"style":121},[1291],{"type":44,"value":146},{"type":39,"tag":114,"props":1293,"children":1294},{"style":133},[1295],{"type":44,"value":840},{"type":39,"tag":114,"props":1297,"children":1298},{"style":121},[1299],{"type":44,"value":141},{"type":39,"tag":114,"props":1301,"children":1302},{"style":121},[1303],{"type":44,"value":146},{"type":39,"tag":114,"props":1305,"children":1306},{"style":149},[1307],{"type":44,"value":152},{"type":39,"tag":114,"props":1309,"children":1310},{"style":121},[1311],{"type":44,"value":146},{"type":39,"tag":114,"props":1313,"children":1314},{"style":121},[1315],{"type":44,"value":861},{"type":39,"tag":114,"props":1317,"children":1318},{"class":116,"line":296},[1319,1324,1330],{"type":39,"tag":114,"props":1320,"children":1321},{"style":121},[1322],{"type":44,"value":1323},"  {",{"type":39,"tag":114,"props":1325,"children":1327},{"style":1326},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[1328],{"type":44,"value":1329},"\u002F* ... fields ... *\u002F",{"type":39,"tag":114,"props":1331,"children":1332},{"style":121},[1333],{"type":44,"value":1334},"}\n",{"type":39,"tag":114,"props":1336,"children":1337},{"class":116,"line":378},[1338,1342,1346],{"type":39,"tag":114,"props":1339,"children":1340},{"style":121},[1341],{"type":44,"value":494},{"type":39,"tag":114,"props":1343,"children":1344},{"style":127},[1345],{"type":44,"value":130},{"type":39,"tag":114,"props":1347,"children":1348},{"style":121},[1349],{"type":44,"value":205},{"type":39,"tag":75,"props":1351,"children":1353},{"id":1352},"ajax-submissions",[1354],{"type":44,"value":1355},"AJAX Submissions",{"type":39,"tag":53,"props":1357,"children":1358},{},[1359],{"type":39,"tag":47,"props":1360,"children":1361},{},[1362,1367,1369,1375,1377,1383,1385,1391,1393,1399,1401,1407,1409,1415,1417,1423,1425,1429,1431,1436],{"type":39,"tag":60,"props":1363,"children":1364},{},[1365],{"type":44,"value":1366},"Netlify Forms does not accept JSON.",{"type":44,"value":1368}," The submission body must be ",{"type":39,"tag":87,"props":1370,"children":1372},{"className":1371},[],[1373],{"type":44,"value":1374},"application\u002Fx-www-form-urlencoded",{"type":44,"value":1376}," (encode the fields with ",{"type":39,"tag":87,"props":1378,"children":1380},{"className":1379},[],[1381],{"type":44,"value":1382},"URLSearchParams",{"type":44,"value":1384},") or ",{"type":39,"tag":87,"props":1386,"children":1388},{"className":1387},[],[1389],{"type":44,"value":1390},"multipart\u002Fform-data",{"type":44,"value":1392}," (a raw ",{"type":39,"tag":87,"props":1394,"children":1396},{"className":1395},[],[1397],{"type":44,"value":1398},"FormData",{"type":44,"value":1400}," object, for file uploads). A ",{"type":39,"tag":87,"props":1402,"children":1404},{"className":1403},[],[1405],{"type":44,"value":1406},"fetch",{"type":44,"value":1408}," that sends ",{"type":39,"tag":87,"props":1410,"children":1412},{"className":1411},[],[1413],{"type":44,"value":1414},"JSON.stringify(...)",{"type":44,"value":1416}," with ",{"type":39,"tag":87,"props":1418,"children":1420},{"className":1419},[],[1421],{"type":44,"value":1422},"Content-Type: application\u002Fjson",{"type":44,"value":1424}," is silently ",{"type":39,"tag":60,"props":1426,"children":1427},{},[1428],{"type":44,"value":71},{"type":44,"value":1430}," recorded as a submission — always send URL-encoded key\u002Fvalue pairs (or ",{"type":39,"tag":87,"props":1432,"children":1434},{"className":1433},[],[1435],{"type":44,"value":1398},{"type":44,"value":1437},"), never JSON.",{"type":39,"tag":1439,"props":1440,"children":1442},"h3",{"id":1441},"vanilla-javascript",[1443],{"type":44,"value":1444},"Vanilla JavaScript",{"type":39,"tag":104,"props":1446,"children":1450},{"className":1447,"code":1448,"language":1449,"meta":108,"style":108},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const form = document.querySelector(\"form\");\nform.addEventListener(\"submit\", async (e) => {\n  e.preventDefault();\n  const formData = new FormData(form);\n  await fetch(\"\u002F\", {\n    method: \"POST\",\n    headers: { \"Content-Type\": \"application\u002Fx-www-form-urlencoded\" },\n    body: new URLSearchParams(formData).toString(),\n  });\n});\n","javascript",[1451],{"type":39,"tag":87,"props":1452,"children":1453},{"__ignoreMap":108},[1454,1514,1581,1607,1651,1690,1721,1772,1823,1839],{"type":39,"tag":114,"props":1455,"children":1456},{"class":116,"line":117},[1457,1462,1467,1471,1476,1481,1487,1492,1496,1500,1504,1509],{"type":39,"tag":114,"props":1458,"children":1459},{"style":133},[1460],{"type":44,"value":1461},"const",{"type":39,"tag":114,"props":1463,"children":1464},{"style":227},[1465],{"type":44,"value":1466}," form ",{"type":39,"tag":114,"props":1468,"children":1469},{"style":121},[1470],{"type":44,"value":141},{"type":39,"tag":114,"props":1472,"children":1473},{"style":227},[1474],{"type":44,"value":1475}," document",{"type":39,"tag":114,"props":1477,"children":1478},{"style":121},[1479],{"type":44,"value":1480},".",{"type":39,"tag":114,"props":1482,"children":1484},{"style":1483},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[1485],{"type":44,"value":1486},"querySelector",{"type":39,"tag":114,"props":1488,"children":1489},{"style":227},[1490],{"type":44,"value":1491},"(",{"type":39,"tag":114,"props":1493,"children":1494},{"style":121},[1495],{"type":44,"value":146},{"type":39,"tag":114,"props":1497,"children":1498},{"style":149},[1499],{"type":44,"value":130},{"type":39,"tag":114,"props":1501,"children":1502},{"style":121},[1503],{"type":44,"value":146},{"type":39,"tag":114,"props":1505,"children":1506},{"style":227},[1507],{"type":44,"value":1508},")",{"type":39,"tag":114,"props":1510,"children":1511},{"style":121},[1512],{"type":44,"value":1513},";\n",{"type":39,"tag":114,"props":1515,"children":1516},{"class":116,"line":208},[1517,1521,1525,1530,1534,1538,1542,1546,1551,1556,1561,1567,1571,1576],{"type":39,"tag":114,"props":1518,"children":1519},{"style":227},[1520],{"type":44,"value":130},{"type":39,"tag":114,"props":1522,"children":1523},{"style":121},[1524],{"type":44,"value":1480},{"type":39,"tag":114,"props":1526,"children":1527},{"style":1483},[1528],{"type":44,"value":1529},"addEventListener",{"type":39,"tag":114,"props":1531,"children":1532},{"style":227},[1533],{"type":44,"value":1491},{"type":39,"tag":114,"props":1535,"children":1536},{"style":121},[1537],{"type":44,"value":146},{"type":39,"tag":114,"props":1539,"children":1540},{"style":149},[1541],{"type":44,"value":476},{"type":39,"tag":114,"props":1543,"children":1544},{"style":121},[1545],{"type":44,"value":146},{"type":39,"tag":114,"props":1547,"children":1548},{"style":121},[1549],{"type":44,"value":1550},",",{"type":39,"tag":114,"props":1552,"children":1553},{"style":133},[1554],{"type":44,"value":1555}," async",{"type":39,"tag":114,"props":1557,"children":1558},{"style":121},[1559],{"type":44,"value":1560}," (",{"type":39,"tag":114,"props":1562,"children":1564},{"style":1563},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic",[1565],{"type":44,"value":1566},"e",{"type":39,"tag":114,"props":1568,"children":1569},{"style":121},[1570],{"type":44,"value":1508},{"type":39,"tag":114,"props":1572,"children":1573},{"style":133},[1574],{"type":44,"value":1575}," =>",{"type":39,"tag":114,"props":1577,"children":1578},{"style":121},[1579],{"type":44,"value":1580}," {\n",{"type":39,"tag":114,"props":1582,"children":1583},{"class":116,"line":296},[1584,1589,1593,1598,1603],{"type":39,"tag":114,"props":1585,"children":1586},{"style":227},[1587],{"type":44,"value":1588},"  e",{"type":39,"tag":114,"props":1590,"children":1591},{"style":121},[1592],{"type":44,"value":1480},{"type":39,"tag":114,"props":1594,"children":1595},{"style":1483},[1596],{"type":44,"value":1597},"preventDefault",{"type":39,"tag":114,"props":1599,"children":1600},{"style":127},[1601],{"type":44,"value":1602},"()",{"type":39,"tag":114,"props":1604,"children":1605},{"style":121},[1606],{"type":44,"value":1513},{"type":39,"tag":114,"props":1608,"children":1609},{"class":116,"line":378},[1610,1615,1620,1625,1630,1635,1639,1643,1647],{"type":39,"tag":114,"props":1611,"children":1612},{"style":133},[1613],{"type":44,"value":1614},"  const",{"type":39,"tag":114,"props":1616,"children":1617},{"style":227},[1618],{"type":44,"value":1619}," formData",{"type":39,"tag":114,"props":1621,"children":1622},{"style":121},[1623],{"type":44,"value":1624}," =",{"type":39,"tag":114,"props":1626,"children":1627},{"style":121},[1628],{"type":44,"value":1629}," new",{"type":39,"tag":114,"props":1631,"children":1632},{"style":1483},[1633],{"type":44,"value":1634}," FormData",{"type":39,"tag":114,"props":1636,"children":1637},{"style":127},[1638],{"type":44,"value":1491},{"type":39,"tag":114,"props":1640,"children":1641},{"style":227},[1642],{"type":44,"value":130},{"type":39,"tag":114,"props":1644,"children":1645},{"style":127},[1646],{"type":44,"value":1508},{"type":39,"tag":114,"props":1648,"children":1649},{"style":121},[1650],{"type":44,"value":1513},{"type":39,"tag":114,"props":1652,"children":1653},{"class":116,"line":27},[1654,1660,1665,1669,1673,1678,1682,1686],{"type":39,"tag":114,"props":1655,"children":1657},{"style":1656},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[1658],{"type":44,"value":1659},"  await",{"type":39,"tag":114,"props":1661,"children":1662},{"style":1483},[1663],{"type":44,"value":1664}," fetch",{"type":39,"tag":114,"props":1666,"children":1667},{"style":127},[1668],{"type":44,"value":1491},{"type":39,"tag":114,"props":1670,"children":1671},{"style":121},[1672],{"type":44,"value":146},{"type":39,"tag":114,"props":1674,"children":1675},{"style":149},[1676],{"type":44,"value":1677},"\u002F",{"type":39,"tag":114,"props":1679,"children":1680},{"style":121},[1681],{"type":44,"value":146},{"type":39,"tag":114,"props":1683,"children":1684},{"style":121},[1685],{"type":44,"value":1550},{"type":39,"tag":114,"props":1687,"children":1688},{"style":121},[1689],{"type":44,"value":1580},{"type":39,"tag":114,"props":1691,"children":1692},{"class":116,"line":505},[1693,1698,1703,1708,1712,1716],{"type":39,"tag":114,"props":1694,"children":1695},{"style":127},[1696],{"type":44,"value":1697},"    method",{"type":39,"tag":114,"props":1699,"children":1700},{"style":121},[1701],{"type":44,"value":1702},":",{"type":39,"tag":114,"props":1704,"children":1705},{"style":121},[1706],{"type":44,"value":1707}," \"",{"type":39,"tag":114,"props":1709,"children":1710},{"style":149},[1711],{"type":44,"value":174},{"type":39,"tag":114,"props":1713,"children":1714},{"style":121},[1715],{"type":44,"value":146},{"type":39,"tag":114,"props":1717,"children":1718},{"style":121},[1719],{"type":44,"value":1720},",\n",{"type":39,"tag":114,"props":1722,"children":1723},{"class":116,"line":919},[1724,1729,1733,1738,1742,1747,1751,1755,1759,1763,1767],{"type":39,"tag":114,"props":1725,"children":1726},{"style":127},[1727],{"type":44,"value":1728},"    headers",{"type":39,"tag":114,"props":1730,"children":1731},{"style":121},[1732],{"type":44,"value":1702},{"type":39,"tag":114,"props":1734,"children":1735},{"style":121},[1736],{"type":44,"value":1737}," {",{"type":39,"tag":114,"props":1739,"children":1740},{"style":121},[1741],{"type":44,"value":1707},{"type":39,"tag":114,"props":1743,"children":1744},{"style":127},[1745],{"type":44,"value":1746},"Content-Type",{"type":39,"tag":114,"props":1748,"children":1749},{"style":121},[1750],{"type":44,"value":146},{"type":39,"tag":114,"props":1752,"children":1753},{"style":121},[1754],{"type":44,"value":1702},{"type":39,"tag":114,"props":1756,"children":1757},{"style":121},[1758],{"type":44,"value":1707},{"type":39,"tag":114,"props":1760,"children":1761},{"style":149},[1762],{"type":44,"value":1374},{"type":39,"tag":114,"props":1764,"children":1765},{"style":121},[1766],{"type":44,"value":146},{"type":39,"tag":114,"props":1768,"children":1769},{"style":121},[1770],{"type":44,"value":1771}," },\n",{"type":39,"tag":114,"props":1773,"children":1774},{"class":116,"line":975},[1775,1780,1784,1788,1793,1797,1802,1806,1810,1815,1819],{"type":39,"tag":114,"props":1776,"children":1777},{"style":127},[1778],{"type":44,"value":1779},"    body",{"type":39,"tag":114,"props":1781,"children":1782},{"style":121},[1783],{"type":44,"value":1702},{"type":39,"tag":114,"props":1785,"children":1786},{"style":121},[1787],{"type":44,"value":1629},{"type":39,"tag":114,"props":1789,"children":1790},{"style":1483},[1791],{"type":44,"value":1792}," URLSearchParams",{"type":39,"tag":114,"props":1794,"children":1795},{"style":127},[1796],{"type":44,"value":1491},{"type":39,"tag":114,"props":1798,"children":1799},{"style":227},[1800],{"type":44,"value":1801},"formData",{"type":39,"tag":114,"props":1803,"children":1804},{"style":127},[1805],{"type":44,"value":1508},{"type":39,"tag":114,"props":1807,"children":1808},{"style":121},[1809],{"type":44,"value":1480},{"type":39,"tag":114,"props":1811,"children":1812},{"style":1483},[1813],{"type":44,"value":1814},"toString",{"type":39,"tag":114,"props":1816,"children":1817},{"style":127},[1818],{"type":44,"value":1602},{"type":39,"tag":114,"props":1820,"children":1821},{"style":121},[1822],{"type":44,"value":1720},{"type":39,"tag":114,"props":1824,"children":1825},{"class":116,"line":1019},[1826,1831,1835],{"type":39,"tag":114,"props":1827,"children":1828},{"style":121},[1829],{"type":44,"value":1830},"  }",{"type":39,"tag":114,"props":1832,"children":1833},{"style":127},[1834],{"type":44,"value":1508},{"type":39,"tag":114,"props":1836,"children":1837},{"style":121},[1838],{"type":44,"value":1513},{"type":39,"tag":114,"props":1840,"children":1841},{"class":116,"line":1055},[1842,1847,1851],{"type":39,"tag":114,"props":1843,"children":1844},{"style":121},[1845],{"type":44,"value":1846},"}",{"type":39,"tag":114,"props":1848,"children":1849},{"style":227},[1850],{"type":44,"value":1508},{"type":39,"tag":114,"props":1852,"children":1853},{"style":121},[1854],{"type":44,"value":1513},{"type":39,"tag":53,"props":1856,"children":1857},{},[1858],{"type":39,"tag":47,"props":1859,"children":1860},{},[1861,1866,1868,1873,1875,1881,1883,1887,1889,1895,1897,1903],{"type":39,"tag":60,"props":1862,"children":1863},{},[1864],{"type":44,"value":1865},"SSR frameworks (TanStack Start, Next.js, SvelteKit, Remix, Nuxt):",{"type":44,"value":1867}," The ",{"type":39,"tag":87,"props":1869,"children":1871},{"className":1870},[],[1872],{"type":44,"value":1406},{"type":44,"value":1874}," URL must target the static skeleton\nfile path (e.g. ",{"type":39,"tag":87,"props":1876,"children":1878},{"className":1877},[],[1879],{"type":44,"value":1880},"\"\u002F__forms.html\"",{"type":44,"value":1882},"), ",{"type":39,"tag":60,"props":1884,"children":1885},{},[1886],{"type":44,"value":71},{"type":44,"value":1888}," ",{"type":39,"tag":87,"props":1890,"children":1892},{"className":1891},[],[1893],{"type":44,"value":1894},"\"\u002F\"",{"type":44,"value":1896},". In SSR apps, ",{"type":39,"tag":87,"props":1898,"children":1900},{"className":1899},[],[1901],{"type":44,"value":1902},"fetch(\"\u002F\")",{"type":44,"value":1904}," is intercepted by the SSR catch-all\nfunction and never reaches Netlify's form processing middleware. See the React example and troubleshooting section below.",{"type":39,"tag":1439,"props":1906,"children":1908},{"id":1907},"react-example",[1909],{"type":44,"value":1910},"React Example",{"type":39,"tag":104,"props":1912,"children":1916},{"className":1913,"code":1914,"language":1915,"meta":108,"style":108},"language-tsx shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","function ContactForm() {\n  const handleSubmit = async (e: React.FormEvent\u003CHTMLFormElement>) => {\n    e.preventDefault();\n    const formData = new FormData(e.currentTarget);\n    \u002F\u002F For SSR apps, use the skeleton file path instead of \"\u002F\" (e.g. \"\u002F__forms.html\")\n    const response = await fetch(\"\u002F__forms.html\", {\n      method: \"POST\",\n      headers: { \"Content-Type\": \"application\u002Fx-www-form-urlencoded\" },\n      body: new URLSearchParams(formData as any).toString(),\n    });\n    if (response.ok) {\n      \u002F\u002F Show success feedback\n    }\n  };\n\n  return (\n    \u003Cform name=\"contact\" method=\"POST\" data-netlify=\"true\" onSubmit={handleSubmit}>\n      \u003Cinput type=\"hidden\" name=\"form-name\" value=\"contact\" \u002F>\n      \u003Cinput type=\"text\" name=\"name\" placeholder=\"Name\" \u002F>\n      \u003Cinput type=\"email\" name=\"email\" placeholder=\"Email\" \u002F>\n      \u003Ctextarea name=\"message\" placeholder=\"Message\" \u002F>\n      \u003Cbutton type=\"submit\">Send\u003C\u002Fbutton>\n    \u003C\u002Fform>\n  );\n}\n","tsx",[1917],{"type":39,"tag":87,"props":1918,"children":1919},{"__ignoreMap":108},[1920,1941,2010,2034,2083,2091,2141,2169,2217,2275,2291,2327,2335,2344,2353,2363,2377,2469,2545,2623,2700,2757,2809,2825,2837],{"type":39,"tag":114,"props":1921,"children":1922},{"class":116,"line":117},[1923,1928,1933,1937],{"type":39,"tag":114,"props":1924,"children":1925},{"style":133},[1926],{"type":44,"value":1927},"function",{"type":39,"tag":114,"props":1929,"children":1930},{"style":1483},[1931],{"type":44,"value":1932}," ContactForm",{"type":39,"tag":114,"props":1934,"children":1935},{"style":121},[1936],{"type":44,"value":1602},{"type":39,"tag":114,"props":1938,"children":1939},{"style":121},[1940],{"type":44,"value":1580},{"type":39,"tag":114,"props":1942,"children":1943},{"class":116,"line":208},[1944,1948,1953,1957,1961,1965,1969,1973,1979,1983,1988,1992,1997,2002,2006],{"type":39,"tag":114,"props":1945,"children":1946},{"style":133},[1947],{"type":44,"value":1614},{"type":39,"tag":114,"props":1949,"children":1950},{"style":227},[1951],{"type":44,"value":1952}," handleSubmit",{"type":39,"tag":114,"props":1954,"children":1955},{"style":121},[1956],{"type":44,"value":1624},{"type":39,"tag":114,"props":1958,"children":1959},{"style":133},[1960],{"type":44,"value":1555},{"type":39,"tag":114,"props":1962,"children":1963},{"style":121},[1964],{"type":44,"value":1560},{"type":39,"tag":114,"props":1966,"children":1967},{"style":1563},[1968],{"type":44,"value":1566},{"type":39,"tag":114,"props":1970,"children":1971},{"style":121},[1972],{"type":44,"value":1702},{"type":39,"tag":114,"props":1974,"children":1976},{"style":1975},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1977],{"type":44,"value":1978}," React",{"type":39,"tag":114,"props":1980,"children":1981},{"style":121},[1982],{"type":44,"value":1480},{"type":39,"tag":114,"props":1984,"children":1985},{"style":1975},[1986],{"type":44,"value":1987},"FormEvent",{"type":39,"tag":114,"props":1989,"children":1990},{"style":121},[1991],{"type":44,"value":124},{"type":39,"tag":114,"props":1993,"children":1994},{"style":1975},[1995],{"type":44,"value":1996},"HTMLFormElement",{"type":39,"tag":114,"props":1998,"children":1999},{"style":121},[2000],{"type":44,"value":2001},">)",{"type":39,"tag":114,"props":2003,"children":2004},{"style":133},[2005],{"type":44,"value":1575},{"type":39,"tag":114,"props":2007,"children":2008},{"style":121},[2009],{"type":44,"value":1580},{"type":39,"tag":114,"props":2011,"children":2012},{"class":116,"line":296},[2013,2018,2022,2026,2030],{"type":39,"tag":114,"props":2014,"children":2015},{"style":227},[2016],{"type":44,"value":2017},"    e",{"type":39,"tag":114,"props":2019,"children":2020},{"style":121},[2021],{"type":44,"value":1480},{"type":39,"tag":114,"props":2023,"children":2024},{"style":1483},[2025],{"type":44,"value":1597},{"type":39,"tag":114,"props":2027,"children":2028},{"style":127},[2029],{"type":44,"value":1602},{"type":39,"tag":114,"props":2031,"children":2032},{"style":121},[2033],{"type":44,"value":1513},{"type":39,"tag":114,"props":2035,"children":2036},{"class":116,"line":378},[2037,2042,2046,2050,2054,2058,2062,2066,2070,2075,2079],{"type":39,"tag":114,"props":2038,"children":2039},{"style":133},[2040],{"type":44,"value":2041},"    const",{"type":39,"tag":114,"props":2043,"children":2044},{"style":227},[2045],{"type":44,"value":1619},{"type":39,"tag":114,"props":2047,"children":2048},{"style":121},[2049],{"type":44,"value":1624},{"type":39,"tag":114,"props":2051,"children":2052},{"style":121},[2053],{"type":44,"value":1629},{"type":39,"tag":114,"props":2055,"children":2056},{"style":1483},[2057],{"type":44,"value":1634},{"type":39,"tag":114,"props":2059,"children":2060},{"style":127},[2061],{"type":44,"value":1491},{"type":39,"tag":114,"props":2063,"children":2064},{"style":227},[2065],{"type":44,"value":1566},{"type":39,"tag":114,"props":2067,"children":2068},{"style":121},[2069],{"type":44,"value":1480},{"type":39,"tag":114,"props":2071,"children":2072},{"style":227},[2073],{"type":44,"value":2074},"currentTarget",{"type":39,"tag":114,"props":2076,"children":2077},{"style":127},[2078],{"type":44,"value":1508},{"type":39,"tag":114,"props":2080,"children":2081},{"style":121},[2082],{"type":44,"value":1513},{"type":39,"tag":114,"props":2084,"children":2085},{"class":116,"line":27},[2086],{"type":39,"tag":114,"props":2087,"children":2088},{"style":1326},[2089],{"type":44,"value":2090},"    \u002F\u002F For SSR apps, use the skeleton file path instead of \"\u002F\" (e.g. \"\u002F__forms.html\")\n",{"type":39,"tag":114,"props":2092,"children":2093},{"class":116,"line":505},[2094,2098,2103,2107,2112,2116,2120,2124,2129,2133,2137],{"type":39,"tag":114,"props":2095,"children":2096},{"style":133},[2097],{"type":44,"value":2041},{"type":39,"tag":114,"props":2099,"children":2100},{"style":227},[2101],{"type":44,"value":2102}," response",{"type":39,"tag":114,"props":2104,"children":2105},{"style":121},[2106],{"type":44,"value":1624},{"type":39,"tag":114,"props":2108,"children":2109},{"style":1656},[2110],{"type":44,"value":2111}," await",{"type":39,"tag":114,"props":2113,"children":2114},{"style":1483},[2115],{"type":44,"value":1664},{"type":39,"tag":114,"props":2117,"children":2118},{"style":127},[2119],{"type":44,"value":1491},{"type":39,"tag":114,"props":2121,"children":2122},{"style":121},[2123],{"type":44,"value":146},{"type":39,"tag":114,"props":2125,"children":2126},{"style":149},[2127],{"type":44,"value":2128},"\u002F__forms.html",{"type":39,"tag":114,"props":2130,"children":2131},{"style":121},[2132],{"type":44,"value":146},{"type":39,"tag":114,"props":2134,"children":2135},{"style":121},[2136],{"type":44,"value":1550},{"type":39,"tag":114,"props":2138,"children":2139},{"style":121},[2140],{"type":44,"value":1580},{"type":39,"tag":114,"props":2142,"children":2143},{"class":116,"line":919},[2144,2149,2153,2157,2161,2165],{"type":39,"tag":114,"props":2145,"children":2146},{"style":127},[2147],{"type":44,"value":2148},"      method",{"type":39,"tag":114,"props":2150,"children":2151},{"style":121},[2152],{"type":44,"value":1702},{"type":39,"tag":114,"props":2154,"children":2155},{"style":121},[2156],{"type":44,"value":1707},{"type":39,"tag":114,"props":2158,"children":2159},{"style":149},[2160],{"type":44,"value":174},{"type":39,"tag":114,"props":2162,"children":2163},{"style":121},[2164],{"type":44,"value":146},{"type":39,"tag":114,"props":2166,"children":2167},{"style":121},[2168],{"type":44,"value":1720},{"type":39,"tag":114,"props":2170,"children":2171},{"class":116,"line":975},[2172,2177,2181,2185,2189,2193,2197,2201,2205,2209,2213],{"type":39,"tag":114,"props":2173,"children":2174},{"style":127},[2175],{"type":44,"value":2176},"      headers",{"type":39,"tag":114,"props":2178,"children":2179},{"style":121},[2180],{"type":44,"value":1702},{"type":39,"tag":114,"props":2182,"children":2183},{"style":121},[2184],{"type":44,"value":1737},{"type":39,"tag":114,"props":2186,"children":2187},{"style":121},[2188],{"type":44,"value":1707},{"type":39,"tag":114,"props":2190,"children":2191},{"style":127},[2192],{"type":44,"value":1746},{"type":39,"tag":114,"props":2194,"children":2195},{"style":121},[2196],{"type":44,"value":146},{"type":39,"tag":114,"props":2198,"children":2199},{"style":121},[2200],{"type":44,"value":1702},{"type":39,"tag":114,"props":2202,"children":2203},{"style":121},[2204],{"type":44,"value":1707},{"type":39,"tag":114,"props":2206,"children":2207},{"style":149},[2208],{"type":44,"value":1374},{"type":39,"tag":114,"props":2210,"children":2211},{"style":121},[2212],{"type":44,"value":146},{"type":39,"tag":114,"props":2214,"children":2215},{"style":121},[2216],{"type":44,"value":1771},{"type":39,"tag":114,"props":2218,"children":2219},{"class":116,"line":1019},[2220,2225,2229,2233,2237,2241,2245,2250,2255,2259,2263,2267,2271],{"type":39,"tag":114,"props":2221,"children":2222},{"style":127},[2223],{"type":44,"value":2224},"      body",{"type":39,"tag":114,"props":2226,"children":2227},{"style":121},[2228],{"type":44,"value":1702},{"type":39,"tag":114,"props":2230,"children":2231},{"style":121},[2232],{"type":44,"value":1629},{"type":39,"tag":114,"props":2234,"children":2235},{"style":1483},[2236],{"type":44,"value":1792},{"type":39,"tag":114,"props":2238,"children":2239},{"style":127},[2240],{"type":44,"value":1491},{"type":39,"tag":114,"props":2242,"children":2243},{"style":227},[2244],{"type":44,"value":1801},{"type":39,"tag":114,"props":2246,"children":2247},{"style":1656},[2248],{"type":44,"value":2249}," as",{"type":39,"tag":114,"props":2251,"children":2252},{"style":1975},[2253],{"type":44,"value":2254}," any",{"type":39,"tag":114,"props":2256,"children":2257},{"style":127},[2258],{"type":44,"value":1508},{"type":39,"tag":114,"props":2260,"children":2261},{"style":121},[2262],{"type":44,"value":1480},{"type":39,"tag":114,"props":2264,"children":2265},{"style":1483},[2266],{"type":44,"value":1814},{"type":39,"tag":114,"props":2268,"children":2269},{"style":127},[2270],{"type":44,"value":1602},{"type":39,"tag":114,"props":2272,"children":2273},{"style":121},[2274],{"type":44,"value":1720},{"type":39,"tag":114,"props":2276,"children":2277},{"class":116,"line":1055},[2278,2283,2287],{"type":39,"tag":114,"props":2279,"children":2280},{"style":121},[2281],{"type":44,"value":2282},"    }",{"type":39,"tag":114,"props":2284,"children":2285},{"style":127},[2286],{"type":44,"value":1508},{"type":39,"tag":114,"props":2288,"children":2289},{"style":121},[2290],{"type":44,"value":1513},{"type":39,"tag":114,"props":2292,"children":2293},{"class":116,"line":1072},[2294,2299,2303,2308,2312,2317,2322],{"type":39,"tag":114,"props":2295,"children":2296},{"style":1656},[2297],{"type":44,"value":2298},"    if",{"type":39,"tag":114,"props":2300,"children":2301},{"style":127},[2302],{"type":44,"value":1560},{"type":39,"tag":114,"props":2304,"children":2305},{"style":227},[2306],{"type":44,"value":2307},"response",{"type":39,"tag":114,"props":2309,"children":2310},{"style":121},[2311],{"type":44,"value":1480},{"type":39,"tag":114,"props":2313,"children":2314},{"style":227},[2315],{"type":44,"value":2316},"ok",{"type":39,"tag":114,"props":2318,"children":2319},{"style":127},[2320],{"type":44,"value":2321},") ",{"type":39,"tag":114,"props":2323,"children":2324},{"style":121},[2325],{"type":44,"value":2326},"{\n",{"type":39,"tag":114,"props":2328,"children":2329},{"class":116,"line":1089},[2330],{"type":39,"tag":114,"props":2331,"children":2332},{"style":1326},[2333],{"type":44,"value":2334},"      \u002F\u002F Show success feedback\n",{"type":39,"tag":114,"props":2336,"children":2338},{"class":116,"line":2337},13,[2339],{"type":39,"tag":114,"props":2340,"children":2341},{"style":121},[2342],{"type":44,"value":2343},"    }\n",{"type":39,"tag":114,"props":2345,"children":2347},{"class":116,"line":2346},14,[2348],{"type":39,"tag":114,"props":2349,"children":2350},{"style":121},[2351],{"type":44,"value":2352},"  };\n",{"type":39,"tag":114,"props":2354,"children":2356},{"class":116,"line":2355},15,[2357],{"type":39,"tag":114,"props":2358,"children":2360},{"emptyLinePlaceholder":2359},true,[2361],{"type":44,"value":2362},"\n",{"type":39,"tag":114,"props":2364,"children":2366},{"class":116,"line":2365},16,[2367,2372],{"type":39,"tag":114,"props":2368,"children":2369},{"style":1656},[2370],{"type":44,"value":2371},"  return",{"type":39,"tag":114,"props":2373,"children":2374},{"style":127},[2375],{"type":44,"value":2376}," (\n",{"type":39,"tag":114,"props":2378,"children":2380},{"class":116,"line":2379},17,[2381,2385,2389,2393,2397,2401,2405,2409,2413,2417,2421,2425,2429,2433,2437,2441,2445,2449,2454,2459,2464],{"type":39,"tag":114,"props":2382,"children":2383},{"style":121},[2384],{"type":44,"value":707},{"type":39,"tag":114,"props":2386,"children":2387},{"style":127},[2388],{"type":44,"value":130},{"type":39,"tag":114,"props":2390,"children":2391},{"style":133},[2392],{"type":44,"value":136},{"type":39,"tag":114,"props":2394,"children":2395},{"style":121},[2396],{"type":44,"value":141},{"type":39,"tag":114,"props":2398,"children":2399},{"style":121},[2400],{"type":44,"value":146},{"type":39,"tag":114,"props":2402,"children":2403},{"style":149},[2404],{"type":44,"value":152},{"type":39,"tag":114,"props":2406,"children":2407},{"style":121},[2408],{"type":44,"value":146},{"type":39,"tag":114,"props":2410,"children":2411},{"style":133},[2412],{"type":44,"value":161},{"type":39,"tag":114,"props":2414,"children":2415},{"style":121},[2416],{"type":44,"value":141},{"type":39,"tag":114,"props":2418,"children":2419},{"style":121},[2420],{"type":44,"value":146},{"type":39,"tag":114,"props":2422,"children":2423},{"style":149},[2424],{"type":44,"value":174},{"type":39,"tag":114,"props":2426,"children":2427},{"style":121},[2428],{"type":44,"value":146},{"type":39,"tag":114,"props":2430,"children":2431},{"style":133},[2432],{"type":44,"value":183},{"type":39,"tag":114,"props":2434,"children":2435},{"style":121},[2436],{"type":44,"value":141},{"type":39,"tag":114,"props":2438,"children":2439},{"style":121},[2440],{"type":44,"value":146},{"type":39,"tag":114,"props":2442,"children":2443},{"style":149},[2444],{"type":44,"value":196},{"type":39,"tag":114,"props":2446,"children":2447},{"style":121},[2448],{"type":44,"value":146},{"type":39,"tag":114,"props":2450,"children":2451},{"style":133},[2452],{"type":44,"value":2453}," onSubmit",{"type":39,"tag":114,"props":2455,"children":2456},{"style":121},[2457],{"type":44,"value":2458},"={",{"type":39,"tag":114,"props":2460,"children":2461},{"style":227},[2462],{"type":44,"value":2463},"handleSubmit",{"type":39,"tag":114,"props":2465,"children":2466},{"style":121},[2467],{"type":44,"value":2468},"}>\n",{"type":39,"tag":114,"props":2470,"children":2472},{"class":116,"line":2471},18,[2473,2477,2481,2485,2489,2493,2497,2501,2505,2509,2513,2517,2521,2525,2529,2533,2537,2541],{"type":39,"tag":114,"props":2474,"children":2475},{"style":121},[2476],{"type":44,"value":790},{"type":39,"tag":114,"props":2478,"children":2479},{"style":127},[2480],{"type":44,"value":239},{"type":39,"tag":114,"props":2482,"children":2483},{"style":133},[2484],{"type":44,"value":244},{"type":39,"tag":114,"props":2486,"children":2487},{"style":121},[2488],{"type":44,"value":141},{"type":39,"tag":114,"props":2490,"children":2491},{"style":121},[2492],{"type":44,"value":146},{"type":39,"tag":114,"props":2494,"children":2495},{"style":149},[2496],{"type":44,"value":811},{"type":39,"tag":114,"props":2498,"children":2499},{"style":121},[2500],{"type":44,"value":146},{"type":39,"tag":114,"props":2502,"children":2503},{"style":133},[2504],{"type":44,"value":136},{"type":39,"tag":114,"props":2506,"children":2507},{"style":121},[2508],{"type":44,"value":141},{"type":39,"tag":114,"props":2510,"children":2511},{"style":121},[2512],{"type":44,"value":146},{"type":39,"tag":114,"props":2514,"children":2515},{"style":149},[2516],{"type":44,"value":529},{"type":39,"tag":114,"props":2518,"children":2519},{"style":121},[2520],{"type":44,"value":146},{"type":39,"tag":114,"props":2522,"children":2523},{"style":133},[2524],{"type":44,"value":840},{"type":39,"tag":114,"props":2526,"children":2527},{"style":121},[2528],{"type":44,"value":141},{"type":39,"tag":114,"props":2530,"children":2531},{"style":121},[2532],{"type":44,"value":146},{"type":39,"tag":114,"props":2534,"children":2535},{"style":149},[2536],{"type":44,"value":152},{"type":39,"tag":114,"props":2538,"children":2539},{"style":121},[2540],{"type":44,"value":146},{"type":39,"tag":114,"props":2542,"children":2543},{"style":121},[2544],{"type":44,"value":861},{"type":39,"tag":114,"props":2546,"children":2548},{"class":116,"line":2547},19,[2549,2553,2557,2561,2565,2569,2573,2577,2581,2585,2589,2593,2597,2602,2606,2610,2615,2619],{"type":39,"tag":114,"props":2550,"children":2551},{"style":121},[2552],{"type":44,"value":790},{"type":39,"tag":114,"props":2554,"children":2555},{"style":127},[2556],{"type":44,"value":239},{"type":39,"tag":114,"props":2558,"children":2559},{"style":133},[2560],{"type":44,"value":244},{"type":39,"tag":114,"props":2562,"children":2563},{"style":121},[2564],{"type":44,"value":141},{"type":39,"tag":114,"props":2566,"children":2567},{"style":121},[2568],{"type":44,"value":146},{"type":39,"tag":114,"props":2570,"children":2571},{"style":149},[2572],{"type":44,"value":44},{"type":39,"tag":114,"props":2574,"children":2575},{"style":121},[2576],{"type":44,"value":146},{"type":39,"tag":114,"props":2578,"children":2579},{"style":133},[2580],{"type":44,"value":136},{"type":39,"tag":114,"props":2582,"children":2583},{"style":121},[2584],{"type":44,"value":141},{"type":39,"tag":114,"props":2586,"children":2587},{"style":121},[2588],{"type":44,"value":146},{"type":39,"tag":114,"props":2590,"children":2591},{"style":149},[2592],{"type":44,"value":100},{"type":39,"tag":114,"props":2594,"children":2595},{"style":121},[2596],{"type":44,"value":146},{"type":39,"tag":114,"props":2598,"children":2599},{"style":133},[2600],{"type":44,"value":2601}," placeholder",{"type":39,"tag":114,"props":2603,"children":2604},{"style":121},[2605],{"type":44,"value":141},{"type":39,"tag":114,"props":2607,"children":2608},{"style":121},[2609],{"type":44,"value":146},{"type":39,"tag":114,"props":2611,"children":2612},{"style":149},[2613],{"type":44,"value":2614},"Name",{"type":39,"tag":114,"props":2616,"children":2617},{"style":121},[2618],{"type":44,"value":146},{"type":39,"tag":114,"props":2620,"children":2621},{"style":121},[2622],{"type":44,"value":861},{"type":39,"tag":114,"props":2624,"children":2626},{"class":116,"line":2625},20,[2627,2631,2635,2639,2643,2647,2651,2655,2659,2663,2667,2671,2675,2679,2683,2687,2692,2696],{"type":39,"tag":114,"props":2628,"children":2629},{"style":121},[2630],{"type":44,"value":790},{"type":39,"tag":114,"props":2632,"children":2633},{"style":127},[2634],{"type":44,"value":239},{"type":39,"tag":114,"props":2636,"children":2637},{"style":133},[2638],{"type":44,"value":244},{"type":39,"tag":114,"props":2640,"children":2641},{"style":121},[2642],{"type":44,"value":141},{"type":39,"tag":114,"props":2644,"children":2645},{"style":121},[2646],{"type":44,"value":146},{"type":39,"tag":114,"props":2648,"children":2649},{"style":149},[2650],{"type":44,"value":339},{"type":39,"tag":114,"props":2652,"children":2653},{"style":121},[2654],{"type":44,"value":146},{"type":39,"tag":114,"props":2656,"children":2657},{"style":133},[2658],{"type":44,"value":136},{"type":39,"tag":114,"props":2660,"children":2661},{"style":121},[2662],{"type":44,"value":141},{"type":39,"tag":114,"props":2664,"children":2665},{"style":121},[2666],{"type":44,"value":146},{"type":39,"tag":114,"props":2668,"children":2669},{"style":149},[2670],{"type":44,"value":339},{"type":39,"tag":114,"props":2672,"children":2673},{"style":121},[2674],{"type":44,"value":146},{"type":39,"tag":114,"props":2676,"children":2677},{"style":133},[2678],{"type":44,"value":2601},{"type":39,"tag":114,"props":2680,"children":2681},{"style":121},[2682],{"type":44,"value":141},{"type":39,"tag":114,"props":2684,"children":2685},{"style":121},[2686],{"type":44,"value":146},{"type":39,"tag":114,"props":2688,"children":2689},{"style":149},[2690],{"type":44,"value":2691},"Email",{"type":39,"tag":114,"props":2693,"children":2694},{"style":121},[2695],{"type":44,"value":146},{"type":39,"tag":114,"props":2697,"children":2698},{"style":121},[2699],{"type":44,"value":861},{"type":39,"tag":114,"props":2701,"children":2703},{"class":116,"line":2702},21,[2704,2708,2712,2716,2720,2724,2728,2732,2736,2740,2744,2749,2753],{"type":39,"tag":114,"props":2705,"children":2706},{"style":121},[2707],{"type":44,"value":790},{"type":39,"tag":114,"props":2709,"children":2710},{"style":127},[2711],{"type":44,"value":405},{"type":39,"tag":114,"props":2713,"children":2714},{"style":133},[2715],{"type":44,"value":136},{"type":39,"tag":114,"props":2717,"children":2718},{"style":121},[2719],{"type":44,"value":141},{"type":39,"tag":114,"props":2721,"children":2722},{"style":121},[2723],{"type":44,"value":146},{"type":39,"tag":114,"props":2725,"children":2726},{"style":149},[2727],{"type":44,"value":422},{"type":39,"tag":114,"props":2729,"children":2730},{"style":121},[2731],{"type":44,"value":146},{"type":39,"tag":114,"props":2733,"children":2734},{"style":133},[2735],{"type":44,"value":2601},{"type":39,"tag":114,"props":2737,"children":2738},{"style":121},[2739],{"type":44,"value":141},{"type":39,"tag":114,"props":2741,"children":2742},{"style":121},[2743],{"type":44,"value":146},{"type":39,"tag":114,"props":2745,"children":2746},{"style":149},[2747],{"type":44,"value":2748},"Message",{"type":39,"tag":114,"props":2750,"children":2751},{"style":121},[2752],{"type":44,"value":146},{"type":39,"tag":114,"props":2754,"children":2755},{"style":121},[2756],{"type":44,"value":861},{"type":39,"tag":114,"props":2758,"children":2760},{"class":116,"line":2759},22,[2761,2765,2769,2773,2777,2781,2785,2789,2793,2797,2801,2805],{"type":39,"tag":114,"props":2762,"children":2763},{"style":121},[2764],{"type":44,"value":790},{"type":39,"tag":114,"props":2766,"children":2767},{"style":127},[2768],{"type":44,"value":459},{"type":39,"tag":114,"props":2770,"children":2771},{"style":133},[2772],{"type":44,"value":244},{"type":39,"tag":114,"props":2774,"children":2775},{"style":121},[2776],{"type":44,"value":141},{"type":39,"tag":114,"props":2778,"children":2779},{"style":121},[2780],{"type":44,"value":146},{"type":39,"tag":114,"props":2782,"children":2783},{"style":149},[2784],{"type":44,"value":476},{"type":39,"tag":114,"props":2786,"children":2787},{"style":121},[2788],{"type":44,"value":146},{"type":39,"tag":114,"props":2790,"children":2791},{"style":121},[2792],{"type":44,"value":224},{"type":39,"tag":114,"props":2794,"children":2795},{"style":227},[2796],{"type":44,"value":489},{"type":39,"tag":114,"props":2798,"children":2799},{"style":121},[2800],{"type":44,"value":494},{"type":39,"tag":114,"props":2802,"children":2803},{"style":127},[2804],{"type":44,"value":459},{"type":39,"tag":114,"props":2806,"children":2807},{"style":121},[2808],{"type":44,"value":205},{"type":39,"tag":114,"props":2810,"children":2812},{"class":116,"line":2811},23,[2813,2817,2821],{"type":39,"tag":114,"props":2814,"children":2815},{"style":121},[2816],{"type":44,"value":1061},{"type":39,"tag":114,"props":2818,"children":2819},{"style":127},[2820],{"type":44,"value":130},{"type":39,"tag":114,"props":2822,"children":2823},{"style":121},[2824],{"type":44,"value":205},{"type":39,"tag":114,"props":2826,"children":2827},{"class":116,"line":23},[2828,2833],{"type":39,"tag":114,"props":2829,"children":2830},{"style":127},[2831],{"type":44,"value":2832},"  )",{"type":39,"tag":114,"props":2834,"children":2835},{"style":121},[2836],{"type":44,"value":1513},{"type":39,"tag":114,"props":2838,"children":2840},{"class":116,"line":2839},25,[2841],{"type":39,"tag":114,"props":2842,"children":2843},{"style":121},[2844],{"type":44,"value":1334},{"type":39,"tag":53,"props":2846,"children":2847},{},[2848],{"type":39,"tag":47,"props":2849,"children":2850},{},[2851,2856,2858,2863,2865,2870,2872,2877],{"type":39,"tag":60,"props":2852,"children":2853},{},[2854],{"type":44,"value":2855},"SSR troubleshooting:",{"type":44,"value":2857}," If form submissions appear to succeed (200 response) but nothing shows in the Netlify Forms\nUI, the POST is likely being intercepted by the SSR function. Ensure ",{"type":39,"tag":87,"props":2859,"children":2861},{"className":2860},[],[2862],{"type":44,"value":1406},{"type":44,"value":2864}," targets the skeleton file path (e.g.\n",{"type":39,"tag":87,"props":2866,"children":2868},{"className":2867},[],[2869],{"type":44,"value":1880},{"type":44,"value":2871},"), not ",{"type":39,"tag":87,"props":2873,"children":2875},{"className":2874},[],[2876],{"type":44,"value":1894},{"type":44,"value":2878},". The skeleton file path routes through the CDN origin where Netlify's form handler runs.",{"type":39,"tag":75,"props":2880,"children":2882},{"id":2881},"spam-filtering",[2883],{"type":44,"value":2884},"Spam Filtering",{"type":39,"tag":47,"props":2886,"children":2887},{},[2888],{"type":44,"value":2889},"Netlify uses Akismet automatically. Add a honeypot field for extra protection:",{"type":39,"tag":104,"props":2891,"children":2893},{"className":106,"code":2892,"language":14,"meta":108,"style":108},"\u003Cform name=\"contact\" method=\"POST\" netlify-honeypot=\"bot-field\" data-netlify=\"true\">\n  \u003Cp style=\"display:none\">\n    \u003Clabel>Don't fill this out: \u003Cinput name=\"bot-field\" \u002F>\u003C\u002Flabel>\n  \u003C\u002Fp>\n  \u003C!-- visible fields -->\n\u003C\u002Fform>\n",[2894],{"type":39,"tag":87,"props":2895,"children":2896},{"__ignoreMap":108},[2897,2992,3029,3089,3104,3112],{"type":39,"tag":114,"props":2898,"children":2899},{"class":116,"line":117},[2900,2904,2908,2912,2916,2920,2924,2928,2932,2936,2940,2944,2948,2952,2956,2960,2964,2968,2972,2976,2980,2984,2988],{"type":39,"tag":114,"props":2901,"children":2902},{"style":121},[2903],{"type":44,"value":124},{"type":39,"tag":114,"props":2905,"children":2906},{"style":127},[2907],{"type":44,"value":130},{"type":39,"tag":114,"props":2909,"children":2910},{"style":133},[2911],{"type":44,"value":136},{"type":39,"tag":114,"props":2913,"children":2914},{"style":121},[2915],{"type":44,"value":141},{"type":39,"tag":114,"props":2917,"children":2918},{"style":121},[2919],{"type":44,"value":146},{"type":39,"tag":114,"props":2921,"children":2922},{"style":149},[2923],{"type":44,"value":152},{"type":39,"tag":114,"props":2925,"children":2926},{"style":121},[2927],{"type":44,"value":146},{"type":39,"tag":114,"props":2929,"children":2930},{"style":133},[2931],{"type":44,"value":161},{"type":39,"tag":114,"props":2933,"children":2934},{"style":121},[2935],{"type":44,"value":141},{"type":39,"tag":114,"props":2937,"children":2938},{"style":121},[2939],{"type":44,"value":146},{"type":39,"tag":114,"props":2941,"children":2942},{"style":149},[2943],{"type":44,"value":174},{"type":39,"tag":114,"props":2945,"children":2946},{"style":121},[2947],{"type":44,"value":146},{"type":39,"tag":114,"props":2949,"children":2950},{"style":133},[2951],{"type":44,"value":756},{"type":39,"tag":114,"props":2953,"children":2954},{"style":121},[2955],{"type":44,"value":141},{"type":39,"tag":114,"props":2957,"children":2958},{"style":121},[2959],{"type":44,"value":146},{"type":39,"tag":114,"props":2961,"children":2962},{"style":149},[2963],{"type":44,"value":769},{"type":39,"tag":114,"props":2965,"children":2966},{"style":121},[2967],{"type":44,"value":146},{"type":39,"tag":114,"props":2969,"children":2970},{"style":133},[2971],{"type":44,"value":183},{"type":39,"tag":114,"props":2973,"children":2974},{"style":121},[2975],{"type":44,"value":141},{"type":39,"tag":114,"props":2977,"children":2978},{"style":121},[2979],{"type":44,"value":146},{"type":39,"tag":114,"props":2981,"children":2982},{"style":149},[2983],{"type":44,"value":196},{"type":39,"tag":114,"props":2985,"children":2986},{"style":121},[2987],{"type":44,"value":146},{"type":39,"tag":114,"props":2989,"children":2990},{"style":121},[2991],{"type":44,"value":205},{"type":39,"tag":114,"props":2993,"children":2994},{"class":116,"line":208},[2995,2999,3003,3008,3012,3016,3021,3025],{"type":39,"tag":114,"props":2996,"children":2997},{"style":121},[2998],{"type":44,"value":214},{"type":39,"tag":114,"props":3000,"children":3001},{"style":127},[3002],{"type":44,"value":47},{"type":39,"tag":114,"props":3004,"children":3005},{"style":133},[3006],{"type":44,"value":3007}," style",{"type":39,"tag":114,"props":3009,"children":3010},{"style":121},[3011],{"type":44,"value":141},{"type":39,"tag":114,"props":3013,"children":3014},{"style":121},[3015],{"type":44,"value":146},{"type":39,"tag":114,"props":3017,"children":3018},{"style":149},[3019],{"type":44,"value":3020},"display:none",{"type":39,"tag":114,"props":3022,"children":3023},{"style":121},[3024],{"type":44,"value":146},{"type":39,"tag":114,"props":3026,"children":3027},{"style":121},[3028],{"type":44,"value":205},{"type":39,"tag":114,"props":3030,"children":3031},{"class":116,"line":296},[3032,3036,3040,3044,3049,3053,3057,3061,3065,3069,3073,3077,3081,3085],{"type":39,"tag":114,"props":3033,"children":3034},{"style":121},[3035],{"type":44,"value":707},{"type":39,"tag":114,"props":3037,"children":3038},{"style":127},[3039],{"type":44,"value":219},{"type":39,"tag":114,"props":3041,"children":3042},{"style":121},[3043],{"type":44,"value":224},{"type":39,"tag":114,"props":3045,"children":3046},{"style":227},[3047],{"type":44,"value":3048},"Don't fill this out: ",{"type":39,"tag":114,"props":3050,"children":3051},{"style":121},[3052],{"type":44,"value":124},{"type":39,"tag":114,"props":3054,"children":3055},{"style":127},[3056],{"type":44,"value":239},{"type":39,"tag":114,"props":3058,"children":3059},{"style":133},[3060],{"type":44,"value":136},{"type":39,"tag":114,"props":3062,"children":3063},{"style":121},[3064],{"type":44,"value":141},{"type":39,"tag":114,"props":3066,"children":3067},{"style":121},[3068],{"type":44,"value":146},{"type":39,"tag":114,"props":3070,"children":3071},{"style":149},[3072],{"type":44,"value":769},{"type":39,"tag":114,"props":3074,"children":3075},{"style":121},[3076],{"type":44,"value":146},{"type":39,"tag":114,"props":3078,"children":3079},{"style":121},[3080],{"type":44,"value":285},{"type":39,"tag":114,"props":3082,"children":3083},{"style":127},[3084],{"type":44,"value":219},{"type":39,"tag":114,"props":3086,"children":3087},{"style":121},[3088],{"type":44,"value":205},{"type":39,"tag":114,"props":3090,"children":3091},{"class":116,"line":378},[3092,3096,3100],{"type":39,"tag":114,"props":3093,"children":3094},{"style":121},[3095],{"type":44,"value":1078},{"type":39,"tag":114,"props":3097,"children":3098},{"style":127},[3099],{"type":44,"value":47},{"type":39,"tag":114,"props":3101,"children":3102},{"style":121},[3103],{"type":44,"value":205},{"type":39,"tag":114,"props":3105,"children":3106},{"class":116,"line":27},[3107],{"type":39,"tag":114,"props":3108,"children":3109},{"style":1326},[3110],{"type":44,"value":3111},"  \u003C!-- visible fields -->\n",{"type":39,"tag":114,"props":3113,"children":3114},{"class":116,"line":505},[3115,3119,3123],{"type":39,"tag":114,"props":3116,"children":3117},{"style":121},[3118],{"type":44,"value":494},{"type":39,"tag":114,"props":3120,"children":3121},{"style":127},[3122],{"type":44,"value":130},{"type":39,"tag":114,"props":3124,"children":3125},{"style":121},[3126],{"type":44,"value":205},{"type":39,"tag":47,"props":3128,"children":3129},{},[3130,3132,3138,3140,3146],{"type":44,"value":3131},"For reCAPTCHA, add ",{"type":39,"tag":87,"props":3133,"children":3135},{"className":3134},[],[3136],{"type":44,"value":3137},"data-netlify-recaptcha=\"true\"",{"type":44,"value":3139}," to the form and include ",{"type":39,"tag":87,"props":3141,"children":3143},{"className":3142},[],[3144],{"type":44,"value":3145},"\u003Cdiv data-netlify-recaptcha=\"true\">\u003C\u002Fdiv>",{"type":44,"value":3147}," where the widget should appear.",{"type":39,"tag":47,"props":3149,"children":3150},{},[3151,3153,3157,3159,3164,3166,3171,3173,3179,3181,3187],{"type":44,"value":3152},"By default Netlify provisions and verifies the reCAPTCHA for you — do ",{"type":39,"tag":60,"props":3154,"children":3155},{},[3156],{"type":44,"value":71},{"type":44,"value":3158}," add a site key\u002Fsecret or load Google's reCAPTCHA script yourself. To use ",{"type":39,"tag":60,"props":3160,"children":3161},{},[3162],{"type":44,"value":3163},"your own",{"type":44,"value":3165}," reCAPTCHA v2 keys, keep the same ",{"type":39,"tag":87,"props":3167,"children":3169},{"className":3168},[],[3170],{"type":44,"value":3137},{"type":44,"value":3172}," markup and set the credentials as Netlify environment variables: ",{"type":39,"tag":87,"props":3174,"children":3176},{"className":3175},[],[3177],{"type":44,"value":3178},"SITE_RECAPTCHA_KEY",{"type":44,"value":3180}," (the site key, scoped to Builds and Runtime) and ",{"type":39,"tag":87,"props":3182,"children":3184},{"className":3183},[],[3185],{"type":44,"value":3186},"SITE_RECAPTCHA_SECRET",{"type":44,"value":3188}," (the secret, scoped to Runtime). Netlify picks these up automatically — the secret stays server-side as an env var (never hardcoded in client code), and you still don't render the widget with Google's own script or build a custom Function to verify the token.",{"type":39,"tag":53,"props":3190,"children":3191},{},[3192],{"type":39,"tag":47,"props":3193,"children":3194},{},[3195,3200,3202,3207,3209,3213,3215,3219,3221,3227],{"type":39,"tag":60,"props":3196,"children":3197},{},[3198],{"type":44,"value":3199},"Spam submissions are silent.",{"type":44,"value":3201}," Akismet-flagged submissions are moved to a separate ",{"type":39,"tag":60,"props":3203,"children":3204},{},[3205],{"type":44,"value":3206},"Spam",{"type":44,"value":3208}," list in the Forms UI — they do ",{"type":39,"tag":60,"props":3210,"children":3211},{},[3212],{"type":44,"value":71},{"type":44,"value":3214}," appear in the verified submissions list and do ",{"type":39,"tag":60,"props":3216,"children":3217},{},[3218],{"type":44,"value":71},{"type":44,"value":3220}," trigger email\u002FSlack notifications. Submissions caught by a honeypot field or a failed reCAPTCHA challenge are discarded entirely and never appear in either list. So a \"missing\" legitimate submission is usually a false-positive spam classification, not a delivery bug: check the Spam list (or the Submissions API with ",{"type":39,"tag":87,"props":3222,"children":3224},{"className":3223},[],[3225],{"type":44,"value":3226},"?state=spam",{"type":44,"value":3228},") and mark it verified — do not build a custom Function to \"recover\" it or disable spam filtering as a first resort.",{"type":39,"tag":75,"props":3230,"children":3232},{"id":3231},"file-uploads",[3233],{"type":44,"value":3234},"File Uploads",{"type":39,"tag":104,"props":3236,"children":3238},{"className":106,"code":3237,"language":14,"meta":108,"style":108},"\u003Cform name=\"upload\" enctype=\"multipart\u002Fform-data\" data-netlify=\"true\">\n  \u003Cinput type=\"text\" name=\"name\" \u002F>\n  \u003Cinput type=\"file\" name=\"attachment\" \u002F>\n  \u003Cbutton type=\"submit\">Upload\u003C\u002Fbutton>\n\u003C\u002Fform>\n",[3239],{"type":39,"tag":87,"props":3240,"children":3241},{"__ignoreMap":108},[3242,3319,3374,3431,3483],{"type":39,"tag":114,"props":3243,"children":3244},{"class":116,"line":117},[3245,3249,3253,3257,3261,3265,3270,3274,3279,3283,3287,3291,3295,3299,3303,3307,3311,3315],{"type":39,"tag":114,"props":3246,"children":3247},{"style":121},[3248],{"type":44,"value":124},{"type":39,"tag":114,"props":3250,"children":3251},{"style":127},[3252],{"type":44,"value":130},{"type":39,"tag":114,"props":3254,"children":3255},{"style":133},[3256],{"type":44,"value":136},{"type":39,"tag":114,"props":3258,"children":3259},{"style":121},[3260],{"type":44,"value":141},{"type":39,"tag":114,"props":3262,"children":3263},{"style":121},[3264],{"type":44,"value":146},{"type":39,"tag":114,"props":3266,"children":3267},{"style":149},[3268],{"type":44,"value":3269},"upload",{"type":39,"tag":114,"props":3271,"children":3272},{"style":121},[3273],{"type":44,"value":146},{"type":39,"tag":114,"props":3275,"children":3276},{"style":133},[3277],{"type":44,"value":3278}," enctype",{"type":39,"tag":114,"props":3280,"children":3281},{"style":121},[3282],{"type":44,"value":141},{"type":39,"tag":114,"props":3284,"children":3285},{"style":121},[3286],{"type":44,"value":146},{"type":39,"tag":114,"props":3288,"children":3289},{"style":149},[3290],{"type":44,"value":1390},{"type":39,"tag":114,"props":3292,"children":3293},{"style":121},[3294],{"type":44,"value":146},{"type":39,"tag":114,"props":3296,"children":3297},{"style":133},[3298],{"type":44,"value":183},{"type":39,"tag":114,"props":3300,"children":3301},{"style":121},[3302],{"type":44,"value":141},{"type":39,"tag":114,"props":3304,"children":3305},{"style":121},[3306],{"type":44,"value":146},{"type":39,"tag":114,"props":3308,"children":3309},{"style":149},[3310],{"type":44,"value":196},{"type":39,"tag":114,"props":3312,"children":3313},{"style":121},[3314],{"type":44,"value":146},{"type":39,"tag":114,"props":3316,"children":3317},{"style":121},[3318],{"type":44,"value":205},{"type":39,"tag":114,"props":3320,"children":3321},{"class":116,"line":208},[3322,3326,3330,3334,3338,3342,3346,3350,3354,3358,3362,3366,3370],{"type":39,"tag":114,"props":3323,"children":3324},{"style":121},[3325],{"type":44,"value":214},{"type":39,"tag":114,"props":3327,"children":3328},{"style":127},[3329],{"type":44,"value":239},{"type":39,"tag":114,"props":3331,"children":3332},{"style":133},[3333],{"type":44,"value":244},{"type":39,"tag":114,"props":3335,"children":3336},{"style":121},[3337],{"type":44,"value":141},{"type":39,"tag":114,"props":3339,"children":3340},{"style":121},[3341],{"type":44,"value":146},{"type":39,"tag":114,"props":3343,"children":3344},{"style":149},[3345],{"type":44,"value":44},{"type":39,"tag":114,"props":3347,"children":3348},{"style":121},[3349],{"type":44,"value":146},{"type":39,"tag":114,"props":3351,"children":3352},{"style":133},[3353],{"type":44,"value":136},{"type":39,"tag":114,"props":3355,"children":3356},{"style":121},[3357],{"type":44,"value":141},{"type":39,"tag":114,"props":3359,"children":3360},{"style":121},[3361],{"type":44,"value":146},{"type":39,"tag":114,"props":3363,"children":3364},{"style":149},[3365],{"type":44,"value":100},{"type":39,"tag":114,"props":3367,"children":3368},{"style":121},[3369],{"type":44,"value":146},{"type":39,"tag":114,"props":3371,"children":3372},{"style":121},[3373],{"type":44,"value":861},{"type":39,"tag":114,"props":3375,"children":3376},{"class":116,"line":296},[3377,3381,3385,3389,3393,3397,3402,3406,3410,3414,3418,3423,3427],{"type":39,"tag":114,"props":3378,"children":3379},{"style":121},[3380],{"type":44,"value":214},{"type":39,"tag":114,"props":3382,"children":3383},{"style":127},[3384],{"type":44,"value":239},{"type":39,"tag":114,"props":3386,"children":3387},{"style":133},[3388],{"type":44,"value":244},{"type":39,"tag":114,"props":3390,"children":3391},{"style":121},[3392],{"type":44,"value":141},{"type":39,"tag":114,"props":3394,"children":3395},{"style":121},[3396],{"type":44,"value":146},{"type":39,"tag":114,"props":3398,"children":3399},{"style":149},[3400],{"type":44,"value":3401},"file",{"type":39,"tag":114,"props":3403,"children":3404},{"style":121},[3405],{"type":44,"value":146},{"type":39,"tag":114,"props":3407,"children":3408},{"style":133},[3409],{"type":44,"value":136},{"type":39,"tag":114,"props":3411,"children":3412},{"style":121},[3413],{"type":44,"value":141},{"type":39,"tag":114,"props":3415,"children":3416},{"style":121},[3417],{"type":44,"value":146},{"type":39,"tag":114,"props":3419,"children":3420},{"style":149},[3421],{"type":44,"value":3422},"attachment",{"type":39,"tag":114,"props":3424,"children":3425},{"style":121},[3426],{"type":44,"value":146},{"type":39,"tag":114,"props":3428,"children":3429},{"style":121},[3430],{"type":44,"value":861},{"type":39,"tag":114,"props":3432,"children":3433},{"class":116,"line":378},[3434,3438,3442,3446,3450,3454,3458,3462,3466,3471,3475,3479],{"type":39,"tag":114,"props":3435,"children":3436},{"style":121},[3437],{"type":44,"value":214},{"type":39,"tag":114,"props":3439,"children":3440},{"style":127},[3441],{"type":44,"value":459},{"type":39,"tag":114,"props":3443,"children":3444},{"style":133},[3445],{"type":44,"value":244},{"type":39,"tag":114,"props":3447,"children":3448},{"style":121},[3449],{"type":44,"value":141},{"type":39,"tag":114,"props":3451,"children":3452},{"style":121},[3453],{"type":44,"value":146},{"type":39,"tag":114,"props":3455,"children":3456},{"style":149},[3457],{"type":44,"value":476},{"type":39,"tag":114,"props":3459,"children":3460},{"style":121},[3461],{"type":44,"value":146},{"type":39,"tag":114,"props":3463,"children":3464},{"style":121},[3465],{"type":44,"value":224},{"type":39,"tag":114,"props":3467,"children":3468},{"style":227},[3469],{"type":44,"value":3470},"Upload",{"type":39,"tag":114,"props":3472,"children":3473},{"style":121},[3474],{"type":44,"value":494},{"type":39,"tag":114,"props":3476,"children":3477},{"style":127},[3478],{"type":44,"value":459},{"type":39,"tag":114,"props":3480,"children":3481},{"style":121},[3482],{"type":44,"value":205},{"type":39,"tag":114,"props":3484,"children":3485},{"class":116,"line":27},[3486,3490,3494],{"type":39,"tag":114,"props":3487,"children":3488},{"style":121},[3489],{"type":44,"value":494},{"type":39,"tag":114,"props":3491,"children":3492},{"style":127},[3493],{"type":44,"value":130},{"type":39,"tag":114,"props":3495,"children":3496},{"style":121},[3497],{"type":44,"value":205},{"type":39,"tag":47,"props":3499,"children":3500},{},[3501,3503,3508,3510,3514,3516,3521],{"type":44,"value":3502},"For AJAX file uploads, use ",{"type":39,"tag":87,"props":3504,"children":3506},{"className":3505},[],[3507],{"type":44,"value":1398},{"type":44,"value":3509}," directly — do ",{"type":39,"tag":60,"props":3511,"children":3512},{},[3513],{"type":44,"value":71},{"type":44,"value":3515}," set ",{"type":39,"tag":87,"props":3517,"children":3519},{"className":3518},[],[3520],{"type":44,"value":1746},{"type":44,"value":3522}," (the browser sets it with the correct boundary):",{"type":39,"tag":104,"props":3524,"children":3526},{"className":1447,"code":3525,"language":1449,"meta":108,"style":108},"await fetch(\"\u002F\", { method: \"POST\", body: new FormData(form) });\n",[3527],{"type":39,"tag":87,"props":3528,"children":3529},{"__ignoreMap":108},[3530],{"type":39,"tag":114,"props":3531,"children":3532},{"class":116,"line":117},[3533,3538,3542,3546,3550,3554,3558,3562,3566,3570,3574,3578,3582,3586,3590,3595,3599,3603,3607,3612,3616,3620],{"type":39,"tag":114,"props":3534,"children":3535},{"style":1656},[3536],{"type":44,"value":3537},"await",{"type":39,"tag":114,"props":3539,"children":3540},{"style":1483},[3541],{"type":44,"value":1664},{"type":39,"tag":114,"props":3543,"children":3544},{"style":227},[3545],{"type":44,"value":1491},{"type":39,"tag":114,"props":3547,"children":3548},{"style":121},[3549],{"type":44,"value":146},{"type":39,"tag":114,"props":3551,"children":3552},{"style":149},[3553],{"type":44,"value":1677},{"type":39,"tag":114,"props":3555,"children":3556},{"style":121},[3557],{"type":44,"value":146},{"type":39,"tag":114,"props":3559,"children":3560},{"style":121},[3561],{"type":44,"value":1550},{"type":39,"tag":114,"props":3563,"children":3564},{"style":121},[3565],{"type":44,"value":1737},{"type":39,"tag":114,"props":3567,"children":3568},{"style":127},[3569],{"type":44,"value":161},{"type":39,"tag":114,"props":3571,"children":3572},{"style":121},[3573],{"type":44,"value":1702},{"type":39,"tag":114,"props":3575,"children":3576},{"style":121},[3577],{"type":44,"value":1707},{"type":39,"tag":114,"props":3579,"children":3580},{"style":149},[3581],{"type":44,"value":174},{"type":39,"tag":114,"props":3583,"children":3584},{"style":121},[3585],{"type":44,"value":146},{"type":39,"tag":114,"props":3587,"children":3588},{"style":121},[3589],{"type":44,"value":1550},{"type":39,"tag":114,"props":3591,"children":3592},{"style":127},[3593],{"type":44,"value":3594}," body",{"type":39,"tag":114,"props":3596,"children":3597},{"style":121},[3598],{"type":44,"value":1702},{"type":39,"tag":114,"props":3600,"children":3601},{"style":121},[3602],{"type":44,"value":1629},{"type":39,"tag":114,"props":3604,"children":3605},{"style":1483},[3606],{"type":44,"value":1634},{"type":39,"tag":114,"props":3608,"children":3609},{"style":227},[3610],{"type":44,"value":3611},"(form) ",{"type":39,"tag":114,"props":3613,"children":3614},{"style":121},[3615],{"type":44,"value":1846},{"type":39,"tag":114,"props":3617,"children":3618},{"style":227},[3619],{"type":44,"value":1508},{"type":39,"tag":114,"props":3621,"children":3622},{"style":121},[3623],{"type":44,"value":1513},{"type":39,"tag":47,"props":3625,"children":3626},{},[3627,3632],{"type":39,"tag":60,"props":3628,"children":3629},{},[3630],{"type":44,"value":3631},"Limits:",{"type":44,"value":3633}," 8 MB max request size, 30-second timeout, one file per input field.",{"type":39,"tag":75,"props":3635,"children":3637},{"id":3636},"notifications",[3638],{"type":44,"value":3639},"Notifications",{"type":39,"tag":47,"props":3641,"children":3642},{},[3643,3645,3650],{"type":44,"value":3644},"Configure in the Netlify UI under ",{"type":39,"tag":60,"props":3646,"children":3647},{},[3648],{"type":44,"value":3649},"Project configuration > Notifications",{"type":44,"value":1702},{"type":39,"tag":1112,"props":3652,"children":3653},{},[3654,3671,3681],{"type":39,"tag":1116,"props":3655,"children":3656},{},[3657,3661,3663,3669],{"type":39,"tag":60,"props":3658,"children":3659},{},[3660],{"type":44,"value":2691},{"type":44,"value":3662},": Auto-sends on submission. Add ",{"type":39,"tag":87,"props":3664,"children":3666},{"className":3665},[],[3667],{"type":44,"value":3668},"\u003Cinput type=\"hidden\" name=\"subject\" value=\"Contact form\" \u002F>",{"type":44,"value":3670}," for custom subject lines.",{"type":39,"tag":1116,"props":3672,"children":3673},{},[3674,3679],{"type":39,"tag":60,"props":3675,"children":3676},{},[3677],{"type":44,"value":3678},"Slack",{"type":44,"value":3680},": Via Netlify App for Slack.",{"type":39,"tag":1116,"props":3682,"children":3683},{},[3684,3689],{"type":39,"tag":60,"props":3685,"children":3686},{},[3687],{"type":44,"value":3688},"Webhooks",{"type":44,"value":3690},": Trigger external services on submission.",{"type":39,"tag":75,"props":3692,"children":3694},{"id":3693},"submissions-api",[3695],{"type":44,"value":3696},"Submissions API",{"type":39,"tag":47,"props":3698,"children":3699},{},[3700],{"type":44,"value":3701},"Access submissions programmatically:",{"type":39,"tag":104,"props":3703,"children":3707},{"className":3704,"code":3706,"language":44},[3705],"language-text","GET \u002Fapi\u002Fv1\u002Fforms\u002F{form_id}\u002Fsubmissions\nAuthorization: Bearer \u003CPERSONAL_ACCESS_TOKEN>\n",[3708],{"type":39,"tag":87,"props":3709,"children":3710},{"__ignoreMap":108},[3711],{"type":44,"value":3706},{"type":39,"tag":47,"props":3713,"children":3714},{},[3715],{"type":44,"value":3716},"Key endpoints:",{"type":39,"tag":3718,"props":3719,"children":3720},"table",{},[3721,3745],{"type":39,"tag":3722,"props":3723,"children":3724},"thead",{},[3725],{"type":39,"tag":3726,"props":3727,"children":3728},"tr",{},[3729,3735,3740],{"type":39,"tag":3730,"props":3731,"children":3732},"th",{},[3733],{"type":44,"value":3734},"Action",{"type":39,"tag":3730,"props":3736,"children":3737},{},[3738],{"type":44,"value":3739},"Method",{"type":39,"tag":3730,"props":3741,"children":3742},{},[3743],{"type":44,"value":3744},"Path",{"type":39,"tag":3746,"props":3747,"children":3748},"tbody",{},[3749,3772,3793,3814],{"type":39,"tag":3726,"props":3750,"children":3751},{},[3752,3758,3763],{"type":39,"tag":3753,"props":3754,"children":3755},"td",{},[3756],{"type":44,"value":3757},"List forms",{"type":39,"tag":3753,"props":3759,"children":3760},{},[3761],{"type":44,"value":3762},"GET",{"type":39,"tag":3753,"props":3764,"children":3765},{},[3766],{"type":39,"tag":87,"props":3767,"children":3769},{"className":3768},[],[3770],{"type":44,"value":3771},"\u002Fapi\u002Fv1\u002Fsites\u002F{site_id}\u002Fforms",{"type":39,"tag":3726,"props":3773,"children":3774},{},[3775,3780,3784],{"type":39,"tag":3753,"props":3776,"children":3777},{},[3778],{"type":44,"value":3779},"Get submissions",{"type":39,"tag":3753,"props":3781,"children":3782},{},[3783],{"type":44,"value":3762},{"type":39,"tag":3753,"props":3785,"children":3786},{},[3787],{"type":39,"tag":87,"props":3788,"children":3790},{"className":3789},[],[3791],{"type":44,"value":3792},"\u002Fapi\u002Fv1\u002Fforms\u002F{form_id}\u002Fsubmissions",{"type":39,"tag":3726,"props":3794,"children":3795},{},[3796,3801,3805],{"type":39,"tag":3753,"props":3797,"children":3798},{},[3799],{"type":44,"value":3800},"Get spam",{"type":39,"tag":3753,"props":3802,"children":3803},{},[3804],{"type":44,"value":3762},{"type":39,"tag":3753,"props":3806,"children":3807},{},[3808],{"type":39,"tag":87,"props":3809,"children":3811},{"className":3810},[],[3812],{"type":44,"value":3813},"\u002Fapi\u002Fv1\u002Fforms\u002F{form_id}\u002Fsubmissions?state=spam",{"type":39,"tag":3726,"props":3815,"children":3816},{},[3817,3822,3827],{"type":39,"tag":3753,"props":3818,"children":3819},{},[3820],{"type":44,"value":3821},"Delete submission",{"type":39,"tag":3753,"props":3823,"children":3824},{},[3825],{"type":44,"value":3826},"DELETE",{"type":39,"tag":3753,"props":3828,"children":3829},{},[3830],{"type":39,"tag":87,"props":3831,"children":3833},{"className":3832},[],[3834],{"type":44,"value":3835},"\u002Fapi\u002Fv1\u002Fsubmissions\u002F{id}",{"type":39,"tag":1439,"props":3837,"children":3839},{"id":3838},"pagination",[3840],{"type":44,"value":3841},"Pagination",{"type":39,"tag":47,"props":3843,"children":3844},{},[3845,3847,3853,3855,3861,3863,3869,3871,3877,3879,3885,3887,3892,3894,3899,3901,3907,3909,3913],{"type":44,"value":3846},"The Netlify API paginates any response over 100 items (100 per page by default). Pass ",{"type":39,"tag":87,"props":3848,"children":3850},{"className":3849},[],[3851],{"type":44,"value":3852},"?page=",{"type":44,"value":3854}," (1-based) and optionally ",{"type":39,"tag":87,"props":3856,"children":3858},{"className":3857},[],[3859],{"type":44,"value":3860},"?per_page=",{"type":44,"value":3862}," (max 100), and follow the ",{"type":39,"tag":87,"props":3864,"children":3866},{"className":3865},[],[3867],{"type":44,"value":3868},"Link",{"type":44,"value":3870}," response header — it carries the ",{"type":39,"tag":87,"props":3872,"children":3874},{"className":3873},[],[3875],{"type":44,"value":3876},"rel=\"next\"",{"type":44,"value":3878}," and ",{"type":39,"tag":87,"props":3880,"children":3882},{"className":3881},[],[3883],{"type":44,"value":3884},"rel=\"last\"",{"type":44,"value":3886}," page URLs. To sync ",{"type":39,"tag":60,"props":3888,"children":3889},{},[3890],{"type":44,"value":3891},"every",{"type":44,"value":3893}," submission, page through until there is no ",{"type":39,"tag":87,"props":3895,"children":3897},{"className":3896},[],[3898],{"type":44,"value":3876},{"type":44,"value":3900}," link (or a page returns fewer than ",{"type":39,"tag":87,"props":3902,"children":3904},{"className":3903},[],[3905],{"type":44,"value":3906},"per_page",{"type":44,"value":3908}," items). A single request does ",{"type":39,"tag":60,"props":3910,"children":3911},{},[3912],{"type":44,"value":71},{"type":44,"value":3914}," return all submissions once a form has more than 100 — code that reads only the first response silently drops the rest.",{"type":39,"tag":75,"props":3916,"children":3918},{"id":3917},"use-only-documented-surfaces",[3919],{"type":44,"value":3920},"Use only documented surfaces",{"type":39,"tag":47,"props":3922,"children":3923},{},[3924,3926,3931,3933,3937],{"type":44,"value":3925},"To manage forms or read submissions programmatically, use the documented ",{"type":39,"tag":87,"props":3927,"children":3929},{"className":3928},[],[3930],{"type":44,"value":8},{"type":44,"value":3932}," CLI or the Submissions API above with an explicit personal access token supplied via an environment variable. Do ",{"type":39,"tag":60,"props":3934,"children":3935},{},[3936],{"type":44,"value":71},{"type":44,"value":3938}," go around the documented surface:",{"type":39,"tag":1112,"props":3940,"children":3941},{},[3942,3972],{"type":39,"tag":1116,"props":3943,"children":3944},{},[3945,3956,3958,3962,3964,3970],{"type":39,"tag":60,"props":3946,"children":3947},{},[3948,3950],{"type":44,"value":3949},"Do not curl ",{"type":39,"tag":87,"props":3951,"children":3953},{"className":3952},[],[3954],{"type":44,"value":3955},"https:\u002F\u002Fapi.netlify.com\u002F...",{"type":44,"value":3957}," with an invented endpoint shape, and do ",{"type":39,"tag":60,"props":3959,"children":3960},{},[3961],{"type":44,"value":71},{"type":44,"value":3963}," run ",{"type":39,"tag":87,"props":3965,"children":3967},{"className":3966},[],[3968],{"type":44,"value":3969},"netlify api \u003Cmethod>",{"type":44,"value":3971}," as a recovery hatch when a documented path fails.",{"type":39,"tag":1116,"props":3973,"children":3974},{},[3975,3980,3982,3988],{"type":39,"tag":60,"props":3976,"children":3977},{},[3978],{"type":44,"value":3979},"Do not read the token",{"type":44,"value":3981}," out of ",{"type":39,"tag":87,"props":3983,"children":3985},{"className":3984},[],[3986],{"type":44,"value":3987},"~\u002FLibrary\u002FPreferences\u002Fnetlify\u002Fconfig.json",{"type":44,"value":3989}," (or anywhere on disk) — it comes from the configured env var.",{"type":39,"tag":47,"props":3991,"children":3992},{},[3993],{"type":44,"value":3994},"If a documented path fails, report the exact error and context to the user and stop.",{"type":39,"tag":3996,"props":3997,"children":3998},"style",{},[3999],{"type":44,"value":4000},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":4002,"total":2379},[4003,4022,4034,4051,4066,4081,4098,4115,4125,4140,4151,4166],{"slug":4004,"name":4004,"fn":4005,"description":4006,"org":4007,"tags":4008,"stars":4019,"repoUrl":4020,"updatedAt":4021},"configure-axis","configure AXIS agent evaluation scenarios","Author AXIS (Agent Experience Index Score) scenarios and axis.config.json for a project. Use when the user asks to set up AXIS, add a scenario, write or edit axis.config.json, or evaluate an AI agent with AXIS.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4009,4012,4015,4018],{"name":4010,"slug":4011,"type":15},"Agents","agents",{"name":4013,"slug":4014,"type":15},"Configuration","configuration",{"name":4016,"slug":4017,"type":15},"Evals","evals",{"name":9,"slug":8,"type":15},32,"https:\u002F\u002Fgithub.com\u002Fnetlify\u002Faxis","2026-07-20T05:59:47.468757",{"slug":4023,"name":4023,"fn":4024,"description":4025,"org":4026,"tags":4027,"stars":4019,"repoUrl":4020,"updatedAt":4033},"using-axis","run and interpret AXIS reports","Run AXIS, read its reports, navigate its project layout, and interpret scores. Use when the user asks to run AXIS, invoke the CLI, compare runs, explain a score, find a regression, manage baselines, or understand where AXIS writes its files.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4028,4031,4032],{"name":4029,"slug":4030,"type":15},"CLI","cli",{"name":4016,"slug":4017,"type":15},{"name":9,"slug":8,"type":15},"2026-07-14T05:40:13.443461",{"slug":4035,"name":4035,"fn":4036,"description":4037,"org":4038,"tags":4039,"stars":23,"repoUrl":24,"updatedAt":4050},"netlify-access-control","manage Netlify site access control","Use when the task involves controlling who can reach a Netlify site, or telling Netlify Identity apart from Secure Access. Trigger whenever the user wants to lock a site or deploy to their company\u002Fteam, restrict access to employees only, build an internal or employees-only app, set up password protection, SSO, or SAML, asks \"who can access my site\", or is confused about Netlify Identity vs Secure Access vs team login vs OAuth providers. Routes the request to the right layer — app-level Identity, site-visitor Password Protection, the Auth0 extension, or Team\u002FOrg SAML SSO — and explains the two-layer (perimeter + in-app identity) pattern and its double-login tradeoff. For building the app-level auth itself, use the netlify-identity skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4040,4043,4044,4047],{"name":4041,"slug":4042,"type":15},"Access Control","access-control",{"name":9,"slug":8,"type":15},{"name":4045,"slug":4046,"type":15},"Permissions","permissions",{"name":4048,"slug":4049,"type":15},"Security","security","2026-07-14T05:40:29.082149",{"slug":4052,"name":4052,"fn":4053,"description":4054,"org":4055,"tags":4056,"stars":23,"repoUrl":24,"updatedAt":4065},"netlify-agent-runner","run AI agent tasks on Netlify","Run AI agent tasks remotely on Netlify using Claude, Codex, or Gemini. Use when the user wants to run an AI agent on their site, get a second opinion from another model, or delegate development tasks to run remotely against their repo.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4057,4058,4061,4064],{"name":4010,"slug":4011,"type":15},{"name":4059,"slug":4060,"type":15},"Automation","automation",{"name":4062,"slug":4063,"type":15},"LLM","llm",{"name":9,"slug":8,"type":15},"2026-07-17T05:30:19.462913",{"slug":4067,"name":4067,"fn":4068,"description":4069,"org":4070,"tags":4071,"stars":23,"repoUrl":24,"updatedAt":4080},"netlify-ai-gateway","route AI requests via Netlify AI Gateway","Reference for Netlify AI Gateway — the managed proxy that routes calls to OpenAI, Anthropic, and Google Gemini SDKs without provider API keys. Use this skill any time the user wants to add AI on a Netlify site (chat, completion, reasoning, image generation, image-to-image edit\u002Fstylize), choose or change a model, wire up the OpenAI \u002F Anthropic \u002F @google\u002Fgenai SDK, decide which provider to use for an image-gen feature (it's Gemini-only on the gateway), or debug \"model not found\" \u002F \"API key missing\" against the gateway. Required reading before pinning a model — the gateway exposes a curated subset, not every provider model.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4072,4075,4078,4079],{"name":4073,"slug":4074,"type":15},"AI Infrastructure","ai-infrastructure",{"name":4076,"slug":4077,"type":15},"API Development","api-development",{"name":4062,"slug":4063,"type":15},{"name":9,"slug":8,"type":15},"2026-07-17T05:30:13.14555",{"slug":4082,"name":4082,"fn":4083,"description":4084,"org":4085,"tags":4086,"stars":23,"repoUrl":24,"updatedAt":4097},"netlify-blobs","manage file storage with Netlify Blobs","Guide for using Netlify Blobs for file and asset storage — images, documents, uploads, exports, cached binary artifacts. Covers getStore(), CRUD operations, metadata, listing, deploy-scoped vs site-scoped stores, and local development. Do NOT use Blobs as a dynamic data store — use Netlify Database for that.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4087,4090,4093,4094],{"name":4088,"slug":4089,"type":15},"Backend","backend",{"name":4091,"slug":4092,"type":15},"File Storage","file-storage",{"name":9,"slug":8,"type":15},{"name":4095,"slug":4096,"type":15},"Storage","storage","2026-07-17T05:30:16.503306",{"slug":4099,"name":4099,"fn":4100,"description":4101,"org":4102,"tags":4103,"stars":23,"repoUrl":24,"updatedAt":4114},"netlify-caching","configure CDN caching on Netlify","Guide for controlling caching on Netlify's CDN. Use when configuring cache headers, setting up stale-while-revalidate, implementing on-demand cache purge, or understanding Netlify's CDN caching behavior. Covers Cache-Control, Netlify-CDN-Cache-Control, cache tags, durable cache, and framework-specific caching patterns.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4104,4107,4110,4111],{"name":4105,"slug":4106,"type":15},"Caching","caching",{"name":4108,"slug":4109,"type":15},"Deployment","deployment",{"name":9,"slug":8,"type":15},{"name":4112,"slug":4113,"type":15},"Performance","performance","2026-07-14T05:40:20.066717",{"slug":4116,"name":4116,"fn":4117,"description":4118,"org":4119,"tags":4120,"stars":23,"repoUrl":24,"updatedAt":4124},"netlify-config","configure Netlify site settings","Reference for netlify.toml configuration and site environment variables. Use when configuring build settings, redirects, rewrites, headers, deploy contexts, the `[dev]` block that controls `netlify dev` (command, port, targetPort, framework), or any site-level configuration — and when managing environment variables or secrets with the Netlify CLI, including scoping values to specific deploy contexts. Covers the complete netlify.toml syntax including redirects with splats\u002Fconditions, headers, deploy contexts, functions config, edge functions config, and the `[dev]` block (including when `framework` must be `\"#custom\"` — required when both a custom `command` and `targetPort` are set).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4121,4122,4123],{"name":4013,"slug":4014,"type":15},{"name":4108,"slug":4109,"type":15},{"name":9,"slug":8,"type":15},"2026-07-17T05:30:21.284801",{"slug":4126,"name":4126,"fn":4127,"description":4128,"org":4129,"tags":4130,"stars":23,"repoUrl":24,"updatedAt":4139},"netlify-database","provision and manage Netlify Database","Guide for using Netlify Database — the GA managed Postgres product built into Netlify. Use when a project needs any kind of dynamic, structured, or relational data. Covers provisioning via @netlify\u002Fdatabase, Drizzle ORM (@beta) setup, migrations, preview branching, and safe production data handling. Blobs is only for file\u002Fasset storage — any dynamic data belongs in the database.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4131,4132,4135,4136],{"name":4088,"slug":4089,"type":15},{"name":4133,"slug":4134,"type":15},"Database","database",{"name":9,"slug":8,"type":15},{"name":4137,"slug":4138,"type":15},"PostgreSQL","postgresql","2026-07-20T05:58:58.934045",{"slug":4141,"name":4141,"fn":4142,"description":4143,"org":4144,"tags":4145,"stars":23,"repoUrl":24,"updatedAt":4150},"netlify-deploy","deploy and host projects on Netlify","Deploy, host, and publish web projects on Netlify with the Netlify CLI. Use when the user wants to deploy a site or repository to Netlify, link a local project to a Netlify site, ship a production or preview\u002Fdraft deploy, set up Git-based continuous deployment, run a manual or local deploy, configure CI deploys, or troubleshoot a failed or misconfigured deploy. Also use to view or tail a deployed site's runtime logs — function and edge-function output, deploy logs — via `netlify logs` when debugging what a live site is doing (recent errors, recent activity, streaming output).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4146,4147,4148,4149],{"name":4029,"slug":4030,"type":15},{"name":4108,"slug":4109,"type":15},{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"2026-07-17T05:30:14.218977",{"slug":4152,"name":4152,"fn":4153,"description":4154,"org":4155,"tags":4156,"stars":23,"repoUrl":24,"updatedAt":4165},"netlify-edge-functions","write Netlify Edge Functions","Guide for writing Netlify Edge Functions. Use when building middleware, geolocation-based logic, request\u002Fresponse manipulation, authentication checks, A\u002FB testing, or any low-latency edge compute. Covers Deno runtime, context.next() middleware pattern, geolocation, and when to choose edge vs serverless.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4157,4160,4163,4164],{"name":4158,"slug":4159,"type":15},"Edge Functions","edge-functions",{"name":4161,"slug":4162,"type":15},"Middleware","middleware",{"name":9,"slug":8,"type":15},{"name":4112,"slug":4113,"type":15},"2026-07-14T05:40:34.147865",{"slug":4,"name":4,"fn":5,"description":6,"org":4167,"tags":4168,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4169,4170,4171,4172],{"name":18,"slug":19,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},{"items":4174,"total":2355},[4175,4182,4189,4196,4203,4210,4216],{"slug":4035,"name":4035,"fn":4036,"description":4037,"org":4176,"tags":4177,"stars":23,"repoUrl":24,"updatedAt":4050},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4178,4179,4180,4181],{"name":4041,"slug":4042,"type":15},{"name":9,"slug":8,"type":15},{"name":4045,"slug":4046,"type":15},{"name":4048,"slug":4049,"type":15},{"slug":4052,"name":4052,"fn":4053,"description":4054,"org":4183,"tags":4184,"stars":23,"repoUrl":24,"updatedAt":4065},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4185,4186,4187,4188],{"name":4010,"slug":4011,"type":15},{"name":4059,"slug":4060,"type":15},{"name":4062,"slug":4063,"type":15},{"name":9,"slug":8,"type":15},{"slug":4067,"name":4067,"fn":4068,"description":4069,"org":4190,"tags":4191,"stars":23,"repoUrl":24,"updatedAt":4080},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4192,4193,4194,4195],{"name":4073,"slug":4074,"type":15},{"name":4076,"slug":4077,"type":15},{"name":4062,"slug":4063,"type":15},{"name":9,"slug":8,"type":15},{"slug":4082,"name":4082,"fn":4083,"description":4084,"org":4197,"tags":4198,"stars":23,"repoUrl":24,"updatedAt":4097},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4199,4200,4201,4202],{"name":4088,"slug":4089,"type":15},{"name":4091,"slug":4092,"type":15},{"name":9,"slug":8,"type":15},{"name":4095,"slug":4096,"type":15},{"slug":4099,"name":4099,"fn":4100,"description":4101,"org":4204,"tags":4205,"stars":23,"repoUrl":24,"updatedAt":4114},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4206,4207,4208,4209],{"name":4105,"slug":4106,"type":15},{"name":4108,"slug":4109,"type":15},{"name":9,"slug":8,"type":15},{"name":4112,"slug":4113,"type":15},{"slug":4116,"name":4116,"fn":4117,"description":4118,"org":4211,"tags":4212,"stars":23,"repoUrl":24,"updatedAt":4124},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4213,4214,4215],{"name":4013,"slug":4014,"type":15},{"name":4108,"slug":4109,"type":15},{"name":9,"slug":8,"type":15},{"slug":4126,"name":4126,"fn":4127,"description":4128,"org":4217,"tags":4218,"stars":23,"repoUrl":24,"updatedAt":4139},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4219,4220,4221,4222],{"name":4088,"slug":4089,"type":15},{"name":4133,"slug":4134,"type":15},{"name":9,"slug":8,"type":15},{"name":4137,"slug":4138,"type":15}]