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.
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?
What happens if a candidate skips stages or gets moved backward?
How is time in stage calculated?
Will this overwrite existing rows?
Can I run this for only certain jobs or departments?
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.