Intermediate~20 min setupProductivity & FormsVerified April 2026
Notion logo
Typeform logo

How to Track Job Applications from Typeform to Notion with N8n

Auto-create Notion database entries when candidates submit job applications through Typeform, tracking name, email, resume, and pipeline status.

Steps and UI details are based on platform versions at time of writing β€” check each platform for the latest interface.

Best for

HR teams that want instant candidate tracking in Notion without manual data entry

Not ideal for

Teams uncomfortable with JSON expressions or needing advanced applicant screening logic

Sync type

real-time

Use case type

import

Real-World Example

πŸ’‘

A 25-person B2B startup uses this to track engineering candidates in their Notion hiring hub. Before automation, their hiring manager copied application details from 15+ daily form submissions into Notion manually, taking 3-4 hours weekly. Now candidates flow directly into their pipeline with status tracking, interview scheduling, and team feedback - all starting automatically when someone hits submit.

What Will This Cost?

Drag the slider to your expected monthly volume.

/mo
505005K50K

Each platform counts differently β€” Zapier: 1 task per trigger. Make: 1 operation per module per record. n8n: 1 execution per run.

Prices shown for annual billing. Based on published pricing as of April 2026.

Estimated ROI

1000

min saved/mo

$583

labor value/mo

Free

no platform cost

Based on ~2 min manual effort per operation at $35/hr fully loaded labor cost.

Implementation

Skip the setup

Import this workflow directly into n8n

Copy the pre-built n8n blueprint and paste it straight into n8n. All modules, filters, and field mappings are already configured β€” you just need to connect your accounts.

Before You Start

Make sure you have everything ready.

Notion database set up with Name, Email, Resume Link, Position, Status, and other hiring fields
Typeform with job application questions including file upload for resume
N8n cloud account or self-hosted instance running
Admin access to your Notion workspace to share databases
Typeform Pro plan or higher for webhook functionality

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Candidate Namename
Email Addressemail
Resume Filefile_url
Position Appliedchoice.label
Application Statusstatus
Application Datesubmitted_at
2 optional fieldsβ–Έ show
Experience Levelchoice.label
Cover Lettertext

Step-by-Step Setup

1

Workflows > New > Add Node > Typeform Trigger

Create N8n workflow

Start a new workflow in N8n and add the Typeform webhook trigger. This will listen for new form submissions in real-time.

  1. 1Click 'New Workflow' in your N8n dashboard
  2. 2Click the + button to add your first node
  3. 3Search for 'Typeform Trigger' and select it
  4. 4Choose 'Form Response' as the trigger event
βœ“ What you should see: You should see a Typeform Trigger node with 'Form Response' selected as the event type.
2

Typeform Node > Credentials > New

Connect Typeform account

Link your Typeform account using OAuth or API key. N8n needs permission to receive webhook notifications from your forms.

  1. 1Click 'Create New Credential' in the Typeform node
  2. 2Choose 'Typeform OAuth2 API' from the dropdown
  3. 3Click 'Connect my account' and authorize N8n
  4. 4Select your job application form from the Form dropdown
βœ“ What you should see: The credential shows 'Connected' status and your form appears in the dropdown list.
⚠
Common mistake β€” Don't use API key auth - webhooks require OAuth2 for real-time triggers.
n8n settings
Connection
Choose a connection…Add
click Add
Notion
Log in to authorize
Authorize n8n
popup window
βœ“
Connected
green checkmark
3

Typeform Node > Execute Node

Test Typeform trigger

Execute the node to capture a sample form response. This gives N8n the data structure to work with in later steps.

  1. 1Click 'Execute Node' on the Typeform trigger
  2. 2Submit a test application through your Typeform
  3. 3Return to N8n and check the execution results
  4. 4Verify you see candidate data like name, email, and answers
βœ“ What you should see: The node shows sample data with fields like 'answers', 'form_id', and 'response_id' populated.
⚠
Common mistake β€” If no data appears, check that your form is published and accepting responses.
n8n
β–Ά Run once
executed
βœ“
Notion
βœ“
Typeform
Typeform
πŸ”” notification
received
4

