Skip to content
form koi.Start free

Private file attachments · Pro

Contact forms
with file uploads.

Collect PDFs, screenshots and documents with your contact form on Pro. Store attachments with each submission, download them privately and choose when files expire.

250 submissions/month free. No credit card required.

Attachment preview · stays on your device

A little more context.

A project brief, a screenshot, or a small document.

Up to 3 files. 5 MiB each. 10 MiB combined.

Choose small files to preview the attachment limits. Nothing is uploaded.

Private file storage is included with Pro.

Collect project briefs, screenshots and documents.

01

Project briefs

Receive a PDF alongside the client’s goals and contact details. Start the conversation with the context already in one place.

02

Support screenshots

Let a visitor show what they are seeing. Read the message and its image together instead of asking for a separate email.

03

Small documents

Accept supported text and CSV files when a message needs structured detail. Clear limits keep expectations simple.

Need file uploads or more submissions?

Start free with 250 submissions a month, spam protection and email delivery tracking. Pro adds private file uploads and 10,000 monthly submissions, shared across your forms, for $12/month or $120/year.

Collect project briefs and screenshots with 5 GiB of private storage included. Uploads require Pro: up to 3 files per submission, 5 MiB each and 10 MiB total. Extra usage is optional, with a monthly spending cap you choose.

Compare Free and Pro →

One file input. A complete submission.

Enable uploads on a Pro form, choose file retention, and copy the endpoint from your connection guide. A native HTML upload uses multipart encoding. The example below starts without Turnstile; add its generated widget markup if you enable protection.

contact-with-attachments.html
<form action="https://api.formkoi.com/f/YOUR_PUBLIC_FORM_KEY" method="POST" enctype="multipart/form-data">
  <label for="name">Your name</label>
  <input id="name" name="name" autocomplete="name" required>

  <label for="email">Email address</label>
  <input id="email" name="email" type="email" autocomplete="email" required>

  <label for="message">Your message</label>
  <textarea id="message" name="message" required></textarea>

  <label for="attachments">Attachments (optional)</label>
  <input id="attachments" name="attachments" type="file" multiple accept=".pdf,.png,.jpg,.jpeg,.webp,.txt,.csv" aria-describedby="attachments-help">
  <p id="attachments-help">Up to 3 files. 5 MiB each, 10 MiB total.</p>

  <!-- Leave this hidden anti-spam field empty. -->
  <input type="text" name="botcheck"
    tabindex="-1" autocomplete="off" style="display:none" hidden>

  <button type="submit">Send message</button>
</form>

For JavaScript, send a FormData body and let the browser set Content-Type. Files cannot be preserved by converting the form to ordinary JSON. Read the upload guide.

Small files. Clear limits.

LimitWhat’s included
PlanPro, with 5 GiB of private storage included and $0.25 per GiB beyond that with extra usage on
Files per submissionUp to 3
File sizeUp to 5 MiB per file, 10 MiB combined
Supported formatsPDF, PNG, JPEG, WebP, UTF-8 plain text and CSV
File expiryChoose 1–365 days for new attachments

File expiry is separate from message expiry. Choose a lifetime that gives you time to review and download what you need. Compare Free and Pro.

Frequently asked questions

Contact form
questions.

Are the files public?

Attachments use private storage and are accessed through the workspace’s download flow. They are not a public file-hosting service.

Does the file picker enforce the allowed formats?

The accept attribute helps visitors choose a suitable file, but it is not a security check. The server independently checks supported content and limits for real uploads.

Can I send large videos or ZIP archives?

No. The supported formats and size limits are intended for small documents and images. Videos and ZIP archives are not supported by this upload flow.

What happens when an attachment expires?

It is no longer available to download. Message retention is configured separately, so a message may remain after its attachment has expired. Download needed files before their expiry.

Start with Form Koi Free

Start receiving
form submissions.

Create a free form Read the quickstart