We have turned off our servers and Ottoform is no longer able to send outbound emails.

The last contact form you'll ever need

Try It


Easily adds to any website or CMS


200 free form submits per month


Start sending in less than a minute

Here's the skinny

Create an HTML form to your liking and point the action attribute to us. The form will hit our servers and we relay that information back to you in an email. We handle the dirty details and protect you from malicious users. Best of all, it's beautifully simple and free to use - try it.


Getting started

This section is intended for those with knowledge of HTML forms. If you are not familiar with how to code HTML forms - no problem, check out our form builder.

1Change the form action

Modify the action attribute to point to our servers and replace YOUR-EMAIL-ADDRESS with your own email.

<form action="https://send-us-east.ottoform.com/YOUR-EMAIL-ADDRESS/" method="POST">

TIP use form method POST. This prevents values from being passed in the URL and it is the appropropriate method. We may remove support for using GET in the future.

2Build your form

Use standard form elements to create your form. Be sure to include a name attribute on every form field you wish to capture or the value will not be emailed to you.

<input type="text" name="first_name" placeholder="First Name">

TIP the name attribute is sent as the key so use descriptive easy to remember names.
TIP use form labels and point the for attribute to the id of your input for proper UX.

3Start sending

That's it! Your form is ready to be submitted! But, since you like things fancy, see our advanced configuratons below.

4Validation & Helpers

Ottoform can validate and require input when you add magic _o_ helpers to your name attribute.

Append _o_required to the end of your name attribute to make it a required field.

<input type="text" name="first_name_o_required" placeholder="First Name">

Use _o_type_[email|boolean|int|url] to validate the field is of a specific type. For example, website_o_type_url will require the value is a URL.

<input type="email" name="email_o_type_email" placeholder="Email">

NOTE We remove our magic _o_ helpers from the keys when we send you an email, so first_name_o_required will be sent to you as just first_name.

TIP You can chain magic helpers to use both validation and required helpers. For example, email_o_required_o_type_email will work.

5Beef it up

Add interactivity using hidden form fields and our custom o_ attributes.


Sets the langage shown.

en - english default setting  |  es - spanish  |  de - dutch  |  fr - french

<input type="hidden" name="o_lang" value="en">


Change the response shown after submission.

Default message: Thank you! The form was sent.

<input type="hidden" name="o_response_message" value="Thanks! We will contact you back as soon as possible!">


Redirect the user to a specific URL after they successfully submit a form.

Default: N/A - the response message is displayed instead.

<input type="hidden" name="o_return_url" value="http://website.com/thanks">

o_subscriber_list Pro

Adds the submission to a subscriber list. This feature is only available for Pro users.

When a list is created through the Pro admin panel, we store name attributes equal to o_email, o_name, o_address, o_city, o_state, and o_company to your subscriber list. Duplicate values are included unless the entire submission is a duplicate.

Any other name attribute not listed here will be sent to you via email but will not be stored with your list. You can use _o_required at the end of the name attribute to require the user include it. Using o_type_ validation will not work.

<input type="hidden" name="o_subscriber_list" value="bobs_pools_newsletter">

<input type="text" name="o_name" placeholder="Enter your name">
<input type="email" name="o_email_o_required" placeholder="REQUIRED: Enter your email">

6Want more?

There's lots more. Like hidden emails, carbon copies, and more. Check out our Features page for everything Ottoform can do and upgrade to Pro for the best possible experience.