Add Node > Notion > Database Item > Create

Add Notion node

Insert a Notion node configured to create database items. This will add each job application as a new row in your hiring tracker.

  1. 1Click the + button after the Typeform node
  2. 2Search for 'Notion' and select it
  3. 3Set Operation to 'Create' and Resource to 'Database Item'
  4. 4Choose 'Create New Credential' for Notion connection
βœ“ What you should see: A Notion node appears connected to your Typeform trigger with 'Create Database Item' selected.
5

Notion Node > Credentials > OAuth2

Connect Notion account

Authenticate with Notion and grant N8n access to your workspace. You'll need to share your job tracker database with the N8n integration.

  1. 1Click 'Connect my account' in the Notion credentials
  2. 2Authorize N8n in the Notion popup window
  3. 3Go to your Notion job tracker database
  4. 4Click 'Share' and add the N8n integration as an editor
βœ“ What you should see: Your job tracker database appears in the Database dropdown within N8n.
⚠
Common mistake β€” The database won't show up unless you explicitly share it with the N8n integration in Notion.
6

Notion Node > Properties > Name > Expression

Map candidate name field

Connect the applicant's name from Typeform to your Notion Name property. Use N8n's expression editor to extract the right answer field.

  1. 1Select your database from the Database dropdown
  2. 2Find the 'Name' property in the field list
  3. 3Click the expression editor (gears icon) next to Name
  4. 4Enter: {{ $json.answers.find(a => a.field.ref === 'name_field').text }}
βœ“ What you should see: The Name field shows the expression and displays the test candidate's name when you hover.
⚠
Common mistake β€” Replace 'name_field' with your actual Typeform field reference - check the test data for the exact ref value.
Notion fields
Name
Status
Assignee
Due Date
Priority
available as variables:
1.props.Name
1.props.Status
1.props.Assignee
1.props.Due Date
1.props.Priority
7

Notion Node > Properties > Email/Resume/Status

Map email and resume fields

Set up field mapping for the candidate's email address and resume file link. These are critical for your hiring pipeline tracking.

  1. 1Map Email property to: {{ $json.answers.find(a => a.field.ref === 'email_field').email }}
  2. 2Map Resume Link property to: {{ $json.answers.find(a => a.field.ref === 'resume_field').file_url }}
  3. 3Set Status property to 'Applied' as default value
βœ“ What you should see: Email, Resume Link, and Status fields all show mapped expressions or values.
⚠
Common mistake β€” File uploads use 'file_url' not 'text' - check your test data structure to confirm the property name.
8

Notion Node > Properties > Custom Fields

Map additional application fields

Connect other form responses like position, experience level, or cover letter to corresponding Notion properties.

  1. 1Map Position to: {{ $json.answers.find(a => a.field.ref === 'position_field').choice.label }}
  2. 2Map Experience to: {{ $json.answers.find(a => a.field.ref === 'experience_field').choice.label }}
  3. 3Map Cover Letter to: {{ $json.answers.find(a => a.field.ref === 'cover_letter_field').text }}
βœ“ What you should see: All your custom application fields show expressions pulling data from the Typeform response.
⚠
Common mistake β€” Multiple choice fields use 'choice.label' while text fields use 'text' - match the property type to avoid errors.
9

Notion Node > Settings > Error Handling

Add error handling

Configure the workflow to handle failures gracefully. This prevents the automation from breaking when Notion is down or fields are missing.

  1. 1Click the Notion node settings (3 dots)
  2. 2Select 'Settings' from the menu
  3. 3Change 'On Error' from 'Stop and Fail' to 'Continue'
  4. 4Enable 'Retry On Fail' with 3 attempts and 1-minute intervals
βœ“ What you should see: The node settings show error handling enabled with retry logic configured.
10

Workflow > Execute Workflow

Test complete workflow

Run the full automation end-to-end to verify data flows correctly from form submission to Notion database creation.

  1. 1Click 'Execute Workflow' at the top of N8n
  2. 2Submit another test application through your Typeform
  3. 3Check the workflow execution results in N8n
  4. 4Verify the new candidate appears in your Notion database
