ReplyLabs
FeaturesPricingCompareFAQUse casesBlogHelpSetup
Sign inGet started free
Get started

Product

  • Features
  • Pricing
  • Compare
  • Roadmap

Resources

  • Use cases
  • Blog
  • Glossary
  • Cost calculator

Support

  • Setup Guide
  • Help Center
  • Contact Support
  • Report an Issue
  • Feature Requests

Company

  • Opt Out of Testing

Legal

  • Privacy Policy
  • Terms of Service
  • Cookie list
  • Subprocessors

Empra Consultancy LTD
hello@replylabs.io

ReplyLabs|PrivacyTermsCookiesSubprocessors

© 2026 Empra Consultancy LTD. All rights reserved.

All articles
AI in Google Sheets

AI personalisation at scale in a spreadsheet

Personalise outreach for thousands of rows with AI from a spreadsheet. The row-level prompt method, why it beats mail-merge tokens, and what it costs.

By Hugo Dupont · 6 min read

AI personalisation at scale in a spreadsheet means writing one instruction and running it over every row, so each prospect gets text built from their own data instead of a name swapped into a template. The reliable method is a sidebar add-on: you write a prompt once, reference your columns by header (for example {{Company}}), and the model runs on every selected row and writes the result back. This scales to thousands of rows because the work happens server-side, not in slow per-cell formulas. Below is the method, why it beats mail-merge, and what a run costs.

What does personalisation at scale actually mean?

Mail-merge personalisation drops a stored value into a fixed sentence: "Hi {{First name}}, I saw {{Company}} is hiring." Every recipient reads a near-identical line. That is substitution, not personalisation, and prospects spot it instantly.

AI personalisation at scale is different. The model reads each row's real data and writes a fresh sentence per row. Two rows with the same template can produce completely different openers because the underlying facts differ. Done across a whole list, every prospect receives copy that reads as if it were written for them, while you still wrote only one instruction. The full picture is in the AI in Google Sheets guide.

How do you personalise thousands of rows in Google Sheets?

The fastest path is a batched sidebar add-on like ReplyLabs. The steps:

  1. Put your prospect data in columns: company, role, a scraped detail, a verified email, whatever you have.
  2. Open the AI tab in the sidebar and write one prompt that references those columns by header.
  3. Select the row range you want to run.
  4. Check the cost preview for your row count.
  5. Click Run. Output lands in a new column, one row at a time, until the whole list is done.

Because rows are dispatched in parallel outside the spreadsheet, a list of several thousand rows completes without you babysitting it. This is the same engine behind bulk AI prompts in Google Sheets, pointed at outreach copy.

Why not just use an =AI() formula?

A cell formula that calls a model works for a handful of rows, then breaks on a real list. Apps Script kills any execution past six minutes, external-call quotas run out, and Sheets re-runs custom functions on every edit, so you get charged again for the same row. A batched add-on sidesteps all of this by running rows server-side and only once. The mechanics are covered in how to write an AI formula in Google Sheets.

What makes AI personalisation good rather than generic?

The output is only as specific as the data the prompt can see. A prompt that knows only a company name writes filler that could apply to anyone. Three things lift quality across a whole list:

  • Feed real facts, not just a name. Reference a scraped sentence from the prospect's site, a recent hire, or a verified field. The model writes about something true, so the line cannot be generic.
  • Use a pattern, not a wish. Do not ask the model to "write a great personalised email" for thousands of varied rows and expect consistency. Give it a clear shape: one observation, one relevance bridge, one short ask. Bucket your list and tune the prompt per bucket if segments differ.
  • Handle blanks explicitly. Add a rule such as "If {{Notes}} is empty, write a short neutral opener." This stops the model inventing facts on thin rows, which is the fastest way to burn a domain.

Lock the format too. Ask for "one sentence, no greeting" so every cell drops straight into your sequencing tool. For outbound specifically, see cold email from Google Sheets.

A practical personalisation prompt

A reusable shape for a first-line opener, referencing columns by header:

Write a one-sentence cold-email opener for {{First name}} at {{Company}}.
Base it on this fact: {{Scraped detail}}.
Make the line specific to that fact, not a generic compliment.
No greeting, no sign-off, under 25 words.
If {{Scraped detail}} is empty, write a neutral opener about {{Company}}'s industry.

Run this over a thousand rows and you get a thousand distinct openers, each grounded in that row's data. Refine the wording on a 10-row test selection first, then run the full list once you like the output.

What does it cost to personalise at scale?

ReplyLabs prices AI at the provider's raw cost times 1.25 plus a $0.0025 base fee per succeeded row, and only succeeded rows are charged. Cost is driven by tokens: a longer prompt and longer output mean more tokens per row, and you pay across every row. So a tight prompt that produces one short sentence is far cheaper at volume than a verbose one. The cost preview shows the exact figure before you run, and on Pro and Scale you can bring your own AI key and pay only the provider's raw rate. To model a specific list, use the AI cost calculator.

New accounts start with a free $20 credit, which covers thousands of short personalised lines before you spend anything. Start from the ReplyLabs home page.

Common questions

How many rows can I personalise at once?

Thousands. Because rows run server-side in parallel rather than as per-cell formulas, list size is not capped by the six-minute Apps Script limit that breaks script-based functions.

Will every row get different text?

Yes, as long as the prompt references row-level data. Two rows share the template but the substituted facts differ, so the model writes a distinct line for each.

How do I keep cost down at volume?

Keep prompts and outputs short, since cost scales with tokens per row across the whole list. A one-sentence output is much cheaper at scale than a paragraph. See the AI prompt definition for how the template maps to each row.

Does personalisation need verified data?

It needs accurate data. Feeding a scraped fact or a verified field makes the output specific and safe. Empty or wrong inputs push the model toward invented detail, so always include a fallback rule for blank cells.

Keep reading: AI in Google Sheets
Read the full guide: AI in Google Sheets: the complete guide
  • Best AI tools for Google Sheets
  • How to write an AI formula in Google Sheets
Definitions
AI promptToken (LLM)

Try it on your own list

ReplyLabs runs from a sidebar inside Google Sheets. Start free with $20 credit, no card needed.

Get started free