A
Atlas
...

HTML Form Integration

The simplest way to use Atlas Forms - standard HTML forms with no JavaScript required.

Basic Form

html
<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:

  • Keep your form in Sandbox Mode (default)
  • Go to Form Settings → Localhost Testing
  • Click Register My 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:

    html
    <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

    html
    <input type="file" name="documents" multiple accept=".pdf,.doc,.docx">

    Honeypot Spam Protection

    Add a hidden field to catch bots:

    html
    <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:

  • Go to Form Settings → General (under Delivery Settings)
  • Set Success Redirect to your thank-you page
  • Users will be redirected there after submission
  • The redirect URL receives query parameters:

    https://yoursite.com/thank-you?submission_id=xxx&status=success

    Turnstile CAPTCHA

    Add Cloudflare Turnstile for bot protection:

    html
    <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:

    html
    <!-- 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:

    html
    <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

    html
    <!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>