Global AI Network

HR Email Outreach Automation AI Agent

Automate HR recruitment emails from Google Sheets - send personalized Gmail messages with resume downloads, track delivery status, and log results automatically.

16+
Total Deployments
15 min
Setup Time
v1.0
Version

Need Help Getting Started? Our AI Specialists Will Set It Up For Free

1-Click Deployment 5-Min Setup Free Expert Support
Technology Partners

Required Integrations

This agent works seamlessly with these platforms to deliver powerful automation.

Gmail

Gmail

Send, receive, and manage Gmail messages with full email automation capabilities

Google Sheets

Google Sheets

Read / Write data from / to Google Sheets

Step by Step

Setup Tutorial

mission-briefing.md

What This Agent Does

This powerful automation workflow streamlines your HR recruitment process by automatically sending personalized emails to job candidates with their resumes attached, all while maintaining a comprehensive log of every interaction. The agent reads candidate information from a Google Sheet, processes each contact individually, sends customized emails via Gmail, and records the results back to a tracking spreadsheet—eliminating hours of manual, repetitive work.

Key benefits include:

  • Save 10+ hours per week on manual email sending and tracking
  • Zero human error in email personalization or attachment handling
  • Complete audit trail with automatic logging of all communications
  • Scalable outreach that handles 10 or 1,000 candidates with equal ease
  • Professional consistency across all candidate communications

Perfect use cases:

  • Bulk candidate outreach for job openings
  • Interview invitation campaigns
  • Resume acknowledgment workflows
  • Recruitment status updates with document delivery
  • HR onboarding communications

Who Is It For

This workflow is designed for HR professionals, recruiters, and hiring managers who need to communicate with multiple candidates efficiently while maintaining a personal touch. Whether you're part of a small startup handling your first hiring wave or an established HR team managing hundreds of applications, this automation adapts to your scale.

Ideal users include:

  • Recruitment coordinators managing high-volume hiring campaigns
  • HR managers coordinating interview processes across departments
  • Talent acquisition specialists conducting outreach to passive candidates
  • Staffing agencies managing multiple client requisitions simultaneously
  • Small business owners wearing the HR hat without dedicated resources

No coding experience required—if you can use Google Sheets and Gmail, you can configure this workflow!

Required Integrations

Google Sheets

Why it's needed: Google Sheets serves as both your input source (candidate database) and output destination (activity log). The workflow reads candidate information from one sheet and writes execution results to another, creating a complete paper trail of your recruitment communications.

Setup steps:

  1. Enable Google Sheets API access in your Google Cloud Console

    • Navigate to console.cloud.google.com
    • Create a new project or select an existing one
    • Go to "APIs & Services" > "Library"
    • Search for "Google Sheets API" and click "Enable"
  2. Create service account credentials

    • Navigate to "APIs & Services" > "Credentials"
    • Click "Create Credentials" > "Service Account"
    • Name it "TaskAGI HR Automation" and click "Create"
    • Grant it "Editor" role and click "Done"
  3. Generate and download the JSON key

    • Click on your newly created service account
    • Go to the "Keys" tab
    • Click "Add Key" > "Create new key"
    • Select "JSON" format and download the file
  4. Configure in TaskAGI

    • Navigate to Integrations in your TaskAGI dashboard
    • Select "Google Sheets" and click "Add Connection"
    • Upload your JSON key file or paste its contents
    • Name the connection (e.g., "HR Sheets Connection")
    • Click "Test Connection" to verify, then "Save"

Gmail

Why it's needed: Gmail handles the actual email delivery to candidates, including attachments like resumes. This integration allows the workflow to send professional emails from your company email address while maintaining full control over content and timing.

