Forms

Design forms once, embed them anywhere. Submissions land in your dashboard with file uploads, search, and CSV export.

Overview

The Forms service gives you:

Build a form

  1. Forms → New form. Start blank, or pick Use a template for a ready-made contact form, feedback survey, event sign-up, job application and more.
  2. Add questions. Click a question type in the library on the left, or drag it onto the page. Click any question to edit its label, help text, options and checks in the panel on the right.
  3. Add pages for long forms. Drag questions between pages, and give each page a title.
  4. Watch the save status in the top bar. All changes saved means your draft is stored. If you lose your connection it says Offline, will retry and saves when you are back.
  5. Preview shows the form as a visitor sees it, on desktop, tablet or phone, with your rules working.
  6. Save & publish makes it live the first time. After that the button reads Publish changes with the number of changes waiting.
Use the tabs at the top of the builder: Build for questions, Logic for rules, Design for colours and layout, Settings for limits, spam protection and notifications, Connect for hand-offs and Share for the link and embed code.

Rules and pages

Open the Logic tab and click Add rule. Each rule reads If (all or any of these answers match) then do this. For example:

Hidden questions are never required and their answers are not saved. Skips only move forward, so nobody gets stuck in a loop.

Build forms by asking

You can also describe the form you want and let the AI build it. The same request works in two places:

Then keep going in plain words:

Things to know:

Publish

Only published forms accept responses. While you edit, visitors keep seeing the last published version; press Publish changes when you are ready. You can unpublish or archive a form from the ⋮ menu. Publishing needs the Publish, unpublish and share forms permission.

Don't change the web address (slug) after publishing - every embedded <script> tag on customer sites references it. Renaming breaks live embeds. The share link does not use the slug, so it keeps working.
Replies come from your own address. Any confirmation email a form sends to the person who filled it in goes from your workspace's own sending address, never from SoftSolz. Until one is set up at Marketplace → Email sending, submissions still arrive but no reply is sent. See Email sending.

Open the Share tab and switch on Share link. Copy the link, or download the QR code for posters and printouts. Anyone with the link can fill the form in; they do not need an account and you do not need a website.

On the Settings tab you can protect the form from spam and repeat answers:

SettingWhat it does
One response per browserStops the same browser answering twice. Someone can get round it by clearing their browser, so treat it as a polite limit.
Responses per network per dayLimits answers from one internet connection. Offices, schools and mobile networks often share one connection, so do not set this too low.
Allowed networksOnly people on the networks you list can open and fill the form, for example your office.
Close date and response limitCloses the form on a date or after a number of responses, and shows your closed message.
Daily limitStops accepting responses after a number per day.
Minimum time to fillQuietly ignores answers sent faster than a person could type them. A hidden trap field also catches simple bots.

Embed on your site

Open the Share tab and click Get the embed code, or go to Forms → Developer and pick the form. Colours, fonts and layout are set on the builder's Design tab and apply everywhere the form appears.

  1. Create a widget key. Under Public widget keys, enter the website address you'll embed on as the Allowed origin (e.g. https://example.com, no path at the end) and click Generate key. Copy the key from the Save this key now window - it is only shown once.
  2. Copy the snippet and drop it into any HTML page.
<script src="https://app.softsolz.uk/softsolz.js"
  data-public-key="pk_live_…"
  data-service-id="forms"
  data-form-slug="contact-us"></script>

The script shows your form in a frame that resizes itself. Multi-page forms, rules and payment or booking steps all work inside the embed.

Connect to other services

The Connect tab sends each response on to the SoftSolz service that handles it, so you never copy data by hand:

If a hand-off fails, the response shows it with a Retry button.

View responses

Open a form's results (Forms → Submissions, then the form, or Results on the Forms list). Four tabs:

Open a response to see all answers, assign it to a teammate, add notes for your team, and see where the person came from. Answers to questions you later removed are kept under Other answers.

Under Settings → Privacy you can choose to delete responses automatically after a number of days.

Files library

Every file uploaded through a form is kept with that form. Open the form's results and choose the Files tab. Search by file name or filter by file type. Click a file to preview it, or use its download icon.

Dashboard

When Forms is installed, the main Dashboard adds tiles for total forms, submissions and unread count, plus a 7-day submissions trend chart and a "Recent submissions" card.

