v 13.0 Third Party 1082
Download for v 13.0 Deploy on Odoo.sh Live Preview
Lines of code 4547
Technical Name formio
Also available in version v 12.0 v 11.0
You bought this module and need support? Click here!
Lines of code 4547
Technical Name formio
Also available in version v 12.0 v 11.0

Form.io - Form Builder & Forms

Powerful Form Builder and Forms integration


Subject Description
Form Builder Powerful and seamless "Drag and drop" Form Builder in Odoo.
Forms - Create/start new Forms
- Publish Forms e.g. on portal and website
- Assign Form(s) to user and send invitation by mail
- Forms Submissions are stored in the Odoo database
- View, analyse, use and share Forms (submissions data)
Highly configurable Easily configure your Forms deployment, publishing and other functionalities (done in the Form Builder).
Integration (ERP, workflow, website) While building and deploying standalone Forms is enjoyable ...
Benefit from real power by integrating Forms with your workflow, ERP, website, e-commerce and other Odoo business apps.
Visit the other Form.io modules to get a basic idea - Click the author link "Nova Code" in the top.
Populate Form fields with Odoo fields/data Example: populate a selection/dropdown field where choices are Odoo Products, filtered by some product-category.
Multilingual & Translations management Forms are multilingual: Language-switch buttons can be setup. Manage your custom translations (e.g. labels, select choices) in the Form Builder.
Upgrade-tool GUI software Upgrade the GUI software (builder, forms) when a new version is available, by just a few clicks.
Developer Friendly - Extend, customize the Odoo Formio modules.
- Develop new Odoo Formio modules.
- Develop custom Form components e.g. QR-code scanning, a value slider, reCAPTCHA component (already released as module) etc.
On-premise All software and data stays on your server and Odoo database: Form Builders, Form Submissions etc.
Installation After installation you can start right away. No extra technical requirements or setup.
We open source - LGPL-3 licensed
- Issue reports and contributions are welcome on https://github.com/novacode-nl/odoo-formio

Visit the online Demo

Click the Live Preview button in the top.

Users (email / password)

  • admin / admin
  • demo / demo
  • portal / portal

Form Builders

Configure, design and store in Odoo

Form Builders

Form Builder Configuration

Form Builder

Forms & Submissions

Create a Form (in Odoo or by hyperlink)

Form: Pending

Form: Completed

Form: Submission form-view

Form Submissions

Module configuration


List of Available & Installed (Form.io GUI) Versions

