> ## Documentation Index
> Fetch the complete documentation index at: https://docs.raykoi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Basic HTML

> One script tag. No manual JavaScript.

Auto-attaches to every `<form data-raykoi>` on the page — handles submission, validation, CAPTCHA, and the success/error message automatically.

```html theme={null}
<script src="https://app.raykoi.com/submit.js"></script>

<form data-raykoi data-form-id="YOUR_PUBLIC_ID" data-success-message="Custom success text" data-error-message="Custom error text">
  <input type="email" name="email" required>
  <div data-raykoi-error="email"></div>
  <button type="submit">Submit</button>
  <!-- Raykoi writes the success/error message here — style it in your own stylesheet -->
  <div data-raykoi-status></div>
</form>
```

Style injected messages with the stable hooks Raykoi adds at runtime: `.raykoi-field-error` and `data-raykoi-error-type` (`required`/`pattern`/`minLength`/...) on field error containers, `.raykoi-message` and `data-raykoi-state="success"|"error"` on the message container.

Every `data-*` attribute this runtime reads is in [Attributes](/integrations/options-reference/attributes); the full lifecycle event list is in [Events](/integrations/options-reference/events).

<Card title="Next: set up CAPTCHA" icon="shield-check" href="/essentials/captcha/turnstile" horizontal />
