

How to Build Job Application Tracker with Pipedream
Automatically create Notion database entries when candidates submit Typeform job applications with their details and resume links.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
HR teams and startups who want instant candidate tracking without manual data entry
Not ideal for
Companies requiring complex approval workflows or ATS integrations before candidate entry
Sync type
real-timeUse case type
importReal-World Example
A 25-person startup receives 40-60 applications per week through their careers page Typeform. Before automation, the HR manager copied candidate details into Notion manually twice per day, often missing applications for 4-6 hours. Now applications appear in their hiring pipeline within 30 seconds.
What Will This Cost?
Drag the slider to your expected monthly volume.
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
Import this workflow directly into Pipedream
Copy the pre-built Pipedream blueprint and paste it straight into Pipedream. 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.
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Candidate Name | ||
| Email Address | ||
| Resume File URL | ||
| Position Applied For | ||
| Application Status | ||
3 optional fields▸ show
| Years of Experience | |
| Cover Letter | |
| Phone Number |
Step-by-Step Setup
Workflows > New > Sources > Typeform
Set up Typeform webhook source
Go to pipedream.com and click New Workflow. Select Typeform as your trigger source. Choose 'New Response' as the trigger event. You'll see a unique webhook URL generated instantly. Copy this URL - you'll paste it into Typeform in the next step.
- 1Click 'New Workflow' from the Pipedream dashboard
- 2Select 'Typeform' from the trigger source list
- 3Choose 'New Response' as the event type
- 4Copy the generated webhook URL
Typeform > Connect > Webhooks
Configure Typeform webhook
Open your Typeform job application form and go to Connect panel. Click Webhooks and paste the Pipedream URL. Set it to send on form submission. Make sure your form captures name, email, resume file upload, and at least 2-3 application questions you want in Notion.
- 1Open your job application Typeform
- 2Click the 'Connect' tab at the top
- 3Select 'Webhooks' from the integration list
- 4Paste your Pipedream webhook URL
- 5Enable 'Send on form completion'
Your Typeform > Preview & Test
Generate test data
Submit a test application through your Typeform using realistic data. Include a resume file upload and answer all required questions. This creates sample data that Pipedream will use for mapping fields to Notion. The webhook should fire within 10-15 seconds of submission.
- 1Click 'Preview' on your Typeform
- 2Fill out all fields with realistic test data
- 3Upload a PDF resume file
- 4Submit the form
- 5Return to Pipedream to check for the webhook event
Workflow > Add Step > Notion > Create Page
Connect Notion integration
Click 'Add Step' in your Pipedream workflow and search for Notion. Select 'Create Page' action. You'll be prompted to authenticate with Notion - make sure you grant access to the workspace containing your hiring database. Select the specific database where you want candidate records created.
- 1Click the blue '+ Add Step' button
- 2Search for 'Notion' and select it
- 3Choose 'Create Page' action
- 4Click 'Connect Account' and authenticate with Notion
- 5Select your hiring database from the dropdown
Notion Step > Properties > Name/Email
Map candidate name and email
In the Notion step configuration, you'll see property fields matching your database schema. Map the candidate's name to your Name property by clicking the field and selecting the name response from Typeform data. Do the same for email address. These usually come from Typeform as 'text_xxxxx' fields.
- 1Click in the 'Name' property field
- 2Select the name field from Typeform response data
- 3Click in the 'Email' property field
- 4Select the email field from Typeform response data
- 5Verify the field mapping shows correct sample data
Notion Step > Properties > Resume URL
Map resume file link
Find your resume upload field in the Typeform data - it will be a file_url property. Map this to a URL property in your Notion database. If you don't have a URL property, you can map it to a rich text field instead. The link will be clickable in Notion for downloading resumes.
- 1Locate the file_url field in Typeform response data
- 2Click your Resume or File URL property in Notion
- 3Select the file_url from the Typeform data
- 4Verify the resume download link appears in preview
Notion Step > Properties > Custom Fields
Map application responses
Map the remaining Typeform responses to corresponding Notion properties. Common fields include position applied for, years of experience, salary expectations, and cover letter. Each Typeform question appears as a separate field in the webhook data. Match them to your database schema.
- 1Identify each question response in Typeform data
- 2Map position/role field to your Position property
- 3Map experience level to Years Experience property
- 4Map any text responses to Multi-line Text properties
- 5Map single-select responses to Select properties
Notion Step > Properties > Status
Set default pipeline status
Set a default status for new applications in your Notion database. This is usually a Select property like 'Application Status' that you'll set to 'New' or 'Under Review'. You can hardcode this value rather than mapping it from Typeform since all new applications start at the same stage.
- 1Find your Status or Pipeline Stage property
- 2Click the field and select 'Custom Value'
- 3Type 'New Application' or your default status
- 4Set any other default values like date received
Workflow > Deploy > Test
Test the complete workflow
Click 'Deploy' to activate your workflow, then submit another test application through your Typeform. Check your Notion database within 30 seconds to see if the new candidate page was created correctly. Verify all fields populated properly and the resume link works.
- 1Click 'Deploy' to make the workflow live
- 2Submit a new test application via Typeform
- 3Check your Notion database for the new entry
- 4Click the resume link to verify it downloads
- 5Review all mapped fields for accuracy
Add this code step after Typeform trigger to automatically download resume files and upload them to permanent cloud storage, preventing the 30-day Typeform URL expiration issue.
JavaScript — Code Stepimport axios from 'axios'▸ Show code
import axios from 'axios'
import FormData from 'form-data'
export default defineComponent({... expand to see full code
import axios from 'axios'
import FormData from 'form-data'
export default defineComponent({
async run({ steps, $ }) {
const resumeUrl = steps.trigger.event.form_response.file_url
const candidateName = steps.trigger.event.form_response.candidate_name
if (!resumeUrl) {
return { permanent_url: null }
}
try {
// Download file from Typeform
const fileResponse = await axios.get(resumeUrl, {
responseType: 'stream',
timeout: 30000
})
// Upload to your permanent storage (example: AWS S3)
const fileName = `resumes/${candidateName.replace(/\s+/g, '_')}_${Date.now()}.pdf`
const formData = new FormData()
formData.append('file', fileResponse.data)
formData.append('fileName', fileName)
const uploadResponse = await axios.post('YOUR_STORAGE_ENDPOINT', formData, {
headers: {
...formData.getHeaders(),
'Authorization': 'Bearer YOUR_TOKEN'
}
})
return {
permanent_url: uploadResponse.data.file_url,
original_url: resumeUrl,
file_name: fileName
}
} catch (error) {
console.error('File upload failed:', error)
return {
permanent_url: resumeUrl, // Fallback to original
error: error.message
}
}
}
})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
Use Pipedream for this if you need instant webhook processing and want to add custom logic like file handling or duplicate detection. The platform excels at real-time form processing and gives you Node.js flexibility for complex data transformations. Skip it if your team needs a visual workflow builder - Zapier's interface is more approachable for non-technical users.
This workflow costs nothing until you hit 10,000 invocations per month on Pipedream's free tier. At 200 applications/month, you'll stay free indefinitely. Zapier charges after 100 tasks ($20/month), and Make starts billing at 1,000 operations ($9/month). For hiring workflows, Pipedream wins on cost unless you're processing thousands of applications monthly.
Zapier handles Typeform-to-Notion connections with zero setup complexity and better error handling out of the box. Make offers superior visual debugging when field mapping goes wrong. n8n gives you more advanced file processing capabilities for resume parsing. Power Automate integrates better if you're already using Microsoft's ecosystem. But Pipedream's instant webhook processing beats all competitors - your candidates appear in Notion within 15 seconds instead of 2-15 minutes.
You'll discover that Typeform file URLs expire in 30 days, breaking resume access unless you download them immediately. Notion's API occasionally fails on Select property validation if your status values don't match exactly. Some candidates submit forms multiple times, creating duplicate entries that mess up your pipeline tracking. Plan for these issues upfront.
Ideas for what to build next
- →Add interview scheduling automation — Connect Calendly or Google Calendar to automatically send interview invites when status changes to 'Phone Screen'.
- →Set up hiring manager notifications — Add Slack or email notifications to alert specific team members when applications arrive for their department.
- →Build candidate rejection workflow — Create follow-up automation to send personalized rejection emails from Notion status changes with email templates.
Related guides
How to Share Notion Meeting Notes to Slack with Pipedream
~15 min setup
How to Share Notion Meeting Notes to Slack with Power Automate
~15 min setup
How to Share Notion Meeting Notes to Slack with n8n
~20 min setup
How to Send Notion Meeting Notes to Slack with Zapier
~8 min setup
How to Share Notion Meeting Notes to Slack with Make
~12 min setup
How to Create Notion Tasks from Slack with Pipedream
~15 min setup