HTML Form Integration
The simplest way to use Atlas Forms - standard HTML forms with no JavaScript required.
Basic Form
<form action="https://atlasforms.app/f/YOUR_FORM_ID" method="POST">
<label>
Name
<input type="text" name="name" required>
</label>
<label>
Email
<input type="email" name="email" required>
</label>
<label>
Message
<textarea name="message" required></textarea>
</label>
<button type="submit">Send</button>
</form>Replace YOUR_FORM_ID with your form's public ID from the dashboard.
Testing Locally
HTML forms work on localhost automatically — no code changes needed. Just register your IP:
Your form will now accept submissions from your localhost. The IP check happens server-side.
Note: When you go Live, localhost will be blocked. Use a production domain.
With File Upload
Add enctype="multipart/form-data" to accept files:
<form
action="https://atlasforms.app/f/YOUR_FORM_ID"
method="POST"
enctype="multipart/form-data"
>
<label>
Name
<input type="text" name="name" required>
</label>
<label>
Resume (PDF)
<input type="file" name="resume" accept=".pdf">
</label>
<button type="submit">Submit Application</button>
</form>Multiple Files
<input type="file" name="documents" multiple accept=".pdf,.doc,.docx">Honeypot Spam Protection
Add a hidden field to catch bots:
<form action="https://atlasforms.app/f/YOUR_FORM_ID" method="POST">
<!-- Honeypot - hide with CSS, bots will fill it -->
<div style="position: absolute; left: -9999px;" aria-hidden="true">
<input type="text" name="_gotcha" tabindex="-1" autocomplete="off">
</div>
<input type="text" name="name" required>
<input type="email" name="email" required>
<button type="submit">Send</button>
</form>Success Redirect
By default, users see a generic success page. Configure a custom redirect:
The redirect URL receives query parameters:
https://yoursite.com/thank-you?submission_id=xxx&status=successTurnstile CAPTCHA
Add Cloudflare Turnstile for bot protection:
<form action="https://atlasforms.app/f/YOUR_FORM_ID" method="POST">
<input type="text" name="name" required>
<input type="email" name="email" required>
<!-- Turnstile widget -->
<div class="cf-turnstile" data-sitekey="YOUR_SITE_KEY"></div>
<button type="submit">Send</button>
</form>
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>Field Types
Use appropriate input types for better validation:
<!-- Text -->
<input type="text" name="name">
<!-- Email (validates format) -->
<input type="email" name="email">
<!-- Phone -->
<input type="tel" name="phone">
<!-- URL -->
<input type="url" name="website">
<!-- Number -->
<input type="number" name="age" min="0" max="120">
<!-- Date -->
<input type="date" name="birthdate">
<!-- Checkbox -->
<input type="checkbox" name="subscribe" value="yes">
<!-- Radio buttons -->
<input type="radio" name="plan" value="basic"> Basic
<input type="radio" name="plan" value="pro"> Pro
<!-- Select dropdown -->
<select name="country">
<option value="us">United States</option>
<option value="uk">United Kingdom</option>
</select>
<!-- Textarea -->
<textarea name="message"></textarea>Styling
Atlas doesn't inject any styles. Use your own CSS:
<style>
form {
max-width: 500px;
margin: 0 auto;
}
label {
display: block;
margin-bottom: 1rem;
}
input, textarea, select {
width: 100%;
padding: 0.5rem;
border: 1px solid #ccc;
border-radius: 4px;
}
button {
background: #007bff;
color: white;
padding: 0.75rem 1.5rem;
border: none;
border-radius: 4px;
cursor: pointer;
}
button:hover {
background: #0056b3;
}
</style>Complete Example
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Contact Us</title>
<style>
* { box-sizing: border-box; }
body { font-family: system-ui, sans-serif; padding: 2rem; }
form { max-width: 500px; margin: 0 auto; }
label { display: block; margin-bottom: 1rem; }
input, textarea { width: 100%; padding: 0.5rem; margin-top: 0.25rem; }
button { background: #007bff; color: white; padding: 0.75rem 1.5rem; border: none; cursor: pointer; }
.honeypot { position: absolute; left: -9999px; }
</style>
</head>
<body>
<h1>Contact Us</h1>
<form action="https://atlasforms.app/f/YOUR_FORM_ID" method="POST">
<!-- Honeypot -->
<div class="honeypot" aria-hidden="true">
<input type="text" name="_gotcha" tabindex="-1" autocomplete="off">
</div>
<label>
Name *
<input type="text" name="name" required>
</label>
<label>
Email *
<input type="email" name="email" required>
</label>
<label>
Subject
<input type="text" name="subject">
</label>
<label>
Message *
<textarea name="message" rows="5" required></textarea>
</label>
<label>
<input type="checkbox" name="subscribe" value="yes">
Subscribe to newsletter
</label>
<button type="submit">Send Message</button>
</form>
</body>
</html>