Product support

Visit this product's website for support.


  • Utility

This is simple but flexible contact form builder.

It allows you to create your own (contact) form with custom fields and rules.

All sent data are stored in Messages list.

Admins can be notified of sent form by email, visitors can receive auto reply message.

It also contains passive antispam control (filter about 80% of spam) and IP address protection (limit submits from one address during a day).

Functions overview

  • AJAX enabled form that works even when JavaScript is disabled in visitor's browser
  • custom fields with own type, label, CSS classes, order and validation
  • necessary JS and CSS can be autoamtically injected if you need to start quick
  • passive antispam based on checking form sendind time and spam field content
  • IP address protection limits form submits from one address during a day
  • store sent data in Messages list, read/unread state and preview of sent data
  • auto reply and notification emails
  • dashboard widgets: Messages stats and New messages

Why Small Plugins?

I do not have ambition to create big and expensive solutions. I would like to create free small plugins for all basic function I need on almost every web project.

This is also my way of learning OctoberCMS/Laravel and I will be happy if you find it useful :)

Basic form

Small Contact form

Simple but flexible contact form builder with custom fields, validation and passive antispam.


GitHub clone into /plugins dir:

git clone https://github.com/jan-vince/smallcontactform

OctoberCMS backend

Just look for 'Small Contact Form' in search field in:

Settings > Updates&Plugins > Install plugins


Settings > Administrators

You can set permissions to restrict access to Settings > Small Contact form and to messages list.

Setup new Contact form

Settings > Small Contact form


  • You can set your own CSS class name and general success/error messages.
  • Form can be hidden after successfull send.

Enable AJAX

By default, sending form will trigger page reload. With AJAX, everything can be done without page reloading which will be more user friendly.
If user's browser doesn't support (or has disabled) JavaScript, form will still work with page reloads after send.

  • For AJAX enabled form, before send confirmation dialog can be required.

Add Asssets

If you want to start quickly, you can enable Add assets checkbox - and then Add CSS and JS assets.
This will include necessary styles (Bootstrap, AJAX, October AJAX) and scripts (jQuery, Bootstrap, October AJAX framework and extras).

But you have to include Twig tags {% styles %} and {% scripts %} into your layout or page like this:

        {% styles %}

    {% page %}

    {% scripts %}



If you want to insert assets by hand, you can do it this way (or similar):

        <link href="{{['~/modules/system/assets/css/framework.extras.css']|theme }}.css" rel="stylesheet">

    {% page %}

    <script type="text/javascript" src="{{ [
                [email protected]',
                [email protected]',
                [email protected]']|theme}}.js">




  • You can set button class and text.


Here you can add fields to build your contact (or other) form.

The idea is simple (and solution is so I hope):

  • Click to add new field
  • Set it's name (this is used for &lt;input name=&quot;{{name}}&quot; id=&quot;{{name}}&quot;&gt;), so it should be lowercase without special characters.
  • Set Label if you need one (it is used for descriptive text above input field)
  • Set autofocus if you want cursor to automatically jump to this field (if checked more than one field, cursor jumps to first one)
  • Add field validation rules:
    • You can add one or more validation rules and error messages for them
    • Error messages will be shown above input field
  • You can reorder fields by drag and drop left circle (all fields can be collapsed by pressing Ctrl+click (Cmd+click on MacOS) on arrow in right top corners)


System writes all form data in database, but for quick overview Name, Email and Message columns are visible separately in Messages list.

But you have to help system to identify these columns by mapping to your form fields.

These mappings are also used for auto reply emails where at least Email field mapping is important.


Very simple implementation of passive antispam (inspired by Nette AntiSpam Control).

The idea behind this is to check how fast is form send and if robots-catching field is filled.

  • When allowed, you can set form delay (in seconds) to prevent too fast form sendind (mostly by robots). You can add custom error message (will be shown in general error message box above form).
  • You can add antispam field label and error message for non JavaScript enabled browsers.
    • If JavaScritp is working, antispam field is automatically hidden and cleared.

Check sender's IP

You can add an extra form protection with limit submits from one IP address.

This check has own error message and custom field to set maximum submits.


Mails can be sent directly or queued (OctoberCMS queue must be configured!).

Don't forget to configure mail preferences in Settings > Mail configuration!

Allow autoreply

Email can be send to form sender as confirmation.

  • You have to enter email address and name - it will be used as FROM field
  • Email subject can be manually added here (or edited in Settings > Mail templates (code: janvince.smallcontactform::mail.autoreply)) * Email TO address and name have to be assigned to form fields (in selections only corresponding field types are shown - if you don't see one, try to check it's type in Fields tab)
    • Message field can be also assigned (and will be saved separatelly into database)

Allow notifications

A notification of sent form can be send to provided email address.

Messages list

All sent data from Contact form are saved and listed in backend Messages list.

If email, name and message fields are asigned on Settings > Small contact form > Columns mapping, they will be saved and shown in separate columns.

You can click on a record to see all form data. The message will be marked as read.

Dashboard report widgets

There are available report widgets to be used on OctoberCMS dashboard.

Messages stats

Shows basic messages statistics.

New messages

Shows number of new messages. The color changes to green if there are any.

You can simply click widget to open Messages list.

My thanks goes to:
OctoberCMS team members and supporters for this great system.
Andrew Measham for his photo.
Font Awesome for nice icons.

Created by Jan Vince, freelance web designer from Czech Republic.


Added option to use placeholders instead of labels Pending

May 25, 2017


Changed remote_ip column type to string

May 25, 2017


Fixed IP protection error message

May 24, 2017


Added IP protection function (limit too many submits from one IP address)

May 24, 2017


Updated README.md with assets usage example

May 21, 2017


Fields mapping moved to separate tab *Columns mapping*

May 21, 2017


Mail templates convert new lines to <br> with {{ values|raw|nl2br }}

May 19, 2017


Mail templates now render values with {{ values|raw }}

May 19, 2017


Added dashboard report widgets (Stats and New messages)

May 19, 2017


Added function to delete records in Messages list

May 19, 2017


Fix some typos and add LICENCE file (thank to Szabó Gergő)

May 19, 2017


Fix form hiding after successful send

May 19, 2017


First version of Small Contact Form plugin

May 18, 2017