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

Form Builder & Forms integration

Build easy-to-use, professional and versatile Forms to integrate and collect any information you need for your business.


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)
On-premise All software and data stays on your server and Odoo database: Form Builders, Form Submissions etc.
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 Forms 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 and Builders 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 Forms modules.
- Develop new Odoo Forms modules.
- Develop custom Form components e.g. QR-code scanning, a value slider, reCAPTCHA component (already released as module) 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)

  • 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



  • Fix: Translations didn't worked, due to regression by latest change in formio.builder function i18n_translations


  • Fix: Issue in Form (form-view) searching Builder(s) really didn't worked properly.
    Technical details:
    This change addresses the formio.builder, adding the search method for the computed field display_name_full which is used as _rec_name.


  • Fix: Error when uninstall and installing again. Record does not exist or has been deleted. (Record: formio.builder.js.options(1,), User: 2)
    Uninstall now deletes the system parameter (record) with key formio.default_builder_js_options_id


  • New feature: Grant copy Forms persmission (button), also in portal, configured by Form Builder.
    It's also possible to configure whether the Form should be copied and merged into the latest/current Form Builder schema (design).


  • Removed rigorous record rule ir_attachment_unlink_formio_form (Attachments of completed Forms can't be deleted).
    This was intended, now moved and improved in the module formio_storage_filestore.


  • Fix: delete and cancel actions of Form in the portal.


  • Forms app/module Category.
  • In User form, ensure User Groups in dropdown/select instead of checkboxes.


  • Form (field) Title is required and indexed.


  • Fix singleton error, when matching multiple Partners by email in the Form (e.g. for following and report emails).
  • Schedule Activity (on Form) if found multiple Partners with same email submitted in the Form.


  • JavaScript: Set the baseUrl (value: window.location.href) on the Formio object.
    The baseUrl is the Form it's <iframe/> src.
    This can be used in other (integration) modules e.g. for security/access checking etc.


  • Fix server crashing due to request unbound error, while installing or updating module.
    Bug has been introduced in version 8.7, formio.builder function _compute_public_url of computed field public_url.


  • In model ir.attachment define the relational field formio_form_id = fields.Many2one('formio.form').
    Can be used for all kinds of integration e.g. files upload storage.


  • In Form Builder show URL/link to public create Form (e.g. to embed, share).


  • Fix: Language determination in Public Form (also used by website_formio module).


  • Fix (4): language switcher buttons and translations in public Forms (also used by website_formio module).
    Convert the Odoo language code (underscore "_") to Formio JS/i18n expected IETF code (hyphen "-").


  • Fix: formio.js version updates in Windows environments are not available.


  • Fix (3): language switcher buttons and translations in Form Builder and Forms.
    Convert the Odoo language code (underscore "_") to Formio JS/i18n expected IETF code (hyphen "-").


  • Fix (2): language switcher buttons and translations in Form Builder and Forms.


  • Fix (1): language switcher buttons in Form Builder and Forms.
    Shown languages (buttons) are determined by configured languages in the Form Builder.
    This concerns:
  • Add translations pt_BR → Portuguese (BR) / Português (BR)


  • Rename the App and other UI parts (titles, labels) to Forms


  • Fix: obtaining the latest GitHub 30 release versions often get (HTTP) 403 errors.
    Add a GitHub personal access token in the Settings, to get a higher rate limit.


  • Fix: Forms should be accessible when user belongs to both groups: User: Assigned forms and User: All forms
    Group User: All forms takes precedence over User: Assigned forms.


  • Translatable (multilingual) public Forms, with language-switcher buttons.
    This addresses:
  • Translatable (multilingual) Form Builder, with language-switcher buttons.


  • New feature: specify Form Builder Javascript options API/argument.
    Form Builder JavaScript options can be specified in the form-view (tab) and shall be stored in formio.builder record.
    Default (global) JavasScript options can be specified in the Forms Settings, which are by default loaded while creating a Form Builder.
    For example, the Form Builder editForm File component options: https://github.com/formio/formio.js/tree/master/src/components/file/editForm


  • Fix Form Builder save (JavaScript event handler).
    Use the event handler its argument (schema/components) instead of self.schema (scary change/bug)
    Issue report: https://github.com/novacode-nl/odoo-formio/issues/66


  • Implemented Form Builder copy() method, which previously was blocked / not possible. This due to unique contraint validation on fields name and version.
    Upon copy, the new Form Builder its name (field value) shall be suffixed with a datetime-stampp.


  • 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 Components API 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 "Forms 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.
Super versatile module and great support
Jaime Jiménez Titos
on 2/4/21, 7:10 PM

We've used this module mainly for portal users and it's been exactly what we were looking for. It's a professional tool full of features. Bob, the person behind this projects offered us great support and was willing to help and improve the module.

100% recommended.

Amazing and thanks!
F Lugel
on 12/15/20, 11:57 AM

Thanks Nova Code, for this amazing Forms app and all the extra modules!

It has everything we need for stunning web forms functionality and experience, all integrated in Odoo.

Keep up the good work!

Great job
on 12/10/20, 6:52 PM

Very good module, easy to use, hope more people's attention.

Great Addonn
Doğan Üstündağ
on 12/9/20, 4:02 PM

Very Good Addon and useful for engineering calculations and for many applications.

Good Support and progressive developments.


on 2/14/21, 12:28 AM


what if i will upgrade Odoo from 14 to next up level version? will I have all my previously created Settings, Forms etc. or I have to create a backup and then restore before upgrading? if have to create backup and restore then please inform about How To's.


Bob Leers
on 2/14/21, 1:46 AM Author


Yes, after upgrading - all previously created Froms, Builders and settings etc. remain in the database.

As with all modules, if you don't uninstall modules, all data created by those modules will remain in the database.

It's by any means easy to (CSV) export the Form Builders, Forms etc. and import afterwards.

I hope this info clarifies.



Amazing and thanks!
F Lugel
on 12/15/20, 11:57 AM

Thanks Nova Code, for this amazing Forms application and all the extra modules!

It has everything we need for stunning web forms functionality and experience, all integrated in Odoo.

Keep up the good work!