Log every Ashby stage change to a Google Sheets pipeline tracker

Append a structured row to Google Sheets every time an Ashby application moves stage, so you can analyze funnel conversion and time in stage outside the ATS.

Deterministic Code
AshbyGoogle SheetsHR & PeopleOperationsData SyncNotifications & Alerts

Build a code workflow that logs every Ashby application stage change as a structured row in Google Sheets, so we can analyze funnel conversion and time in stage outside the ATS.

Trigger: Ashby poll trigger on the application_changed_stage event. Every time an application moves to a new stage, the workflow should fire once with the application id and the stage transition payload.

Steps:

1. Call Ashby Get Application Info with the application id from the trigger to resolve the candidate id, job id, current stage, current stage entered timestamp, and the credited recruiter.

2. Call Ashby Get Candidate Info with the candidate id to resolve the candidate's full name.

3. Call Ashby Get Job Info with the job id to resolve the role title and department.

4. Call Ashby List Application History for the application id. From the history, identify the prior stage (the stage immediately before the new stage), the timestamp the candidate entered the prior stage, and the timestamp they left it. Compute days_in_prior_stage as the integer number of whole days between those two timestamps.

5. Call Google Sheets Append Values to append exactly one row to the pipeline_events tab of the configured spreadsheet. Use a fixed column order: event_timestamp, application_id, candidate_name, role, department, recruiter, prior_stage, new_stage, days_in_prior_stage. event_timestamp is the timestamp the application entered the new stage. If any optional field cannot be resolved, write an empty string for that cell rather than skipping the row.

This workflow is intentionally deterministic. There is no LLM step, no drafting, and no judgement. Every application_changed_stage event becomes exactly one row in the sheet, and the sheet is the source of truth for funnel reporting and quarterly hiring audits.

The spreadsheet id, sheet tab name (default pipeline_events), and column order should be configurable inputs at workflow setup so the user can repoint it without editing code.

Additional information

What does this prompt do?
  • Watches Ashby for any application that moves to a new stage and fires the moment it happens.
  • Looks up the candidate, role, department, recruiter, prior stage, new stage, and how long the candidate sat in the prior stage.
  • Appends one tidy row per event to a pipeline_events tab in your Google Sheet, in a fixed column order.
  • Gives you a clean, append-only log you can pivot for funnel conversion, time in stage, and quarterly hiring audits.
What do I need to use this?
  • An Ashby account with permission to read applications, candidates, jobs, and application history.
  • A Google account with edit access to the destination Google Sheet.
  • A Google Sheet with a tab named pipeline_events and a header row matching the columns you want to track.
How can I customize it?
  • Change which columns get logged, for example add source, location, or current interviewer.
  • Point it at a different tab or a different spreadsheet, for example one sheet per quarter.
  • Filter to specific departments or job types if you only want to track a subset of the pipeline.

Frequently asked questions

Do I need to write any formulas in Google Sheets?
No. The workflow appends one row per stage change. Build your conversion and time in stage analysis on top of that raw log using pivot tables or whatever BI tool you prefer.
What happens if a candidate skips stages or gets moved backward?
Every stage change is logged as its own row, including backward moves. The prior stage and new stage columns make the direction obvious when you analyze the data.
How is time in stage calculated?
We pull the application history and compute the number of days between when the candidate entered the prior stage and when they left it. The result is written to its own column on each row.
Will this overwrite existing rows?
No. The log is append only. Each stage change produces one new row at the bottom of the pipeline_events tab, so historical data is preserved.
Can I run this for only certain jobs or departments?
Yes. You can filter the workflow to only log events for specific departments, job types, or recruiters when you set it up.

Make your hiring funnel reportable outside the ATS.

Connect Ashby and Google Sheets once, and every stage change becomes a row you can pivot, chart, or audit.