Back to Vapi in Google Sheets
SheetXAI logo
Vapi logo
Vapi · Google Sheets Guide

Bulk Create Vapi Evals From a Google Sheet of Test Scenarios

2026-05-14
5 min read

The Scenario

You are the QA engineer on a team shipping a new customer support voice assistant. Your test plan has 20 conversation scenarios — each one has a name, a description, and a mock conversation JSON. They live in a Google Sheet because that is where the product team writes specs.

Creating 20 Vapi evals by hand means 20 trips through the Vapi dashboard or 20 API calls you have to write and fire one at a time. You have a sprint demo tomorrow and this was supposed to be done yesterday.

The bad version:

  • Open the Vapi dashboard, navigate to Evals, click New Eval
  • Copy the eval name from column A of your sheet, paste it into the form, copy the description from column B, paste it, format the mock conversation JSON from column C into whatever the form expects
  • Save, go back to the list, start the next one
  • Realize on eval 12 that the form has a character limit on descriptions and three of yours are too long

The sprint demo is in 14 hours. You have 20 evals to create. This is not a good use of those hours.

The Easy Way: One Prompt in SheetXAI

SheetXAI is an AI agent that lives inside your Google Sheet. It reads your eval definitions directly from the sheet and creates each one in Vapi through the built-in integration — one operation for all 20 rows.

Read my Google Sheet where each row defines a Vapi eval (columns: name, description, mock_conversation_json) and create each eval in Vapi

What You Get

  • All 20 evals created in Vapi in a single operation
  • Each eval gets its name, description, and mock conversation from the corresponding row
  • SheetXAI reports which evals were created successfully and flags any rows that failed

What If the Data Is Not Quite Ready

Some rows are draft scenarios not ready for creation yet — marked with 'draft' in column D

Read my Google Sheet where each row has an eval name in column A, description in column B, mock conversation JSON in column C, and status in column D — create a Vapi eval for every row where column D is not 'draft'

The mock conversation JSON in column C has inconsistent formatting

Read my Google Sheet where column A is eval name, column B is description, and column C is mock conversation JSON — normalize the JSON in column C to valid format before creating each Vapi eval

You need to create evals in batches of 5 to stay within rate limits

Read my Google Sheet where column A is eval name, column B is description, column C is mock conversation JSON — create Vapi evals for rows 2 through 6 only

Validate, create, and log results in one shot

Read my Google Sheet where column A is eval name, column B is description, column C is mock conversation JSON — skip any row where column A or column C is empty — create Vapi evals for all remaining rows and write 'created' or the error message into column D of each row

Building the validation and the result logging into the prompt means you end with a sheet that tells you exactly what was created and what was not, without a second operation.

Try It

Get the 7-day free trial of SheetXAI and open the Google Sheet where your conversation test scenarios live, then ask it to create the Vapi evals from the rows. For related tasks, see how to export your scorecard inventory or export the full call log.

Stop memorizing formulas.
Tell your spreadsheet what to do.

Join 4,000+ professionals saving hours every week with SheetXAI.

Learn more