Use the API

Two integration paths:

PathAuthWhen to use
Widget - the embedded form (the snippet above) pk_… public key (browser) Visitors submit from your site via the embedded widget.
Server - POST https://app.softsolz.uk/api/v1/services/forms/forms/<slug>/submit sk_… secret key (server) with the Submit form responses scope Your backend creates submissions (CRM sync, automation, etc.).

Send the answers as JSON, keyed by each field's id (shown in the field's Field id box and made from its label, so "Full name" becomes full_name), inside a data object, for example {"data": {"full_name": "Jane Doe", "email": "jane@example.com"}}. The form must be published. File fields need a multipart/form-data request with one file part per field id.

Full reference: Submit a response to a form and the Forms developer guide.

Test it step by step

Follow these steps once from start to finish to prove Forms works for your workspace.

  1. Get access. You need the Super Admin or Admin role, or a custom role that includes the Forms permissions (Members & access → Roles).
  2. Pick where to test. To try things without touching live data, open the workspace menu and choose Switch to Sandbox mode. The sandbox has its own forms, keys and submissions.
  3. Install Forms. Open Marketplace, find Forms and click Install. Forms now appears in the sidebar.
  4. Build a test form. Go to Forms → New Form, name it "Test contact", and add three fields: Short text "Full name" (required), Email "Email" (required) and Long text "Message". Click Save & publish. The Form published window appears, and the form shows as published on the Forms list. Note its slug from the Slug box (for example test-contact).
  5. Make a key for the Widget Tester. Click Open Developer (or go to Forms → Developer and pick the form), open Embed the widget, enter https://developer.softsolz.uk as the Allowed origin and click Generate key. Copy the key from the Save this key now window.
  6. Try the form in the Widget Tester. Open developer.softsolz.uk/widget-tester and choose Forms. In the Embed snippet box, replace pk_live_REPLACE_WITH_YOUR_KEY with your key and REPLACE_WITH_FORM_SLUG with your form's slug, then click Load widget. Your form appears on the example page. Fill it in and submit: your success message shows.
  7. Check it arrived. Back in SoftSolz, open Forms → Submissions. Your form's card shows 1 submission and 1 unread, and the bell shows a New form submission notification. Click the card, then the row, to see the answers.
  8. Put it on your own site. On the same Developer page, generate a second key with your own website address as the allowed origin (for example https://www.example.com - www and no www count as different addresses). Copy the snippet from the Snippet for "Test contact" card, paste it into a page on your site, publish the page and submit the form once. The new entry appears under Forms → Submissions.
  9. Tidy up. Delete the test submissions or the test form when you are done, and revoke any key you no longer need. If you tested in the sandbox, switch back with Switch to Live mode and build the real form and key there: sandbox forms, keys and entries never carry over to live.

For developers

In the sandbox, open Forms → Developer → Use the API, click New API key and tick Submit form responses. Sandbox keys start with sk_test_. Then send a submission from your server:

curl -X POST https://app.softsolz.uk/api/v1/services/forms/forms/test-contact/submit \
  -H "Authorization: Bearer sk_test_your_key" \
  -H "Content-Type: application/json" \
  -d '{"data":{"full_name":"Jane Doe","email":"jane@example.com","message":"Testing the form"}}'

A 201 reply with the new submission's id means it worked. The entry shows under Forms → Submissions with the source Server API. See the API Reference for every option.

If something goes wrong

You seeWhat it means
Invalid embed key or origin not allowed. (inside the widget) The page address is not on the key's allowed origins, or the key was revoked. Generate a key for the exact address the page runs on, starting https:// with no path.
Form not found or not published. (widget) or 404 not_found "Form not found." (API) The form is still a draft or paused, or the slug is wrong. Publish it and check the slug on the Forms list. Sandbox and live are separate: a sk_test_ key only finds forms made in the sandbox.
400 "Submission failed validation." A required field is missing or a value is the wrong type. The reply lists each field and what is wrong. Field ids must match the form's field ids exactly.
401 api_key_invalid, 401 api_key_revoked or 403 missing_scope The key is mistyped or revoked, or it does not have the Submit form responses scope. Create a new key with that scope ticked.

Common changes & risks