Download & Install Available (Form.io GUI) Versions



  • Configurable redirect, after (submit) submission of Portal and Public (website) Form:
    - Configuration in Form Builder
    - Handle whether to redirect or reload (new) Form.
  • Redirect after Submit-done configuration for Portal and Public (website) Forms.


  • Fix Form not loaded. Javascript workaround (known) browser incompatibility errors.
    - Mac: Safari 12.x, 13.1
    - iOS: Safari

    - Safari 13.1 on Mac experienced error: "unexpected token '='. expected an opening '(' before a method's parameter list"
    - iOS issue solved, but details not debugged. Dev Tools not ready/present in iOS browsers.


  • Fix frontend JavaScript: Execute loadForm() after the DOM has been mounted(), not upon (async) willStart().
    (This of course failed to bootstrap the (formio) App when the DOM wasn't loaded, which results in nothing).
  • Improve frontend JavaScript: Add initForm() hook and implement specific constructor/object properties in the App classes (backend_app.js, public_app.js, public_create_app.js).
    E.g. to set config_url = '/formio/public/form/' + this.form_uuid + '/config';


  • Frontend rebuild with Owl (Javascript framework) - Form Builder and Form:
    - Use the Owl JavaScript framework, to abstract the Form component into a Component class.
    (Owl: https://odoo.github.io/owl)
    - JavaScript modules (export/import) to bind the Owl classes into specific backend and public Form (Owl) Apps.
    - This also breaks/ends support for Internet Explorer, which is already published EOL.
  • Changed some endpoint URLs (again, to improve URL conventions).


  • Version GitHub tags: Add scheduled action (ir.cron daily) which checks and registers new client/library Versions (GitHub tags).
  • Version GitHub tags: Add field "Installed on", which stores the installation datetime.
  • Version GitHub tags: Highlight installed version records with color (success/green).


  • New feature: Form.io (client/library) Version Checker, Importer and Installer tool.
    Now administrators can check, import (from GitHub) and install new releases/versions by a single click in Odoo.
    Soon a scheduled Cron action shall be implemeneted which does the (default daily) checking and importing.
  • New feature: Configuration setting to specify the default Form.io (client/library) Version for any new Form Builder.


  • New Components API feature: create a Partner after Form submission. Possibility to add the Partner to Followers of the Form record.
    Configuration in Form Builder: Partner field/component (email, name), Add to Followers (checkbox/boolean).


  • Add Form Builder UUID (field).
  • Data migration: update all formio_builder records, set UUID (field) with generated value.
  • Change the public Form loading and submit (URLs, handling) from ID to UUID.
    This slightly protects from abuse of public Forms (some obfuscation of the real id). https://github.com/novacode-nl/odoo-formio/issues/46


  • New tab Form.io Components in Form Builder form-view.


  • Public Forms - Access configuration and check (by interval expiration settings: minutes, hours, days).
  • Public Forms - Improvements in (web)controller, templating and JavaScript:
    - Split up JavaScript files, which implement the Form handling (backend, public, public new).
    - This change is subjected to redundant code (DRY), but works for now and shall be addressed by using a JavaScript framework (probably Owl).
  • Change formio.form toplevel URLs: remove the /root suffix.
    This was introduced in 1.8. Seems not to be an issue anymore.


  • Add optional UUID (field) into Forms list view


  • Change 4.3 implementation (final_res fields), which was rather confusing:
    - Remove the final_res_model, final_res_id fields.
    - Instead: in model formio.form added fields initial_res_model_id, initial_res_id.
    - These fields store the initial (referenced) resource record. So swapping the res_model_id and res_id afterwards is supported, for specific implementation requirements.
    - Add migration to update formio_form records: res_model_id (determined by formio_builder), copy res_id to initial_res_id.


  • In model formio.form added fields final_res_model, final_res_id.
    These fields can be used to swap the (referenced) resource record, for specific implementation requirements.
  • In model formio.builder added field res_model, which represents the technical model-name.


  • In the create Form (form-view) by default provide only Form Builders without Resource-model in the Form Builder drop-down field.
    Specific modules extend this (domain) filter to add appropriate Form Builders related to the (active) Resource-model - e.g. formio_sale, formio_stock.


  • Improvement: ETL Odoo (resource) data into Form, requires to bypass access control on the target/resource model.
    (Use sudo here).


  • Basic setup to deploy/share public Forms, by a setting (checkbox) in Form Builder.
  • Implement sequence field in Form. Usefull when storing and listing forms in an ordered way.
  • New setting (in Form Builder) which instructs the Form whether to show/hide the UUID in Form footer.
  • Store those show/hide setting fields in the Form, instead of joining its relational Builder value (in readonly mode).
  • Improvements in tree/list and form views regarding Form and Builder.


  • New setting (in Form Builder) which instructs the Form whether to show/hide the Title.
  • Moved the Form Title from the main HTML-document into the embedded document (iframe).
    This improves the embedded Form experience.


  • New settings (in Form Builder) which instructs the Form whether to show/hide some metadata: Assigned user, Submission user & date, ID, State.
    The default is to show all these metadata fields (for backwards compatibility and no data migration needed).
  • Import formio.js version 3.x assets and bootstrap (CSS) instead of CDN.
  • Fix silly Javascript bug: _.extend (underscore.js ain't loaded here). Use jQuery extend.
  • Add help text regarding issue with (Formio.js) and view_as_html setting https://github.com/formio/formio.js/issues/1545


  • Add formio.js v4.9.26 assets https://github.com/formio/formio.js/releases/tag/v4.9.26
  • User in group "Form.io Admin" can edit the Form it's submission data, for a new Form (if ain't stored).


  • Don't override provided vals in formio.form function _prepare_create_vals().


  • New feature: ETL Odoo (resource) data into Form.
    Supported fields:
    • Scalar fields e.g. Char, Text, Integer, Boolean, Date, Datetime
    • Many2one field (load it's leaf/scalar field)
    • One2many field, supported by Form.io Datagrid component
    (documention and examples shall be added soon)


  • Optional configuration to allow specific User Group(s) to force update of a Form state field (draft, complete, cancel) e.g. by buttons. Feature request: https://github.com/novacode-nl/odoo-formio/issues/36


  • Fix portal iframe (height) resizing issue.
    Issue report: https://github.com/novacode-nl/odoo-formio/issues/35


  • Changed the way Resource Fields are determined and stored. Not by dependent/computed fields anymore, which caused all kind of troubles.
    Affected fields: res_name, res_info, res_act_window_url and res_partner_id.
    !! CAUTION, BEFORE UPGRADE: Test first and be sure all Forms data (regarding these fields) has been migrated properly.


  • Form Builder layout improvements: full width, remove horizontal scrollbar.


  • Fix (workaround) to solve form height-resizing issues.
    Issue report: https://github.com/novacode-nl/odoo-formio/issues/20


  • Add formio.js v4.9.23 assets (https://github.com/formio/formio.js/releases/tag/v4.9.23)
  • Remove formio.js "latest" version (CDN URLs). Requests from CDN caused time-outs.


  • Odoo formio view types for Builder and Form. Finally one can switch view types (form, formio) within the window action.
  • Moved the so-called Form dock (info bar) into the iframe. This updates the info on a (iframe) window reload.
  • Remove the submit done url implementation, which is useless in a backend usage/context.
  • Other improvements and simplification.


  • Extend formio.form create methods with _prepare_create_vals method, which in turn specific modules could call to assign field vals.
  • Fix method compute_res_fields which stores fields regarding the resource model (made possible by change in former point).


  • Computed fields regarding resource model: Store res_name and res_partner_id. Change dependent compute method.
  • Add (related) field submission partner.


  • Change URLs and controllers FROM /formio/form/<action>/<string:uuid> URLs TO /formio/form/<string:uuid>/<action>. This solves issues regarding relative URLs from a Formio Javascript perspective (components). The UUID was stripped by the Formio Javascript client API.
    Should solve: https://github.com/novacode-nl/odoo-formio/issues/11
  • Remove 2 legacy (obsolete) controller methods for routes: /formio/form/<string:uuid> and /formio/builder/<int:builder_id>


  • Prevent Javascript clashes between Odoo and Form.io. Hence remove all Odoo Javascript (assets) loading in the Form.io iframe.
  • Add and load standalone JsonRPC client.


  • Portal: Improved (refactored) controller layout values method.
  • Portal: form buttons now keep query-params.


  • Demo Builder: Save as Draft (button).
  • Form update to Draft fix (workaround). Remove submission_data['submit'].


  • Include and serve the Formio.js library assets (JS, CSS) within the module. Don't use CDN anymore.
  • Click button to display the Form Builder in Full Screen.


  • Portal: Improved (refactored) controller layout values method.
  • Portal: form buttons now keep query-params.


  • Rename (consistency) Builder form-view id/ref: from view_formio_builder to view_formio_builder_form.


  • Possible "Resource model(s)" needs to be registered from sub-modules e.g. formio_sale. Just choosing from all models is useless and confuses the user about its functionality.


  • Form.io embedded in iframe. This avoids clashes (Javascript and CSS) between Odoo and Form.io.
  • Redesign of Form.io templates


  • Search filters on Form Builder and Forms.
  • Assign a user (owner/author/designer) to a Form Builder.


  • Change default forms view to list.
  • Improve forms kanban to group by state.


  • Form Builder versioning. Also create a new Builder version-record (from existing one).


  • Form Builder states: Draft (in design), Current (published) and Obsolete (unpublished).


  • Redesign of Builder and Form templates. A simplification and improvement.
  • Hopefully fixed enough styling issues due to Bootstrap 4 VS 3 presence (Odoo, Formio) and differences.
  • Other small improvements


  • Include new Form.io versions and assets (3.27.3, 4.0.8)
  • Add recommendation into the description of the "latest" Form.io version.


  • Translation system for Form labels, placeholders etc.
  • Language selector on Form.


  • Simple form wizards.


  • Access-check improvements.
  • UI improvements.
  • Dutch translations.


  • Dropdown button in Portal, to add and fill-in new Form(s).


  • Form state (Pending, In Progress, Complete, Canceled).
  • Form is readonly if state is Complete or Canceled.


  • Form invitation mail.
  • Improvements regarding form assignment (user filter).


  • Portal User can use forms.
  • Restrict access to assigned forms (Portal User, Internal User).


  • Translations system to manage the Form.io translatable terms and load into the form.


  • Form.io (library: JS, CSS) version management and loading.


  • Initial version.

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Please choose a rating from 1 to 5 for this module.
Very Good Job- Well Done
Doğan Üstündağ
on 5/14/20, 6:39 AM

I have not fully checked all related mods. But this is a very good 3rd party mod. with related mods. for engineering calculations etc.. The provider has done very good works. Thanks Dogan

Re: Very Good Job- Well Done
Bob Leers
on 5/14/20, 7:51 AM Author

Thanks for your review and rating Doğan! By the way.... Soon a NEW Form.io module "ETL Interface" shall be released - Explore all Forms data as records in generated models and configurable views (tree/list, form, search, graph). The ETL Interface can be setup in every Form Builder.

Bob Leers
on 8/10/20, 2:25 PM Author

Regarding the (Form.io Form) snippet... You need the module "Form.io Website" - https://apps.odoo.com/apps/modules/13.0/website_formio/ (V13 tough).

Can't find the form.io builder snippet
on 8/10/20, 1:41 PM

I installed Form.io, Form.io Website and Form.io CRM on Odoo V12 but can't seem to find the form builder (Form.io Form) snippet like you have in your demo site. Is there something I'm missing? Thanks in advance.

Re: Can't find the form.io builder snippet
Bob Leers
on 8/10/20, 2:08 PM Author

Hi Odi, this is currently only available in V13. Would you like to backport it? Please send me a mail "bob (at) novacode (dot) nl" or submit a pull-request on GitHub :) Greets, Bob

Bob Leers
on 8/8/20, 3:04 PM Author

Regarding a file-upload server as storage type... I know somebody who implemented a Angular (ng) upload server for form.io files. LINK: https://github.com/walkerblackwell/formio-upload-unauthenticated It also requires a webproxy (e.g. nginx) front-end with htpasswd or some other separate authentication scheme for download of files. Otherwise everything is public by default.

Really looks good, but
on 8/7/20, 7:22 PM

I need a pointer on how to link a data container (file storage) for the Upload content. Thank you, d

Re: Really looks good, but
Bob Leers
on 8/8/20, 6:53 AM Author

Hi Damon, currently one can upload and store files (in form submission_data) with Base64 storage type - configured in the File component. The other storage types ain't supported (yet) by this integration module. I know it's still a disadvantage. Maybe I, or Formio JS library or contributors can come up with a solution (e.g. a new component, extension or an integration feature in this Odoo module). Best ! greets, Bob