Theo Forms

Theo Forms is a form that lives at its own public web address. Anyone you send the link to can answer it — no OpenCharts account, no sign-in, nothing to install — and every response lands in one place you can read, filter, export and hand to an agent. Surveys, contact forms, intake, registrations, job applications, order requests, bug reports. It takes payments, it takes signatures, it takes file attachments, and you can describe the whole thing to Theo — or upload the paper form you use today — instead of building it.

The fastest way to startOpen Theo Forms from the sidebar (under Tools) and describe what you need in a sentence, or attach the PDF of the form you already use. Theo builds the questions, the logic and the emails, you adjust anything you like, and Publish gives you the link. Nothing is public until you publish.

Ways to make a form

Describe it to Theo

Say what you need in a sentence — “a job application for a line cook, with a CV upload” — and Theo builds the whole thing: the questions, the right field type for each one, which are required, the conditional logic that shows a question only to the people it applies to, the thank-you message, and the two emails it sends (a confirmation to whoever answered, and a notification to you). It lands in the editor, where you change anything you like before it goes anywhere.

Upload the form you already use

Attach the PDF, Word file or photo of a form you fill in on paper today, and Theo reads the questions off it and rebuilds them as a real one — the same questions, in the same order, with the options it lists. It leaves out the parts a web form does not need: page numbers, signature lines, hand-writing instructions, the “for office use” box. Add a note if you want anything changed. We read the file and throw it away.

Put your brand on it

Three ways, in the composer itself. Pick one of the brand kits you already set up — the same ones your designs, presentations and ads use. Or give Theo your website address and he reads your colours, your type and your logo off it and SAVES that as a new brand, so every design, deck and ad you make after this starts from it too. Or just upload a logo. You can change any of it on the Design tab afterwards.

Start from a template

Seven starters across four groups: Contact us and Lead qualification, Customer feedback and Bug report, Event RSVP, and Order request and Job application. Each opens as a working form with its questions, its logic and its calculations already wired.

Build it by hand

Press the + between questions to pick a field (Contact, Text, Choice, Numbers & scales, Date & time, Layout, Advanced — or a ready-made block like a contact section or an NPS question). Each question opens in place to edit its label, help text, whether it is required, and the rules specific to its type; drag the grip to reorder. The stage beside the column runs the real form as you build it, on a desktop frame and a phone at once.

What you can ask for

Contact

Name (two boxes), Email (validated), Phone, and Address with street, city, region, postal code and country.

Text

Short text for a single line, Long text for a paragraph or more.

Choice

Dropdown, Single choice, Multiple choice, and a plain Yes / No.

Numbers & scales

Number with optional bounds, a star Rating, and a numbered Scale with a caption at each end (the NPS shape).

Date & time

A calendar date and a time of day.

Layout

Headings and dividers. They organise the page and collect no answer.

Advanced

File upload, Hidden value (records a campaign or source tag nobody sees), Calculation, Signature, Payment and Booking.

A form can run to 20 pages and 300 questions in total. A short answer accepts up to 5,000 characters and a long one up to 20,000.

How it looks

Three layouts pace the same questions. One at a time is a full-screen, keyboard-first form — letters pick options, Enter continues, and people finish it. Steps is a wizard cut at your headings. Classic puts every question on one card. Switching layout never touches your questions.

Type starts with two built-in pairings, and the Design tab opens onto the whole Google Fonts library: choose a curated heading-and-body pairing, shown in its own face, or pick any heading font and body font yourself and set the heading weight. The form loads the faces on the public page and in the embed, so what you see in the builder is what a respondent sees.

Brand is your logo, a cover image, one accent colour, a background (paper, white, a tint, a gradient, or ink) and a corner style. The accent is also what your emails wear.

Your mark comes in four sizes. Pick one and you see it drawn at that size next to the title, so you are choosing how it looks rather than guessing at a number. A wide wordmark grows with each step, not just a tall one.

The live stage shows the real form — you can click through it, answer it, and watch your logic fire — on a desktop browser frame and a phone side by side whenever the window has room, so a layout that looks right on a laptop and wrong on a phone is caught before anyone is sent the link.

Drafts, publishing, and the link

A form has two copies: the draft you are editing and the published copy respondents are served. That split is the point. You can rewrite a question on a live form at 2pm and nobody halfway through answering it has the questions change underneath them — they finish the version they started. Your edits go live when you press Publish again.

Publishing gives you the address: /form/your-slug. You choose the slug, and it is a public address rather than a secret — it is meant to be shared. From the share panel you can copy the link, download a QR code for print or a slide, or copy an embed snippet that drops the form into any website as an iframe that resizes itself to fit.

You control when it stops: close it by hand, close it on a date, or cap it at a number of responses. Each of those shows the respondent a plain message saying so. An unpublished, deleted or non-existent form is simply not found — there is no page that confirms a form exists but is unavailable to you.

Logic and calculations

Conditional logic shows or hides questions based on earlier answers, so one form serves several kinds of respondent without asking everyone everything. Rules chain: a question revealed by one answer can itself reveal the next. A question that ends up hidden is never validated and its answer is never recorded — you will not be asked to fill in something you cannot see, and you will never read an answer to a question nobody was shown.

