Formifier

The Formifier extension turns selected spreadsheet columns into a public form whose submissions go directly into the spreadsheet. A modal lets users choose the form's columns, configure it and get a sharing link or embed code.

Formifier

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

A live preview of the form with the current settings.

Sharing Tab

Generates a direct link and an embed code for 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 worksheet's form endpoint:

<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 document routes of the Server API extension.

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 becomes an insertRow operation that goes through the same pipeline as any client edit: applied to the live document, persisted through your adapter and broadcast to connected users in real time.

Authentication

Public forms and private spreadsheets

The form routes skip the beforeConnect, beforeLoad and beforeChange hooks, so a public form works even when the spreadsheet is private. Access is granted by the document 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

Only values for the columns declared in 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 validation against spam and misuse, especially when the form is embedded on public pages.

Write access controls

Validate what gets inserted into the spreadsheet and set its privacy appropriately.