Skip to main content

Fillo vs Tally

How Tally and Fillo differ on where the form renders, styling, uploads, and plan limits, and how to move a Tally form to Fillo.

Tally is a hosted form builder whose free plan includes unlimited forms and submissions within its fair-use guidelines, shared as a link or embedded. Fillo renders forms as native components inside your app and handles validation, uploads, and responses behind them.

At a glance

TallyFillo
Where it rendersTally page, or a standard, popup, or full-page embed. The standard embed renders the form inside an <iframe> (Tally widgets)Native React or DOM components on your own route, or a Fillo-hosted page
StylingTally's editor. Injecting custom CSS is a Pro featureYour CSS and components. The default stylesheet is optional
Form definitionTally editorFillo editor, or a typed defineForm() schema in your repo
File uploads10 MB per file on Free. Pro removes the limit500 MB per file by default, configurable up to 5,000 MB, sent from the browser to your Google Drive, Box, S3, or R2
Unfinished answersPartial submissions are a Pro featureSave and resume on every plan. Only completed responses count toward the limit
Payments, calculationsBoth on FreeNumeric calculated fields. No payment field
PricingFree with unlimited forms and submissions within fair use. Pro and Business are paid plans (pricing)Free includes 200 completed responses a month. Everything starts at €35 or $39 a month for 5,000, with 25,000 and 100,000 tiers. Going over the allowance never stops a form or adds a charge
Branding and domainsPro removes Tally branding and adds custom domainsThe default renderer shows a Powered by Fillo badge on Free, and Everything can turn it off. Forms render on your own domain when you embed them
IntegrationsWebhooks, Google Sheets, Notion, Airtable, Zapier, and Make on FreeSigned webhooks, a Management API, native Slack, Notion, Google Sheets, HubSpot, and Discord destinations, plus Zapier and n8n apps

When Fillo fits

  • The form has to render as native controls inside an existing product route.
  • Your component system should own layout, focus behavior, and field rendering.
  • The form definition lives in your repo and goes through code review.
  • Respondents send files over 10 MB, and the files belong in your own storage.
  • Each response should carry your app's user ID, verified by your server.

When Tally is enough

  • You collect payments inside the form. Fillo has no payment field.
  • The form builds text from answers, such as a status label (Tally calculations). Fillo's calculated fields produce numbers only.

Moving from Tally

Fillo doesn't import Tally forms or submissions, so a move is a rebuild. Numeric calculations carry over as calculated fields.

  1. Download submissions as CSV from the form's Submissions tab, and keep old uploads with them.
  2. Map each Tally block to a stable Fillo field ID with the table below.
  3. Rebuild the form in the editor or as a defineForm() schema.
  4. Connect storage and reconnect Sheets, Notion, Slack, Zapier, and webhooks.
  5. Send realistic test responses and confirm each destination received them.
  6. Replace one link or embed first, then close the Tally form to new submissions.
Tally blockFillo fieldCheck
Short or long answershort_text or long_textRequired state and length
Choice questionsselect, multi_select, or dropdownStable option IDs and Other
Pages and conditional logicFillo pages, visibleIf, and page next rulesEvery path and early end
Hidden fieldhidden, URL prefill, or initialDataParameter names, and whether the value is trusted
File uploadfile_uploadConnected storage, file count, types, and size
Numeric calculationcalculatedSame inputs and rounding
PaymentYour app or a payment providerPayment status and return route

Keep the old link or embed ready to restore until the Fillo form has handled real traffic. Don't collect in both tools longer than that, or the record splits in two.

This page for agents: /docs/compare/tally.md · index at /llms.txt

Updated

Was this page helpful?