# Make your Windsurf site's forms send to your inbox

> Windsurf, now Devin Desktop, can build your contact or signup form, but it may send nowhere. Paste one prompt into its agent and messages reach your inbox, with spam filtered out.

Canonical: https://ikiform.com/for/windsurf

## Built your site in Windsurf? Make its forms send.

Windsurf made your form look right. One prompt makes it send. Paste it into the agent and messages from real people reach your inbox, with spam filtered out.

[Get your form link](https://ikiform.com/sign-in). Test it free with no card. Pick a plan when your form goes live.

## How it works

1. **Create a form**: Sign up with no card, add a form and copy the link under Copy your endpoint.
2. **Paste the prompt**: Swap YOUR_FORM_ENDPOINT for your link and send the prompt to the agent in Windsurf, now called Devin Desktop.
3. **Watch one arrive**: Use Send test submission, or submit from localhost, to watch a message reach your inbox. Pick a plan and your live site's messages arrive too.

```text
Connect every form on my site to Ikiform so that each submission reaches me. Send from the browser. Do not build a backend, server route, Server Action, database, email SDK or environment secret for this.

Endpoint: YOUR_FORM_ENDPOINT

Search the whole project for forms (contact, waitlist, signup, newsletter or any other). Check which framework and form library each one uses. Then, for each form:

1. Keep the form library, validation and components it already uses, such as react-hook-form or zod. Do not add a new dependency.
2. On submit, stop the page from reloading and send a POST request with fetch from the browser to the endpoint. If the framework renders on the server, put this in client-side code.
3. Send the form's fields as a JSON object with the headers "Content-Type: application/json" and "Accept: application/json". Keep every field the form already has and give each one a clear name, such as name, email and message.
4. If the form has an email field, also send its value as _replyto, so I can reply straight from the notification email.
5. Add a hidden text input named _gotcha as a spam trap. Move it off-screen instead of using display: none, give it tabindex="-1", autocomplete="off" and aria-hidden="true", and send it with the other fields. Real visitors leave it empty.
6. While the request is sending, disable the submit button and show a loading state.
7. The response is JSON. Only when it has "ok": true, clear the form and replace it with a short thank-you message. Never show a success message before that.
8. If "ok" is false, show error.message near the submit button, and show each message in error.fields next to the field with that name. If the request fails or the response is not JSON, show "Something went wrong. Please try again."
9. Only put the endpoint in a public environment variable if the project already uses them in browser code. Otherwise keep it as a constant next to the form. Do not add a captcha, an API key or any secret. The endpoint is public and safe to use in the browser.

Keep my design, text and layout exactly as they are. Only change how the forms send. When you are done, list every form you changed.
```

## Every message, in one place.

Each message shows up in your dashboard as it arrives and in your inbox seconds later. If the form asks for an email, hit reply to answer the sender. Spam is set aside and doesn't email you.

## Questions, answered.

### Windsurf is now Devin Desktop. Does this still work?

Yes. Windsurf was renamed Devin Desktop in 2026. The prompt is plain text, so its agent can run it, and so can any other coding agent. It works with Next.js, React, Astro, SvelteKit, Vue and plain HTML.

### Can I test it locally?

Yes. Before you pick a plan, posts from localhost, 127.0.0.1, [::1], *.localhost and *.local are delivered for free, up to 50 a month. Run your dev server, submit the form and watch the message reach your dashboard and inbox.

### How does it keep out spam?

Every form gets a hidden field that bots fill in and people never see, plus spam scoring and rate limits. Anything caught as spam is kept apart in your dashboard and doesn't email you.

### Can I try it before I pay?

Yes. Setting up is free and needs no card. Use Send test submission on your form's page, or submit from localhost, to watch messages reach your dashboard and inbox. Any other address counts as live, preview deploys included. Until you pick a plan, those messages are held, not delivered, and visitors are told the form isn't live yet. Held messages are kept for 30 days, up to 100 a month, and arrive as soon as you pick a plan.

### What will it cost?

Pro starts at $6/mo for 500 submissions and scales with your volume up to 1M. Every tier has every feature. Yearly gets 2 months free. Rather pay once? Packs start at $49 for 10,000 submissions that never expire.

### Why is there no free plan?

Free form endpoints fill up with bots. Paid-only keeps the service funded to store your submissions and keep retrying your webhooks when your server is down. Testing from localhost costs nothing.

## Your site looks done. Now make it send.

Create a form, paste one prompt into Windsurf's agent and start reading your messages in your inbox.

## Related

- [Ikiform](https://ikiform.com/)
- [Ikiform for sites built with AI tools](https://ikiform.com/for)
- [Pricing](https://ikiform.com/pricing)
- [Ikiform Docs](https://ikiform.com/docs)