Calculations add a read-only field worked out from the other answers — a price, a subtotal, a quiz score, a sum of line items. It updates live as the respondent types, and it is recomputed on our side from the answers they actually gave, so the number you receive is one nobody could have edited on the way.

Attachments, signatures, payments and bookings

File upload takes up to 10 files per question at up to 4 MB each, and you choose which types you will accept. Attachments are private: they are stored with no public access at all, and only you, signed in, can open them from the response.

Signature lets someone sign with a finger or a mouse, right in the form. It is a field on a form, not a document sent out for countersigning — for a multi-party agreement with an audit trail, use Documents.

Payment charges a fixed price or an amount your calculation worked out. Connect your own Stripe account and the money goes to you: OpenCharts takes no cut and never holds it. The answers are saved before the respondent is sent to checkout, so a payment can never exist without the response behind it, and we confirm the payment with Stripe directly rather than trusting anything the browser comes back carrying. If you would rather use a checkout you already run somewhere else, you can link to it instead — in that case the response is marked as unconfirmed rather than paid, because nothing tells us how it went.

Booking puts a “book a time” button on the thank-you screen, pointing at whatever scheduling page you use. It runs after the response is safely recorded rather than instead of it, so someone who never books still counts as having answered.

Save and finish later gives a respondent a private link back to their half-filled answers, good for 30 days. A saved draft is not a response: it does not count toward your cap, and it sends no notifications.

Reading what comes in

Every submission lands on the form's Responses tab as a row you can open in full. Export the lot as CSV, or download any single response as a tidy PDF — useful when a response is an application or an order that has to be filed or forwarded.

Mirror to a spreadsheet and each new response also appends a row to a Theo Sheet, where you can pivot, chart and share it like any other spreadsheet. The form's own response list stays the record; the sheet is a live copy.

Email is its own tab — see the next section. The short version: a note to you when someone answers, a confirmation to them, and follow-ups later, all designed to match your form.

The emails a form sends

The Emails tab holds three kinds of message, each with its own switch. A confirmation goes to the person who answered, right away, to the email address they gave. A new response note goes to you (or a list of addresses) with their answers and a link to the responses. And up to three follow-ups go to the respondent hours or days later — a thank-you with next steps, a nudge, a check-in — each optionally only when their answers meet a condition, so a “Yes, call me” can get a different follow-up from a “No thanks”.

Every message is built from blocks — a heading, paragraphs, their answers, a button, an image, your signature — and you can drop in the respondent's name, any answer by its question, or the form's title. The whole set shares one design: what sits at the top (your logo, your cover, or nothing), a footer line, a signature and a reply-to address. Colours and type come from the Design tab, so the email looks like the form it came from. The stage shows each message as it will land, on a desktop inbox and a phone, and Send me a test mails it to your own account address with sample answers filled in.

Write it with Theo drafts any message for you. Tell Theo the tone or the one thing it must say (or nothing at all), and it writes the subject and the blocks from what your form asks; you edit anything after.

Already have an email you like? Switch any message to My HTML and paste it in, or upload the .html file — an export from your old mail tool, a designer's file, anything. We send your document as it is. Drop in {{answers}} where their answers should appear, or {{unsubscribe_url}} to put the opt-out link exactly where you want it. If you don't, we add the opt-out underneath for you. Scripts, tracking pixels and anything else email apps block are removed when you save, and we tell you what went. Switching to HTML keeps your designed version, so you can always switch back.

Follow-ups are mail sent to someone days after they filled in a form, so every one carries a one-click way to stop the rest, honoured immediately. Switching a follow-up off, rewriting it, or closing the form takes effect for anything not yet sent. Nothing is sent until you switch a message on.

Make a submission do something

A completed response fires a form.submitted event, which any Theo Agent can be triggered by. That is how a form stops being an inbox and starts being the front of a process: route a lead to the right person, open a ticket from a bug report, draft the reply, post it to Slack, add it to a board, or have Theo read the answers and summarise them before you ever look.

The form's Automate tab is where that lives. It lists the agents already running on this form, offers starters wired to it in one click — triage a response, hold it for your approval, post it to Slack, ping you on Telegram, reply personally in Theo's words, turn it into a card on a board — and has an Ask Theo box where you describe what should happen and Theo designs the agent, already pointed at this form.

On a site you built with Theo

If you build a site or app in Code Canvas, you don't have to copy an embed snippet. Open Apps → Theo Forms in the editor, pick one of your published forms, and choose how it appears: sitting in the page, or as a floating button in a corner that opens it over your site. You can limit it to particular pages.

For an in-page form, ask Theo to put <div data-theo-form></div> where you want it — that is the whole setup, and the form resizes itself as people answer. Everything the form already does keeps working: its logic, its payments, its emails, its follow-ups and its agents. Answers land in that form's own Responses tab, exactly as if someone had opened its link directly.

It shows up in your preview straight away; publish the site again to put it on the live version. Edits to the form itself are made in Theo Forms, and take effect everywhere at once.

About the responses you collectA published form is open to anyone with the link, so treat it like any other public intake: ask for what you need and no more, and remember that anything you request — including uploads and signatures — becomes data you are now responsible for. Answers are validated on our servers as well as in the browser, and every form carries rate limits and a spam trap you do not have to configure.

Related Articles

Was this article helpful?