Add Domain

A useful enquiry form before the backend is connected

Short answer. You can finish a reviewable website prototype without a form-service account. Let the visitor prepare and copy a message, or open an email draft to an address the owner supplied. Say clearly that nothing has been sent. Connect a service before calling the form a live enquiry channel.

Choose the state you can actually support

Available connectionUseful actionWhat you can claim
None yetPrepare and copy a readable draftPrototype; sending is not connected
Owner-confirmed emailOpen a prefilled draft for the visitor to review and sendEmail draft opened; delivery is unconfirmed
Owner's form service or backendSubmit to that endpoint and handle success and failureAccepted only after that service confirms; delivery only if verified separately

Copy a working static example

Open the form example · Download the standalone HTML

  1. Use the example in the website's existing design. It has labelled fields, a reviewable draft and a Copy button with a manual-copy fallback.
  2. Keep OWNER_EMAIL empty until the owner gives you a real contact. An empty recipient is visibly labelled as a prototype.
  3. If the owner supplies an email address, set it in the file. The visitor chooses whether to open and send the draft. The page sends nothing automatically.
  4. When a form endpoint is provided, replace the draft handler with that integration. Test acceptance and failure with the owner. Do not place service secrets in frontend code.

The example does not transmit visitor enquiries to Add Domain, use a third-party form service or save them in browser storage. A draft remains on the page until the visitor copies it or chooses their email app. The site owner must choose their real enquiry workflow and privacy information.

Why a static form does not send

SymptomLikely cause and checkFix and honest result
mailto: does nothing on a phone, or asks to choose an appThe visitor has no email handler configured, or the browser cannot hand the link to it. A mailto link opens an email draft; it does not send a message.Keep a visible Copy message option and the owner-confirmed contact. For sending inside the page, connect the owner's form service or backend. Never report delivery after opening a draft. Email links.
“Blocked form submission” inside a sandboxed iframeAn iframe with sandbox but no allow-forms blocks native form submission. A JavaScript handler can also need allow-scripts; opening a draft can face separate navigation restrictions.Test the standalone published page. If the embed owner controls the sandbox and approves the form, request only the required permissions, including allow-forms for native submission. Keep the host's other restrictions. Iframe sandbox tokens.
Browser fetch or XHR fails with a CORS errorThe endpoint has not allowed the published origin, or its preflight OPTIONS response is missing the allowed origin, method or headers. Inspect the browser Network panel and the service logs.Use the provider's documented browser integration, configure the endpoint's CORS policy for the real site, or use a backend on the same origin. Native HTML form navigation differs from fetch/XHR. Do not use mode: no-cors as a success signal: an opaque response cannot confirm acceptance. CORS.

A browser error does not always prove nothing was sent: a simple cross-origin request may reach the service before the browser blocks access to its response. Check service logs before retrying to avoid duplicate enquiries. A successful HTTP response confirms only what the service documents; verify delivery separately.

Handover without pretending the prototype is live

Report: “Website preview ready. Enquiry draft and copy tested. Sending is not connected: [form endpoint] or an owner-confirmed contact is still needed.” A booking request is also different from a confirmed reservation.

Then prepare the public launch

After the working preview, choose the publishing host, test the customer action and confirm the owner's final address. A platform URL can be shared already. An own domain is optional and adds control over the address when moving hosts. Reuse an existing domain, or check a suitable name if the owner wants one.

Next: public-launch checklist · publishing routes for each AI platform.

Building the site with an AI agent? Read the complete website workflow in HTML, or its raw SKILL.md / raw GitHub copy. No installation is needed. API and MCP for agents: For agents.