Zapier Automation: ATS Stage Changes Trigger Candidate Touchpoints Automatically
What This Builds
An automation that watches your ATS for candidate stage changes and automatically sends a personalized touchpoint message — without you doing anything. When you move a candidate from "Submitted" to "Interview Scheduled" in Bullhorn, a confirmation text and calendar-event summary goes to the candidate automatically. When you mark someone "Offer Extended," a warm, professional offer summary email fires within minutes. You stop being the bottleneck for routine communications. Every candidate gets the right message at the right moment, even when you're buried in calls.
Prerequisites
- Zapier account — Starter plan ($20/month) is sufficient for most setups; Professional ($50/month) needed for multi-step Zaps with more than 2 steps
- Bullhorn ATS (or Greenhouse/Lever — steps vary slightly; Bullhorn has the most complete Zapier integration)
- Gmail or Outlook (for email steps)
- Optional: Twilio account ($15/month) for SMS touchpoints, or Sense integration if already subscribed
- 30 minutes to draft your touchpoint message templates before building
The Concept
Zapier is a connector tool — it sits between your software systems and watches for events. When something happens in App A (a trigger), it automatically does something in App B (an action). You don't write code. You describe the logic in plain language through a point-and-click interface.
Think of it as hiring someone whose only job is to watch your ATS all day and send the right message the moment something changes. "Maria just got moved to Interview Scheduled? Send her the confirmation email right now." "Tom just got marked as Started? Send him the first-week check-in text on Monday morning." That's what this Zap does — except it runs 24/7 without forgetting.
Build It Step by Step
Part 1: Draft Your Touchpoint Messages First (30 min before you open Zapier)
Before you touch Zapier, write out the 3–5 messages you want to automate. The automation is only as good as the messages inside it. Use ChatGPT or Claude to help draft these, then customize.
Recommended touchpoints to automate first:
Touchpoint 1 — After submittal (stage: Submitted to Client)
Subject: Your profile is with [Client] — here's what to expect
Hi [First Name],
Good news — I submitted your profile to [Client] today for the [Role Title] position. They're typically reviewing submittals within 2–3 business days.
I'll reach out the moment I have feedback. In the meantime, feel free to reach out if you have any questions.
[Your name]
[Agency name] | [Your phone number]
Touchpoint 2 — After interview scheduled (stage: Interview Scheduled)
Subject: Interview confirmed — [Company] [Date/Time]
Hi [First Name],
You're confirmed for an interview with [Client] on [Interview Date] at [Interview Time]. [Location/video link if applicable.]
I'll send over a prep document within the next few hours covering the likely questions. Review it the night before — it'll make a difference.
Good luck — you're well prepared for this one.
[Your name]
Touchpoint 3 — Interview reminder (24 hours before interview)
Hi [First Name] — quick reminder: your interview with [Client] is tomorrow at [Time]. Reply here or call me if anything changes. You've got this.
— [Your name]
Touchpoint 4 — Post-interview follow-up (stage: Interviewed)
Subject: How did it go?
Hi [First Name],
Hope the interview went well! I'd love to hear how you felt it went before I reach back out to [Client] for feedback.
Give me a call when you have 5 minutes, or reply here with your quick take.
[Your name]
Touchpoint 5 — After placement confirmed (stage: Placed / Started)
Subject: Congratulations — you're all set for [Start Date]
Hi [First Name],
Everything is confirmed — you're starting at [Client] on [Start Date]. Here are your first-day details: [Location, time, who to ask for, dress code if relevant].
I'll check in with you after your first week. You're in good shape. Congratulations.
[Your name]
Save these as a document. You'll paste the body text into Zapier in Part 2.
Part 2: Set Up Your First Zap — Submitted to Client → Send Confirmation Email
Go to zapier.com and log in. Click Create Zap.
Set the Trigger:
- Search for and select Bullhorn CRM as your trigger app
- Select trigger event: New/Updated Candidate (or "Updated Candidate Stage" if available in your Bullhorn tier)
- Connect your Bullhorn account (you'll need your API credentials — get these from Bullhorn Admin or your agency's Bullhorn admin)
- In the trigger configuration, set the filter: Status/Stage = "Submitted to Client"
- Test the trigger — Zapier will pull a recent candidate record to confirm the connection is working
Add a Filter Step (critical — prevents the Zap from firing on every candidate update):
- Click the "+" between Trigger and Action
- Select Filter
- Condition: "Status" Exactly matches "Submitted to Client"
- This ensures the Zap only fires when this specific stage change happens, not every time a candidate record is touched
Set the Action:
- Search for and select Gmail (or Outlook) as your action app
- Select action: Send Email
- Connect your Gmail account
- Configure the email fields:
- To: Map to the candidate's email field from the Bullhorn trigger data
- Subject: "Your profile is with [Client] — here's what to expect" (you can make the client name dynamic if your Bullhorn data includes it in the candidate record; otherwise leave it as a placeholder and personalize the template)
- Body: Paste your Touchpoint 1 message. Use Zapier's variable picker to insert
{{First Name}}from the Bullhorn data
Name and activate your Zap: Give it a clear name like "Bullhorn: Submitted → Candidate Email" and turn it on.
Test it live: Move a test candidate to "Submitted to Client" in Bullhorn. Check that the email arrives correctly within 2–3 minutes.
Part 3: Replicate for Additional Stage Triggers
Once your first Zap works, duplicate it (Zapier has a "Copy Zap" option) and change:
- The filter condition (e.g., "Interview Scheduled" instead of "Submitted to Client")
- The email template (paste your Touchpoint 2 message)
- Rename it clearly
Repeat for each touchpoint you drafted in Part 1. You'll end up with 4–5 Zaps, each watching for a different stage transition.
For the 24-hour interview reminder, you'll need a slightly different setup:
- Trigger: Bullhorn "New/Updated Candidate" with Interview Date field populated
- Add a Delay step: Delay until [Interview Date] minus 24 hours
- Action: Send email or SMS
This is a slightly more advanced Zap — if Zapier's Bullhorn integration doesn't expose Interview Date as a trigger field cleanly, use a Google Sheets intermediary: Zap 1 writes interview date to a sheet → Zap 2 reads the sheet on a schedule and sends the reminder when the date matches.
Part 4: Add SMS via Twilio (Optional, High Impact)
Text messages have 98% open rates vs. ~20% for email. For high-stakes touchpoints (interview reminder, offer confirmation), SMS outperforms email significantly.
- Set up a Twilio account at twilio.com. Buy a local phone number (~$1/month). You'll get SMS credits to start.
- In your interview reminder Zap, replace or supplement the Gmail action with a Twilio: Send SMS action
- Map the candidate's cell phone number from Bullhorn
- Keep the message under 160 characters (one SMS segment)
If you don't want to use Twilio, Sense (if you're already subscribed from Level 3) has a Zapier integration that can handle the SMS delivery through your existing Sense account.
Real Example: A Candidate Through the Full Pipeline
Setup: 5 Zaps running: Submitted, Interview Scheduled, Interviewed, Offer Extended, Started.
Monday: You submit David K. for a warehouse supervisor role. You move his record to "Submitted to Client" in Bullhorn.
- 2 minutes later: David receives an email: "Your profile is with [Manufacturer] — here's what to expect." You didn't write a word.
Wednesday: Client emails you to schedule David for Thursday at 2pm. You update David's record to "Interview Scheduled" and add the interview date.
- Immediately: David gets a confirmation email with the time, location, and a note that a prep document is coming.
- Thursday 2pm minus 24 hours = Wednesday 2pm: David gets a text reminder. "Interview with [Client] is tomorrow at 2pm. Call me if anything changes. — [Your name]"
Thursday afternoon: David calls after the interview. You update his record to "Interviewed."
- 15 minutes later: David gets a follow-up email asking how it went and inviting him to call with his take.
Friday: Client calls with an offer. You extend verbally and update the record to "Offer Extended."
- Immediately: David receives a professional offer summary email with all the terms you've pre-populated.
Net result: David had 5 touchpoints throughout the week. You manually made 2 phone calls. The other 3 communications happened automatically. David never wondered where he stood. You never had to remember to send the interview reminder.
Time saved: 25–40 minutes of manual messaging per candidate across a full pipeline cycle. With 15–20 active candidates at various stages, that's 6–8 hours recovered per week.
What to Do When It Breaks
- Zap fires but email goes to the wrong person → Your Bullhorn field mapping is off. Open the Zap, go to the Action step, and re-check which field is mapped to the "To" address. Make sure it's pulling the candidate's primary email, not the recruiter's email or a test value.
- Zap triggers on every candidate update, not just stage changes → Your Filter step isn't working or is missing. Make sure the Filter is set to "Exactly matches" not "Contains." "Contains" will fire on partial matches.
- Bullhorn doesn't expose the field you need as a trigger → Bullhorn's Zapier integration has some limitations on which fields are available depending on your subscription tier. Workaround: Set up a Bullhorn webhook (via Bullhorn's API) to push stage changes to a Google Sheet, then Zapier triggers from the Sheet instead of directly from Bullhorn. More complex but fully solves the field limitation.
- Emails look off — wrong candidate name or blank fields → Some candidate records in Bullhorn have incomplete data (no first name, no email). Add a Zapier Filter before the email action: "First Name is not empty" AND "Email is not empty." Zap will skip candidates with missing data rather than sending broken emails.
- Twilio SMS failing → Check your Twilio account balance (SMS costs ~$0.0075/message). Also verify the candidate phone number format — Twilio requires E.164 format (+1XXXXXXXXXX). Add a Zapier Formatter step to reformat the phone number before passing it to Twilio.
Variations
- Simpler version: Start with just one Zap — the interview reminder. It's the highest-value single touchpoint (prevents no-shows) and the most straightforward to set up. Get that one running before adding the others.
- Extended version: Add a Zap that fires 30 days after a candidate is marked "Placed" and sends a check-in message. "Hi [Name], it's been a month since you started at [Client]. How's it going?" This is your 30-day retention touchpoint — catches at-risk placements before they become early terminations. Also feeds back into your re-engagement pipeline 6–12 months later.
What to Do Next
- This week: Build and test Zap 1 (Submitted → email). Run one real candidate through it. Confirm the email is correct and timely.
- This month: Add the remaining 4 stage Zaps. Run 10 candidates through the full automated pipeline. Compare your ghosting rate before and after.
- Advanced: Add a Zap that writes to a Google Sheet each time a stage change happens. You now have a real-time pipeline tracker that updates automatically — no more manual pipeline exports from Bullhorn.
Advanced guide for staffing recruiter professionals. These techniques use more sophisticated AI features that may require paid subscriptions.