Back to Blog
Automation Workflows

Streamline Interview Scheduling: An n8n Workflow for Greenhouse, Slack, and Google Calendar

n8n
n8n Resources Team
April 3, 2026

The High Cost of Manual Interview Coordination

For any growing company, the hiring process is a critical function. But a key part of that process—interview scheduling—is often a bottleneck riddled with manual tasks. Coordinating between recruiters, hiring managers, and candidates involves a constant stream of emails, calendar checks, and manual updates in your Applicant Tracking System (ATS).

This manual coordination is not just slow; it's prone to error. A delayed notification can leave a top candidate waiting, while a missed calendar entry can lead to embarrassing scheduling conflicts. The time your team spends on administrative tasks is time they aren't spending on finding and evaluating great talent.

This article provides a practical, step-by-step guide to building an n8n workflow that automates this entire process. We'll connect Greenhouse, a leading ATS, to Slack and Google Calendar to create an instant, efficient, and error-free interview coordination system.

Why Automate Your Interview Scheduling Workflow?

Connecting your ATS to your communication and calendar tools with n8n solves several key problems:

  • Reduce Time-to-Hire: Instantly notify the hiring team the moment a candidate is ready for an interview, eliminating communication delays.
  • Eliminate Manual Errors: Automate notifications and calendar holds to prevent missed steps or double-bookings.
  • Improve Team Visibility: Keep the entire hiring team informed in a dedicated Slack channel, providing a central place for updates.
  • Enhance Candidate Experience: A faster, more professional scheduling process reflects well on your company and keeps candidates engaged.

The Tools You'll Need

To build this workflow, you'll need credentials and basic access for the following platforms:

  • n8n: The core of our automation workflow.
  • Greenhouse: Your Applicant Tracking System. You'll need API key access to use webhooks and fetch data.
  • Slack: For real-time team notifications.
  • Google Calendar: To create placeholder events on the hiring team's calendars.

Example n8n Workflow: From Candidate Stage Change to Team Alert

Our goal is to build a workflow that triggers whenever a candidate is moved to an interview stage in Greenhouse. The workflow will then fetch the relevant details, notify the hiring team in Slack, and block out time on the hiring manager's calendar.

Here is the step-by-step process to build it in n8n.

Step 1: Trigger the Workflow with a Greenhouse Webhook

The entire process starts inside your ATS. We need Greenhouse to tell n8n whenever a candidate's stage changes. A webhook is the perfect tool for this real-time communication.

  1. In n8n: Create a new workflow and add a Webhook node. This will generate a unique URL.

  2. In Greenhouse: Navigate to Dev Center > Web Hooks > Web Hooks. Create a new webhook.

  3. Configure the Webhook: Give it a name like "n8n Interview Stage Change". Paste the n8n Webhook URL into the "Endpoint URL" field. For the "When" event, select "Candidate has changed stage". Save the webhook.

  4. Test the Trigger: In n8n, put your Webhook node in "Listen" mode. Go to a test candidate in Greenhouse and move them to an interview stage. You should see the data from Greenhouse appear in the n8n node.

Step 2: Fetch Full Candidate and Job Details

The webhook payload from Greenhouse provides IDs, but not always the full context we need, like the hiring manager's email or the full job title. We'll use the Greenhouse node to fetch this extra information.

  1. Add a Greenhouse node to your workflow, connecting it after the Webhook node.

  2. Set the Resource to Candidate and the Operation to Get.

  3. In the Candidate ID field, use an expression to pull the candidate_id from the Webhook node's output. It will look something like {{ $json.body.payload.candidate.id }}.

  4. You can chain another Greenhouse node or use an HTTP Request node to fetch job details (like the hiring manager) if it's not included in the candidate payload.

Step 3: Send a Formatted Notification to Slack

Now that we have all the information, we can alert the hiring team in a structured, actionable way.

  1. Add a Slack node to your workflow.

  2. Connect to your Slack workspace credentials.

  3. In the Channel field, specify the channel where you want to send notifications (e.g., hiring-alerts).

  4. Craft your message in the Text field. Use expressions to pull in dynamic data from the previous nodes. A good message format would be:

New Interview Ready for Scheduling!

Candidate: {{ $('Greenhouse').item.json.first_name }} {{ $('Greenhouse').item.json.last_name }}

Job: {{ $('Greenhouse').item.json.applications[0].jobs[0].name }}

Stage: {{ $json.body.payload.application.stage.name }}

Greenhouse Link: https://app.greenhouse.io/people/{{ $json.body.payload.candidate.id }}

This gives the hiring team all the context they need in one place.

Step 4: Create a Placeholder Event in Google Calendar

To prevent scheduling conflicts, the final step is to automatically create a tentative hold on the hiring manager's calendar.

  1. Add a Google Calendar node.

  2. Set the Resource to Event and Operation to Create.

  3. In the Calendar field, select the hiring manager's primary calendar.

  4. For the Title field, use an expression like: Interview Hold: {{ $('Greenhouse').item.json.first_name }} for {{ $('Greenhouse').item.json.applications[0].jobs[0].name }}.

  5. Set the Start Time and End Time. You can set a default duration (e.g., 30 minutes from the time the workflow runs) or get more advanced by parsing data.

  6. Important: In the Options, you can add the hiring manager as an attendee and mark the event as tentative.

Practical Tips and Next Steps

This workflow is a powerful starting point. Here are a few ways to extend it:

  • Use a Switch Node: Add a Switch node after the webhook trigger to handle different interview stages. For example, a "Phone Screen" stage might notify only the recruiter, while a "Final Round" stage notifies the entire interview panel.
  • Add Action Buttons in Slack: Enhance your Slack message with buttons that link directly to the candidate's resume or a feedback form.
  • Two-Way Synchronization (Advanced): For a more complex setup, you could build a second workflow that listens for updates to the calendar event and pushes a status change back to Greenhouse via its API.

Conclusion: Reclaim Your Team's Time

By automating the coordination tasks in your hiring pipeline, you're not just saving a few minutes per candidate—you're building a more scalable, responsive, and professional recruiting operation. This n8n workflow turns a manual, multi-step process into a single, automated action, freeing your team to focus on what truly matters: finding the right people to build your business.

Enjoyed this article?

Share it with others who might find it useful