Setup steps:

  1. Enable Gmail API access

    • In the same Google Cloud Console project
    • Go to "APIs & Services" > "Library"
    • Search for "Gmail API" and click "Enable"
  2. Configure OAuth consent screen

    • Navigate to "APIs & Services" > "OAuth consent screen"
    • Select "Internal" (if using Google Workspace) or "External"
    • Fill in application name: "TaskAGI HR Automation"
    • Add your email as a developer contact
    • Click "Save and Continue"
  3. Create OAuth 2.0 credentials

    • Go to "APIs & Services" > "Credentials"
    • Click "Create Credentials" > "OAuth client ID"
    • Select "Web application"
    • Add authorized redirect URI: https://app.taskagi.com/oauth/callback
    • Download the client configuration
  4. Configure in TaskAGI

    • Navigate to Integrations > Gmail
    • Click "Add Connection"
    • Enter your Client ID and Client Secret
    • Click "Authorize" and sign in with your Gmail account
    • Grant the requested permissions
    • Name the connection and save

Configuration Steps

Step 1: Prepare Your Google Sheets

Create two Google Sheets:

  • Candidate Data Sheet: Must include columns for Email, Name, ResumeURL, emailSubject, and emailBody
  • Log Sheet: Create headers for Timestamp, Email, Status, ErrorMessage

Share both sheets with the service account email address (found in your JSON key file) with "Editor" permissions.

Step 2: Configure the Manual Trigger

The workflow starts with a manual trigger, requiring no configuration. Simply click "Run" when you're ready to process your candidate batch.

Step 3: Set Up "Get HR Data from Sheets"

  • Node: googlesheets.getSheetFromUrl
  • Parameter: sheet_url - Replace YOUR_GOOGLE_SHEETS_URL_HERE with your actual Candidate Data Sheet URL
  • Example: https://docs.google.com/spreadsheets/d/1abc123xyz/edit
  • Connection: Select your configured Google Sheets integration
  • This node retrieves all candidate rows for processing

Step 4: Configure "Process Data" Function

This node validates and structures your data. The function should:

  • Check for required fields (Email, Name, etc.)
  • Format email subjects and bodies with candidate names
  • Validate email addresses and URLs
  • Return an array of processed contact objects

Step 5: Set Up the Loop Over Contacts

  • Node: core.loop
  • Input: Connect to the output of "Process Data"
  • Configuration: Set to iterate over the array of contacts
  • This creates individual processing paths for each candidate

Step 6: Configure "Wait Between Emails"

  • Node: core.wait
  • Duration: Set to 2-5 seconds to avoid Gmail rate limits
  • Purpose: Prevents your account from being flagged for suspicious activity
  • Recommended: 3 seconds for batches under 100, 5 seconds for larger batches

Step 7: Set Up "Download Resume"

  • Node: core.http_request
  • URL: Use [[loop.item.ResumeURL]] to dynamically fetch each candidate's resume
  • Method: GET
  • Response Type: Binary (for file download)
  • This retrieves the resume file for attachment

Step 8: Configure "Send Gmail"

  • Node: gmail.sendEmail
  • To: [[loop.item.Email]]
  • Subject: [[loop.item.emailSubject]]
  • Body: [[loop.item.emailBody]]
  • Attachments: Connect to the output of "Download Resume"
  • Connection: Select your Gmail integration
  • This sends the personalized email with resume attached

Step 9: Set Up "Check Email Success"

  • Node: core.if_condition
  • Condition: Check if the Gmail send operation returned success
  • True Path: Routes to "Handle Success"
  • False Path: Routes to "Handle Failure"

Step 10: Configure Success and Failure Handlers

Both nodes format the result data for logging:

  • Handle Success: Creates object with status "Sent" and timestamp
  • Handle Failure: Creates object with status "Failed" and error message

Step 11: Set Up "Merge Results"

  • Node: core.merge
  • Purpose: Combines success and failure paths back into single flow
  • No configuration needed—automatically merges both branches

Step 12: Configure "Prepare Log Data"

  • Node: core.edit_data
  • Mapping: Transform merged data into log sheet format
  • Fields: Timestamp, Email, Status, ErrorMessage
  • Ensures data matches your Log Sheet column structure

