Formifier

The Formifier extension allows users to collect data directly into online spreadsheets. Through a modal interface, users can select which spreadsheet columns should appear in the public form, generate a sharing link or embed code, and manage configuration options.

Formifier

Documentation

Formifier converts selected spreadsheet columns into form fields, enabling external users to input data directly into a spreadsheet.

Frontend

Config Tab

Property Description
Visible Columns Specifies which spreadsheet columns should be included in the public form.
Instructions Text instructions at the top of the form, providing context or guidelines for end-users.
Thank you message Upon successful form submission, a confirmation message will be displayed.
Limit Sets a local restriction to prevent multiple submissions from the same device. You can manage this limit through the developer tools.

Preview Tab

This tab gives a live preview of the form based on current settings.

Sharing Tab

The Sharing tab generates both a direct link and an embed code for use on external websites.

Embed code example

The direct link serves this page itself; the embed snippet loads the form renderer from a CDN and points it at the form endpoint of the worksheet:

<div id="formify"></div>
<script src="https://cdn.jsdelivr.net/npm/@jspreadsheet/formify@3/dist/index.min.js"></script>
<script>
formify(document.getElementById('formify'), {
    url: 'https://your-server.example.com/api/2043e788-aad6-13e2-e2d4-89f1a9c72687/0/formify'
});
</script>

Server endpoints

The form endpoints are part of the Server API extension, registered under the document routes:

Routes

Route Description
GET /api/<guid>/<worksheetIndex>/formify The standalone form page (the embed snippet above, rendered as HTML).
GET /api/<guid>/<worksheetIndex>/formify/config JSON used by the form renderer: the worksheet's formify settings plus the column definitions of the visible columns.
POST /api/<guid>/<worksheetIndex>/formify A form submission. The data body field carries the values keyed by column index (e.g. data[0], data[2]).

How submissions are applied

A submission is pushed through the same pipeline as any client edit: an insertRow operation applied to the live document, persisted through your adapter and broadcast to connected users, so new entries appear in open spreadsheets in real time.

Authentication

Public forms and private spreadsheets

The form routes are self-authorized: they skip the beforeConnect, beforeLoad and beforeChange hooks, so a public form keeps working even when the spreadsheet itself is private. Access is granted by the document configuration instead: the routes only respond when the target worksheet declares a formify configuration in its options, and return 403 Forbidden otherwise. Removing the configuration disables the form.

What a submission can write

Submissions cannot write arbitrary data: only values for the columns declared in the form's formify.columns are kept; any other fields in the request body are discarded before the row is inserted.

Security Considerations

Rate limiting and validation

Add rate limiting or validations to prevent spam submissions or misuse, especially if the form is embedded on public pages.

Write access controls

Do not leave write access open without controls. Validate what gets inserted into the spreadsheet and set spreadsheet privacy appropriately.