βœ“ What you should see: Both nodes show green checkmarks and a new database row appears in Notion with all mapped fields populated.
⚠
Common mistake β€” If the Notion node fails, check that all required properties in your database are mapped or have default values.
11

Workflow > Activate Toggle

Activate automation

Turn on the workflow to start processing real job applications. The webhook will now trigger automatically for every form submission.

  1. 1Click the 'Inactive' toggle in the top right
  2. 2Confirm activation in the popup dialog
  3. 3Check that status changes to 'Active' with a green indicator
βœ“ What you should see: The workflow shows 'Active' status and the toggle switch is enabled.
⚠
Common mistake β€” Don't activate until you've tested thoroughly - you'll process real applications once this is live.

Drop this into an n8n Code node.

Copy this template{{ $json.answers.find(a => a.field.ref === 'name_field')?.text || 'Unknown Applicant' }}
β–Έ Show code
{{ $json.answers.find(a => a.field.ref === 'name_field')?.text || 'Unknown Applicant' }}

... expand to see full code

{{ $json.answers.find(a => a.field.ref === 'name_field')?.text || 'Unknown Applicant' }}

Scaling Beyond 500+ applications/day+ Records

If your volume exceeds 500+ applications/day records, apply these adjustments.

1

Add rate limiting

Notion's API allows 3 requests per second. Add a 500ms wait node between bulk operations to avoid 429 errors during application spikes.

2

Enable execution queue

Turn on N8n's queue mode in settings to handle concurrent form submissions properly. Without this, simultaneous applications can cause race conditions.

3

Monitor webhook failures

Set up N8n's error workflow to capture failed executions. High volume means more edge cases like malformed uploads or network timeouts that need tracking.

Going live

Production Checklist

Before you turn this on for real, confirm each item.

Troubleshooting

Common errors and how to fix them.

Frequently Asked Questions

Common questions about this workflow.

Analysis

VerdictWhy n8n for this workflow

Use N8n for this if you want full control over data transformation and don't mind JSON expressions. N8n handles complex field mapping better than Zapier and costs nothing for moderate volumes. The webhook triggers fire instantly, and you can add custom logic like duplicate detection or conditional field mapping. Skip N8n if your team needs a visual, no-code builder - Zapier's interface is more beginner-friendly for simple form-to-database workflows.

Cost

This workflow uses 1 execution per form submission. At 200 applications/month, that's 200 executions total. N8n cloud starts free up to 5,000 executions monthly, so you pay nothing until you hit serious volume. The same workflow costs $20/month on Zapier's Starter plan (limited to 750 tasks) and $9/month on Make's Core plan. N8n wins on cost until you exceed the free tier.

Tradeoffs

Zapier handles Typeform file uploads more reliably - their native integration extracts resume URLs without JSON expressions. Make offers better visual field mapping with drag-and-drop connections instead of writing expressions. But N8n gives you precise control over data transformation. You can add validation logic, format phone numbers, or split full names into first/last fields using JavaScript. That flexibility matters when you're building a real hiring pipeline, not just moving data around.

Notion's API paginates responses at 100 records, but that won't affect single record creation. Watch out for Typeform's webhook retry behavior - failed requests retry 3 times over 24 hours, so fix issues fast or you'll get duplicate applications. File upload fields sometimes return arrays instead of single URLs if multiple files are allowed, so add array handling logic if candidates can submit multiple documents. Typeform's choice field structure changes between single and multiple selection types, breaking your expressions if you modify the form later.

Ideas for what to build next

  • β†’
    Add Slack notifications for new applications β€” Connect a Slack node after Notion creation to alert your hiring team immediately when qualified candidates apply for priority roles.
  • β†’
    Set up interview scheduling automation β€” Add Calendly integration to automatically send scheduling links to candidates who pass initial screening, updating their Notion status to 'Interview Scheduled'.
  • β†’
    Create rejection email workflow β€” Build a separate N8n workflow triggered by Notion status changes to send personalized rejection emails when candidates are moved to 'Not Selected' status.

Related guides

Was this guide helpful?
← Notion + Typeform overviewn8n profile β†’