Step 13: Set Up "Log to Google Sheets"

  • Node: googlesheets.appendRowFromUrl
  • Parameter: sheet_url - Replace YOUR_LOG_SHEET_URL_HERE with your Log Sheet URL
  • Data: Connect to "Prepare Log Data" output
  • Connection: Use your Google Sheets integration
  • This writes the execution results to your tracking sheet

Testing Your Agent

1. Start with a small test batch

Before processing your entire candidate database, create a test sheet with 2-3 entries using your own email addresses. This allows you to verify the complete workflow without impacting real candidates.

2. Execute the workflow

  • Click the "Run" button on the Manual Trigger node
  • Watch the execution progress in real-time through the TaskAGI interface
  • Each node will highlight green upon successful completion

3. Verify each stage

  • After "Get HR Data": Check that all rows were retrieved (view node output)
  • After "Process Data": Confirm data structure matches expected format
  • During "Loop": Monitor individual email sends in the execution log
  • After "Send Gmail": Check your test email inbox for received messages
  • After "Log to Sheets": Open your Log Sheet to verify entries were recorded

4. Success indicators

✅ All nodes show green status ✅ Test emails received with correct personalization ✅ Resume attachments are present and downloadable ✅ Log Sheet contains accurate status entries ✅ No error messages in the execution log

Troubleshooting

Problem: "Permission denied" error on Google Sheets

Solution: Ensure you've shared both sheets with your service account email address (looks like taskagi-hr@project-name.iam.gserviceaccount.com). The account needs "Editor" permissions.

Problem: Gmail sends fail with "Rate limit exceeded"

Solution: Increase the wait time between emails to 5-10 seconds. Gmail has daily sending limits (500 for free accounts, 2,000 for Google Workspace). Consider breaking large batches across multiple days.

Problem: Resume downloads fail

Solution: Verify that resume URLs are publicly accessible or that authentication is properly configured. Test URLs in a browser first. Ensure URLs are direct file links, not sharing links.

Problem: Email personalization shows [[loop.item.Name]] instead of actual names

Solution: Check that your data mapping is correct in the "Process Data" node. Verify column names in your Google Sheet match exactly (case-sensitive). Ensure the loop is properly configured to iterate over the processed array.

Problem: Some emails send but aren't logged

Solution: Check the "Merge Results" node configuration. Ensure both success and failure paths are properly connected. Verify the "Prepare Log Data" node has correct field mappings.

Problem: Workflow stops mid-execution

Solution: Check your TaskAGI account's execution limits. Large batches may require a higher-tier plan. Consider breaking your candidate list into smaller batches of 50-100 contacts.

Next Steps

After successful setup:

  1. Create your production candidate sheet with all necessary columns populated
  2. Customize email templates in your sheet for different candidate scenarios (interview invites, rejections, status updates)
  3. Set up a regular schedule using TaskAGI's scheduling feature to process new candidates daily or weekly
  4. Create dashboard views of your Log Sheet to track campaign performance

Optimization suggestions:

  • Add conditional logic to send different email templates based on candidate status or job role
  • Implement retry logic for failed sends with exponential backoff
  • Create email templates in Gmail and reference them by ID for consistent branding
  • Add Slack notifications to alert your team when batches complete
  • Integrate with your ATS (Applicant Tracking System) to automatically sync candidate data

Advanced usage tips:

  • Use Google Sheets formulas to dynamically generate email subjects and bodies based on candidate data
  • Implement A/B testing by creating multiple email variants and tracking response rates
  • Add follow-up workflows that trigger based on candidate responses or time delays
  • Create separate workflows for different stages of your recruitment funnel
  • Build analytics dashboards using your Log Sheet data to measure campaign effectiveness

Congratulations! You've now automated one of the most time-consuming aspects of recruitment. Your workflow will handle the repetitive tasks while you focus on building relationships with top candidates. Start small, test thoroughly, and scale confidently! 🚀