The Scenario
You are a lifecycle marketer. You have 400 high-value customers in a Google Sheet, email in column A, unique coupon code in column B. Each customer gets a different code, their own personally assigned discount tied to their account.
Your job is to send each one eSputnik prepared message template ID 8823 with their individual coupon injected as the "promo_code" parameter. The campaign window is 24 hours before the codes expire tomorrow.
The bad version of this task:
- You export the sheet, open eSputnik's send interface, and realize there is no batch-send UI for prepared messages with per-recipient parameters
- You look at the API docs and realize you need to call the send endpoint once per recipient
- You write a script, or ask a developer to write one, to loop through 400 rows and fire 400 API calls with the right coupon code per call
- The script runs but 12 calls fail on rate limit errors and you do not notice until the customer service team gets questions about codes that never arrived
- The 12 customers whose codes did not send are your highest-value accounts.
The fast version is one prompt.
The Easy Way: One Prompt in SheetXAI
SheetXAI reads the sheet, handles the per-row parameter injection, and calls eSputnik's send API for each recipient without you writing a single line of code.
Open the SheetXAI sidebar and type:
Send eSputnik prepared message template ID 8823 to every contact in column A of my sheet — inject the coupon code from column B as the 'promo_code' parameter for each recipient. Write "sent" or the error message into column C for each row.
SheetXAI loops through every row, sends the template to each email address with that row's coupon code injected, and writes the result back into column C. You can see at a glance which sends succeeded and which did not.
What You Get
400 personalised sends from a single prompt, with per-row confirmation:
- Each recipient gets their unique code — column B drives the parameter injection, one code per person
- Column C shows the status per row — "sent" or the exact error, not a silent failure
- Failed rows are identifiable immediately — you know within minutes which accounts need a follow-up, before the 24-hour window closes
The per-row status column is the key. When you send 400 emails through a script that only logs totals, you do not know which 12 failed. When SheetXAI writes the result per row, you can filter to errors and re-run only those rows in a second prompt.
What If the Data Is Not Quite Ready
Coupon sheets from promotions platforms are rarely clean. SheetXAI handles the validation and the send in the same prompt.
When some coupon codes have already been used
Your promotions platform flagged 15 codes as already redeemed. They are still in column B but should not go out.
Before sending, check whether each coupon code in column B appears in the 'Redeemed Codes' tab in column A. For any match, skip the send and write "SKIPPED — already redeemed" in column C. For all others, send eSputnik template 8823 with the coupon as 'promo_code' and write the send status in column C.
When some emails are duplicated in the sheet
The promotions team merged two lists and did not deduplicate. Some customers appear twice.
Deduplicate the rows in this sheet by email address in column A, keeping the first occurrence. Then send eSputnik template 8823 to each unique email with the coupon from column B injected as 'promo_code'. Write the send status into column C.
When you only want to send to customers above a spend threshold
Column D has each customer's lifetime spend. You want to reserve this campaign for customers over £500.
Filter to rows where column D is greater than 500. Send eSputnik template 8823 to each qualifying email with the coupon from column B as 'promo_code'. Write the send status into column C. For rows that were filtered out, write "SKIPPED — below threshold" in column C.
When the coupon format needs to be transformed before sending
Your promotions platform exported codes in uppercase. The eSputnik template expects lowercase codes because the redemption system is case-sensitive.
Convert all coupon codes in column B to lowercase. Then send eSputnik template 8823 to every email in column A with the lowercase coupon injected as 'promo_code'. Write "sent" or the error into column C. After all sends, write the total sent count into cell D1.
The pattern: instead of validating the data separately and then handing it to a developer to script the send, you ask for validation, transformation, send, and confirmation all in one prompt. The 24-hour window stays intact.
Try It
Get the 7-day free trial of SheetXAI and open any sheet with recipients and personalisation data, then ask it to send the prepared eSputnik message to each row. The eSputnik integration is included in every SheetXAI plan. See also how to bulk-import contacts from a sheet or the eSputnik in Google Sheets overview.
