> ## Content Index
> Fetch the complete content index at: https://notionsolutions.net/llms.txt
> Use this file to discover other available public pages before exploring further.

# Connect a Form to a Notion Database: Tally, Typeform, Google Forms, CF7 and the API
- URL: https://notionsolutions.net/notion-connect-form-to-database/
- Published: 2026-10-30T10:17:39.000Z
- Updated: 2026-11-02T15:38:05.000Z
- Description: Send every form response to a Notion database as a new row. Compare Tally, Typeform, Google Forms through Zapier, Make or FormtoNotion, Contact Form 7 and the Notion API by the property types they fill and their free limits, then set up the database, map the fields and fix sync failures.
- Author: Kevin Turner
- Tags: guide, Notion task workflows

**To connect a form to Notion, point a form tool at a Notion database whose properties already match your questions, and each response arrives as a new row. Tally and Typeform connect directly, Google Forms and Jotform go through Zapier or Make, Contact Form 7 uses a free WordPress add-on, and a form on your own site can [write rows through the Notion API](https://notionsolutions.net/notion-api-create-page/).** If every response must link to an existing client or project, I'd use Notion's own form instead, because no connector mapping list below includes Relation.

For a free standalone form, I'd start with Tally. For a Google Form that's already collecting answers, use Zapier's two-step template, and for a contact form on a WordPress site, use the Contact Form 7 add-on. Whatever you pick, keep it to one hop between the form and Notion where you can. Every service in the middle is another login and another monthly quota, and its access token can expire.

## Set up the database before the form

Every connector on this page writes into a database that already exists, and most of the problems in the troubleshooting table further down start here. Five checks come first:

1. **One property per question, with the matching type.** An email answer needs an Email property, a choice question needs a Select or Multi-select, and an upload needs Files & media. Tally maps one form field to one property, so two questions can't share a column. If a choice question tracks progress, Tally can also map it to a Status property; the difference is covered in [Notion Status vs Select](https://notionsolutions.net/notion-status-vs-select-project-tracking/).
2. **Give the database a title.** Tally's database dropdown doesn't display databases without titles.
3. **Decide what fills the Title property.** The first property of every Notion database is the Title. A name question is the usual choice. Notion's API reference notes that an empty title displays as an untitled page, which makes a list of new responses hard to scan.
4. **Create the select options before you map.** Typeform only matches a choice to a Select option when both are spelled the same, including spaces and capital letters.
5. **Add the tool's connection to the database page.** In Notion, open ••• at the top right of the page, then More, and choose Add connections in the Connections group, as described in [Notion's guide to adding connections](https://www.notion.com/help/add-and-manage-connections-with-the-api?ref=notionsolutions.net). Tools that sign in through OAuth ask you to Select pages and then Allow access instead. Connections are workspace-specific, so check the workspace name before you approve.

The form tool handles collection. You still decide which property each answer lands in and which answers you'll tidy by hand, and that decision is cheaper to make in the database than after the responses pile up.

## Pick the route for the form you already use

Each row below uses the cost or limit that the tool's own pages state, plus the gap you're most likely to hit.

__Ways to send form responses to a Notion database__
| Route          | How it connects                              | Cost or limit stated                                                       | Needs care                                                                                     | Best for                                             |
| -------------- | -------------------------------------------- | -------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------- |
| Notion form    | Built into the database                      | All members on all plans; conditional logic on Business and Enterprise     | Created and edited in the desktop and web apps only                                            | Intake that has to link to clients or teammates      |
| Tally          | Native integration                           | Free, unlimited submissions                                                | No Person or Relation; submission times arrive in UTC                                          | A free standalone form                               |
| Typeform       | Native, from the Connect panel               | Free plan: 10 responses a month                                            | Table databases only; no Date or Relation in its mapping list; not for EU Data Center accounts | Conversational forms on an existing Typeform account |
| Google Forms   | Zapier, Make or the FormtoNotion add-on      | Zapier Free: 100 tasks a month; FormtoNotion: $5 a month (vendor's figure) | Zapier mainly creates new pages; updating existing ones takes extra steps                      | Forms that already live in Google                    |
| Jotform        | Zapier's Notion integration                  | Zapier's plan limits apply                                                 | One more account in the chain                                                                  | Jotform's template library                           |
| forms.app      | Connection listed in Notion's gallery        | Not stated in the listing                                                  | Third-party connection that Notion doesn't maintain                                            | Existing forms.app users                             |
| Contact Form 7 | Free WordPress add-on with an internal token | Free                                                                       | Nine supported column types; no Status, Checkbox, Person or Relation                           | A contact form on a WordPress site                   |
| Your own site  | Notion API, one POST per response            | Your own code and hosting                                                  | You write the mapping and keep the token on the server                                         | A developer-built form                               |

[![Diagram of three lanes, native connector, automation tool through Zapier or Make, and plugin or code, all ending in one Notion table with Name, Email, Service and Message columns](https://storage.ghost.io/c/5c/30/5c30c46b-86a3-4d20-984f-4f6ae8ad1ed2/content/images/2026/10/notion-connect-form-to-database-routes.webp)](https://storage.ghost.io/c/5c/30/5c30c46b-86a3-4d20-984f-4f6ae8ad1ed2/content/images/2026/10/notion-connect-form-to-database-routes.webp?ref=notionsolutions.net)

Every route ends in the same database; the routes differ in how many services sit between the form and the row.

When two routes fit, take the one with fewer accounts between the form and the database. A direct connector fails in one place you can inspect, while a chain through Zapier or Make adds a second account to check and a second quota that can pause the flow.

## Field coverage and free limits, side by side

The connectors differ most in which Notion property types they can fill, and that matters more than price once your database grows past a name and an email. The table below lines up four published mapping lists across 14 common property types: [Tally's Notion integration guide](https://tally.so/help/notion-integration?ref=notionsolutions.net), [Typeform's Notion setup article](https://help.typeform.com/hc/en-us/articles/360061400731-Integrate-your-form-with-Notion?ref=notionsolutions.net), the [Contact Form 7 add-on's plugin page](https://wordpress.org/plugins/add-on-cf7-for-notion/?ref=notionsolutions.net) and [Notion's page property reference](https://developers.notion.com/reference/page-property-values?ref=notionsolutions.net) for the API. It shows documented support, not how reliably a sync runs. "Not listed" means the vendor's list leaves that type out.

__Documented field coverage by connector (4 published mapping lists)__
| Notion property | Tally                                                             | Typeform                                                                                                | Contact Form 7 add-on                                               | Notion API                            |
| --------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------- |
| Title           | Short answer, Long answer, Submission ID or Respondent ID         | Short Text, Long Text or Phone Number                                                                   | Listed                                                              | title                                 |
| Text            | Short answer, Long answer, Time                                   | Short Text, Long Text, Email, Website, Phone Number, Yes/No, Legal, number-type questions, Hidden Field | Listed                                                              | rich\_text                            |
| Number          | Number, Payment, Rating, Linear scale                             | Short Text, Number, Opinion Scale, Rating, Hidden Field                                                 | Listed                                                              | number                                |
| Select          | Multiple choice, Dropdown, Matrix                                 | Multiple Choice, Picture Choice, Dropdown, Yes/No, Legal, Hidden Field                                  | Listed                                                              | select                                |
| Multi-select    | Checkboxes, Ranking, Multi-select, Matrix with multiple selection | The same questions as Select                                                                            | Listed                                                              | multi\_select                         |
| Status          | Multiple choice or Dropdown                                       | Not listed                                                                                              | Not listed                                                          | status                                |
| Date            | Date                                                              | Not listed                                                                                              | Listed                                                              | date, with an optional time zone      |
| Email           | Email                                                             | Email                                                                                                   | Listed                                                              | email                                 |
| Phone           | Phone                                                             | Phone Number, Number, Opinion Scale, Rating                                                             | Listed                                                              | phone\_number                         |
| URL             | Link, Submission PDF, Submission preview                          | Website                                                                                                 | Listed                                                              | url                                   |
| Checkbox        | One checkbox option per property                                  | Yes/No, Legal, Hidden Field                                                                             | Not listed                                                          | checkbox                              |
| Files & media   | File upload, Signature                                            | File Upload                                                                                             | Not listed; uploaded file URLs are sent when file fields are mapped | files, by external URL or file upload |
| Person / People | Not supported natively                                            | Email question or Variable to Person; Hidden Field to People                                            | Not listed                                                          | people, by user ID                    |
| Relation        | Not supported natively                                            | Not listed                                                                                              | Not listed                                                          | relation, by page ID                  |

Composite result: the three no-code connectors document 9 to 12 of the 14 types, with a median of 11 (Contact Form 7 add-on 9, Typeform 11, Tally 12). The API covers all 14 because you write each property yourself. Relation is missing from all three connector lists, and Person appears only in Typeform's. Notion's own form isn't in the table because its help describes question types by example rather than as a list, but it names relation and people questions directly.

Free allowances decide the other half of the choice. These are the figures each source states for its free tier or base price:

__Free allowance and first paid step by route__
| Route                              | Free allowance stated                                       | What it means per response                                   | First paid step stated                                                     |
| ---------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------ | -------------------------------------------------------------------------- |
| Tally to Notion                    | Integration free for all Tally users, unlimited submissions | No submission cap from Tally                                 | None needed for the integration                                            |
| Typeform to Notion                 | Free plan: 10 responses a month                             | 10 new rows a month                                          | A paid Typeform plan, also needed for File Upload and Signature questions  |
| Google Forms or Jotform via Zapier | Free: $0 a month, 100 tasks, two-step Zaps                  | About 100 responses a month when each response uses one task | Professional from $19.99 a month, with a 14-day trial and no card required |
| Google Forms via FormtoNotion      | None stated                                                 | Unlimited responses, per the vendor                          | $5 a month                                                                 |
| Contact Form 7 add-on              | Add-on is free                                              | No cap stated by the plugin                                  | None stated                                                                |

On free tiers, the strictest link in the chain sets the ceiling. A Typeform chain stops at 10 rows a month long before anything else matters. A Google Forms chain on [Zapier's Free plan](https://zapier.com/pricing?ref=notionsolutions.net) reaches about 100 responses a month, since triggers don't count toward the task limit and a two-step Zap spends one task on the Notion action; Zapier adds that some actions use more than one task. With pay-per-task billing off, Zaps pause at that limit until the next usage period starts. Zapier's Free and Professional plans are for one user.

## Notion's own form: no connector at all

Notion's form is the baseline the other routes are measured against. According to [Notion's forms help](https://www.notion.com/help/forms?ref=notionsolutions.net), all members on all Notion plans can create and use forms, each question is connected to a property in the database, and a form shared with anyone on the web can collect answers from people outside your workspace, including people who don't use Notion. You create and customize forms in the desktop and web apps only, and conditional logic needs a Business or Enterprise plan.

Its edge for client work is linking. Questions tied to multi-select, relation and people properties can cap how many selections a respondent makes, so a response can arrive already attached to a client or project. Sharing is the other boundary to check: on a form shared with anyone in your workspace, guests can only fill it in if they have access to the connected database, which the [guest vs member guide](https://notionsolutions.net/notion-guest-vs-member/) explains. Setup, sharing options and the follow-up workflow are covered in [Notion forms for client intake](https://notionsolutions.net/notion-forms-client-intake/), so this page stays with the outside tools.

## Connect Tally to a Notion database

Tally is the simplest free route here: its integration is native, needs no Zapier account and is free for all Tally users with unlimited submissions. Tally describes itself as an official Notion technology partner.

1. Publish the form, open the **Integrations** tab and press **Connect** next to Notion.
2. Click **Log in to Notion**, switch workspace at the top right if needed, press **Select pages**, tick the pages that hold your database and press **Allow access**.
3. Name the connection (the name is for Tally's own use), pick the Notion account and choose the database from the dropdown. Press refresh if it's missing.
4. Map each Tally field to a property, adding rows with **\+ Add property**. The Title property takes a Short answer, Long answer, Submission ID or Respondent ID.
5. If you want the answers in the page body too, type **@** in the page content block to insert them, or use **@All answers** to add every non-empty input, hidden and calculated field.
6. Switch on **Export existing responses** if earlier submissions should sync, and keep the browser tab open while they copy.
7. Click **Connect with Notion**.

### Map the fields

Short answers, long answers and times land in Text properties. Date, Email, Link and Phone fields go to Date, Email, URL and Phone. Multiple choice and dropdown questions go to Select or Status, and number-type fields such as rating or linear scale go to Number. Signatures and file uploads land in Files & media.

Checkbox questions give you a choice. Map the whole question to one Multi-select and the picks show as tags, or map each option to its own Checkbox property. I'd use Multi-select for anything you'll filter by later, since one column stays readable as the options grow, and keep separate checkboxes for a short fixed list.

Tally's native integration doesn't support Person or Relation properties yet, and its help points to a workaround through Make for both. I'd leave those columns unmapped instead of adding a second service, and fill them when you triage each response, the same way you'd link any record in a [client and project database built with relations](https://notionsolutions.net/notion-relations-and-rollups/).

[![Form questions on the left joined to matching Notion property types on the right, with Person and Relation shown as empty slots marked fill during triage](https://storage.ghost.io/c/5c/30/5c30c46b-86a3-4d20-984f-4f6ae8ad1ed2/content/images/2026/10/notion-connect-form-to-database-field-mapping.webp)](https://storage.ghost.io/c/5c/30/5c30c46b-86a3-4d20-984f-4f6ae8ad1ed2/content/images/2026/10/notion-connect-form-to-database-field-mapping.webp?ref=notionsolutions.net)

Map one question to one property of the matching type; Person and Relation wait for triage.

### Fix UTC submission times

Tally sends submission times to integrations in UTC. To show local time, add a Formula property with `dateAdd(prop("Date"), X, "hours")`, using the name of your Date property and your offset from UTC as X. For US Eastern standard time, which is UTC-5, that's:

```
dateAdd(prop("Date"), -5, "hours")
```

A fixed number doesn't follow daylight saving time, so during those months the Eastern result runs an hour early. Change X to -4 for that stretch or accept the hour. If the formula misbehaves on empty or text dates, the fixes are in [Notion formula date errors](https://notionsolutions.net/notion-formula-date-errors/).

When submissions stop syncing, open the event log with the clock icon next to the connection. Tally also emails you the first time a sync starts failing, with the reason and a link to fix it. One form can feed several databases: set up the integration once per database.

## Connect Typeform to Notion

Typeform's native integration fills a Notion database from each response, with three conditions to check before you build. It maps only to a Table database, so Board, List, Calendar, Gallery, Timeline and multiple-source databases aren't supported. Your Notion account needs admin access to install the Typeform bot. And the integration isn't available on Typeform accounts that host their data in the EU Data Center.

If you'd rather see responses on a board or calendar, keep the Table as Typeform's target and add those layouts as extra views, because [a view changes the presentation, not the records](https://notionsolutions.net/notion-database-views-for-client-work/).

Plan limits come next. [Typeform's Free plan](https://help.typeform.com/hc/en-us/articles/360032972852-Free-plan?ref=notionsolutions.net) allows 10 responses a month and keeps File Upload and Signature questions for paid plans. Its list of paid-only integrations doesn't include Notion, and the full list of available integrations sits in the Connect panel of any typeform, so confirm Notion there before you build on Free.

1. In the form's **Connect** panel, find Notion and click **Connect**.
2. Click **Authenticate** to connect your Typeform account, then **Accept**.
3. Click **Authenticate** for Notion, press **Select pages**, tick the pages the Typeform bot may use and click **Allow access**.
4. Select the database from the dropdown.
5. Map questions to properties with **+Add another**, then click **Save mapping**.

The integration then shows as live in the Connect panel, where a toggle switches it off and the three-dot menu edits or deletes it. Four catches are worth knowing before the first response:

- **Choice options must match exactly.** If a Multiple Choice answer reads "cheese pizza", the Select option in Notion must read "cheese pizza", not "cheese".
- **Dates and relations have no target.** Typeform's compatibility list includes no Date or Relation property. I'd collect a date as a short text answer mapped to a Text property and fill relations during triage.
- **Old responses don't backfill.** In a [Typeform community answer on syncing older responses](https://community.typeform.com/integrate-your-typeform-43/sync-older-typeform-responses-to-notion-10044?ref=notionsolutions.net), Typeform's community advocate wrote that the native integration has no option to fill in data from before setup, and suggested exporting to Google Sheets or a CSV file and moving the rows with Zapier's bulk transfer.
- **A 401 means a dead token.** "API token is invalid." in the Webhook panel means the Notion token expired or was deleted. Typeform can't recreate it, so delete the integration on the form and set it up again.

If step 4 says the databases couldn't be loaded, open the database page in Notion, click **Add connections**, search for Typeform and click **Confirm**.

## Send Google Forms responses to Notion

Google Forms reaches Notion through one of three routes, and the choice comes down to volume and how many accounts you want to maintain.

### Zapier

[Zapier's Google Forms and Notion page](https://zapier.com/apps/google-forms/integrations/notion?ref=notionsolutions.net) offers templates such as "Send new Google Forms responses to Notion databases", and you choose which question maps to which Notion field. Its FAQ says the integration primarily creates new pages, and that updating existing pages takes additional steps. If respondents can edit their answers, decide up front whether an edit should become a new row.

The Free plan costs $0 and includes 100 tasks a month with two-step Zaps, which covers a form with one Notion action per response. Professional starts at $19.99 a month and adds multi-step Zaps and webhooks. A new Zapier account starts with a 14-day Professional trial, no credit card required.

### Make

[Make's Notion app page](https://www.make.com/en/integrations/notion?ref=notionsolutions.net) labels the app verified, and [its Google Forms and Notion page](https://www.make.com/en/integrations/google-forms/notion?ref=notionsolutions.net) offers a template called "Create Notion database items from new Google Form responses". Its Notion actions include Create a Data Source Item. Make invites new users to sign up for a free account.

### FormtoNotion

[FormtoNotion](https://formtonotion.com/?ref=notionsolutions.net) is a Google Forms add-on. The vendor says it sends unlimited responses to a Notion table for $5 a month, with no sign-up beyond Google Forms and Notion. Those figures are the vendor's own.

I'd start with Zapier's two-step template, because it needs no code and the free plan covers a low-volume form. Move to Make or FormtoNotion only when the 100-task ceiling becomes the actual problem.

## Jotform, forms.app and other builders

[Jotform's Notion forms page](https://www.jotform.com/notion-forms/?ref=notionsolutions.net) tells you to connect the form through Zapier's Notion integration to send submissions into your databases, so the Zapier limits above apply. Jotform's own selling point there is a library of over 20,000 form templates.

forms.app takes a direct route. [Its listing in Notion's connections gallery](https://www.notion.com/connections/forms-app?ref=notionsolutions.net) sends forms.app responses to a Notion database and can read, insert and update content shared with the connection. The same gallery says that connections not designated Made by Notion aren't supported or maintained by Notion.

For any other builder, check two places in order: a native Notion connection in the builder's own integration list, then a Zapier or Make template. When a partner connection breaks, Notion's connections help says it doesn't troubleshoot partner connections and sends you to that partner's support team.

## Connect Contact Form 7 on WordPress

For a WordPress contact form, the free Add-On for Contact Form 7 to Notion on WordPress.org sends each submission to a database using an internal integration token, and it requires Contact Form 7 version 5.5.3 or later.

1. In Notion, create the database and every column first. The token comes from an internal connection, and Notion opens its connection tools from the developer section in the sidebar once Developer Mode is on. Add that connection to the database page with ••• → More → **Add connections**.
2. Copy the token: in **Settings → Connections**, open ••• next to the connection and choose **Retrieve an internal API token**.
3. In WordPress, install and activate the add-on, go to **Contact → Integration → Notion**, paste the Notion Internal integration token and click **Save Settings**.
4. Open your form. The plugin asks for at least an email field, and reminds you to include a consent field.
5. On the form's **Notion** tab, check **Add form submissions to your database**, choose the database, map each field and click **Save settings**.

The mapping dropdown only shows columns compatible with the linked field, and the supported types are Title, Text, Number, URL, E-mail, Phone, Select, Multiple Select and Date. A column you just created can take a minute to appear, because the add-on caches Notion columns for 60 seconds. When file fields are mapped, the add-on sends the uploaded file URLs to Notion.

If requests fail with a 401 error, update the add-on first. Version 1.6.3 fixed Notion API requests that failed with 401 because the Authorization header lacked the required "Bearer" scheme.

## Write rows from your own site with the Notion API

If your site already has a form and a server, it can create each row itself. [Notion's create-a-page reference](https://developers.notion.com/reference/post-page?ref=notionsolutions.net) takes a POST to `https://api.notion.com/v1/pages` with three headers: `Authorization: Bearer` plus your connection's token, `Content-Type: application/json`, and `Notion-Version`, where the reference lists 2026-03-11 as the latest version. The body names the database's data source as the parent and sets each property in the shape the property reference gives:

```
{
  "parent": { "data_source_id": "YOUR_DATA_SOURCE_ID" },
  "properties": {
    "Name": { "title": [{ "type": "text", "text": { "content": "Jordan Lee" } }] },
    "Email": { "email": "jordan@example.com" },
    "Phone": { "phone_number": "+1 415 555 0123" },
    "Service": { "select": { "name": "Website audit" } },
    "Message": { "rich_text": [{ "type": "text", "text": { "content": "Looking for a quote on a site refresh." } }] },
    "Requested date": { "date": { "start": "2026-12-01" } }
  }
}
```

Property names in the request have to match your column names, and a date can carry a time and offset or a named time zone when the time of day matters. I'd keep the token in a server-side environment variable and never in browser JavaScript, because whoever holds it can write to every page the connection has been added to.

Two request options are worth setting deliberately. Set `template` to `default` to start each row from the database's default template; Notion only allows that when the data source has a default template configured in the app, which [Notion database template defaults](https://notionsolutions.net/notion-database-template-defaults/) walks through. Setting the notifications mode to `silent` skips mention and Person-property notifications, but database automations the new page triggers still run, including Send notification to actions.

If the request returns 404 `object_not_found` or 403 `restricted_resource`, check first that the connection is added to the database page, then retry.

## After the row lands

A connector's job ends when the row exists. Who owns the new response and what happens next is a database decision, and Notion's automations can carry part of it. According to [Notion's database automations help](https://www.notion.com/help/database-automations?ref=notionsolutions.net), automations are available on paid plans, and Free plan users can create Slack notification automations but no other kinds. The Page added trigger fires when a new page is added to the database, and automations won't act on any pages whose access is restricted. Rows created through the API count too: the create-a-page reference says database automations a page write triggers still run, even with notifications set to silent.

Two more rules shape the follow-up. An automation can't trigger another automation, though [a button action can trigger one](https://notionsolutions.net/notion-buttons-vs-automations/). And an automation that hits an error is paused until you switch it back on from ••• → Automations, where the ••• next to it has an Active toggle. Defining the trigger, action and exception before you build is covered in [Notion automations: define the trigger, action and exception](https://notionsolutions.net/notion-automations-trigger-action-exception/).

None of the connector mapping lists above includes Relation, so linking each response to a client is a triage step. I'd add one view filtered to responses with an empty client relation, so nothing waits unassigned, and link each row to its client from there. If the responses are leads, the [simple client workflow for freelancers](https://notionsolutions.net/notion-client-crm-workflow/) shows where they go after triage.

## When responses don't arrive

__Form-to-Notion problems by symptom__
| Symptom                                             | Likely cause                                                                                  | Fix                                                                                                                                |
| --------------------------------------------------- | --------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| Database missing from Tally's dropdown              | Untitled database, or its page isn't shared with Tally                                        | Give the database a title, check Settings & members → My connections → … → Access selected pages, then refresh the dropdown        |
| Typeform says databases couldn't be loaded          | Typeform connection not added to the database page                                            | On the page, Add connections → Typeform → Confirm                                                                                  |
| Typeform stopped sending, 401 in the Webhook panel  | Notion token expired or was deleted                                                           | Delete the integration on the form and set it up again                                                                             |
| Typeform choice answers don't appear                | Option text differs between form and Select property                                          | Match spelling, spaces and case on both sides                                                                                      |
| Contact Form 7 requests fail with 401               | Add-on older than the "Bearer" header fix                                                     | Update to version 1.6.3 or later                                                                                                   |
| Contact Form 7 column missing from the mapping list | Column type isn't supported or compatible, or the 60-second cache                             | Check the nine supported types and wait a minute                                                                                   |
| Zapier rows stop mid-month                          | Free plan task limit reached                                                                  | Wait for the next usage period, or move to a paid plan with more tasks                                                             |
| API returns 404 or 403                              | Connection not added to the database page                                                     | Add connections on the page, then retry                                                                                            |
| Responses from before setup are missing             | Tally copies older responses only through its export toggle, and Typeform doesn't backfill    | Tally: switch on Export existing responses. Typeform: export to Google Sheets or CSV and move the rows with Zapier's bulk transfer |
| Person or Relation column stays empty               | Tally and the Contact Form 7 add-on don't support either, and Typeform's list has no Relation | Fill it during triage, or use Notion's own form for linked intake                                                                  |
| Typeform won't map to a Board or Calendar database  | Typeform maps to Table databases only                                                         | Target a Table database and add other layouts as views                                                                             |
| Submission times are hours off                      | Tally sends times in UTC                                                                      | Add the dateAdd formula with your offset                                                                                           |
| Automation didn't fire on a new row                 | Free plan, restricted page, or the automation paused after an error                           | Check the plan, the page's access, and the Active toggle                                                                           |
| Third-party connection broken in Notion             | Notion doesn't troubleshoot partner connections                                               | Contact the form tool's support team                                                                                               |

## The route I'd pick, and the first step

Pick the route with the fewest hops that can fill the property types your database needs. For most freelancers, that means Tally for a standalone form, Notion's own form when responses must link to clients, the Contact Form 7 add-on on WordPress, and Zapier's two-step template for Google Forms you'd rather not move. Typeform makes sense when you already pay for it, since 10 responses a month on Free is only enough for a trial run.

Before you touch any form tool, open the target database. Give it a title, add one property per question with the right type, and add the form tool's connection to that page. Then send one test response and check every column, including the Title.