The Scenario
You are a lifecycle marketer. You have 400 high-value customers in an Excel workbook on the "Recipients" tab: email in column A, unique discount value in column B. Each customer gets a different discount percentage, personalised based on their purchase tier.
Your job is to send each one eSputnik message template ID 9901 with their individual discount injected as a personalisation parameter. The campaign window is tomorrow morning before a competing offer from a partner brand hits their inbox.
The bad version of this task:
- You open eSputnik and look for a way to batch-send a template with per-recipient parameters
- There is no UI for this. It requires the API
- You read the API docs and find the send endpoint, but each call needs a distinct recipient and a distinct parameter object
- You write a Power Automate flow to loop through the workbook rows, but Power Automate does not handle dynamic parameter objects cleanly without custom expressions
- The flow runs but fails on 30 rows with a "null parameter" error and you cannot tell which rows without checking the run history one by one
- The next morning 30 customers did not get their personalised offer and the window has closed.
The fast version is one prompt.
The Easy Way: One Prompt in SheetXAI
SheetXAI reads the workbook, handles the per-row parameter injection, and calls eSputnik's send API for each recipient without a Power Automate flow.
Open the SheetXAI sidebar and type:
For each email in column A and discount value in column B of my Excel 'Recipients' tab, send eSputnik message 9901 with the discount injected as a personalisation parameter. Write the send result for each row into column C.
SheetXAI loops through every row, sends the template to each email address with that row's discount value injected, and writes the status back into column C. You can see at a glance which sends worked and which did not.
What You Get
400 personalised sends from a single prompt, with per-row confirmation in the workbook:
- Each recipient gets their individual discount — column B drives the injection, one value per person
- Column C shows the result per row — "sent" or the exact error per recipient, not a pass/fail total
- Failed rows identifiable immediately — you know within minutes which 30 accounts need follow-up before the window closes
- No Power Automate flow required — no custom expressions, no premium connectors, no run history to dig through
The per-row status column is what you use to re-run failures. Filter column C to "error," fix the data issue if there is one, and re-prompt SheetXAI to send only the flagged rows. That takes two minutes instead of rebuilding a Power Automate flow.
What If the Data Is Not Quite Ready
Discount lists from CRM or loyalty platforms are rarely clean when they arrive. SheetXAI handles validation and the send together.
When some discount values are missing
A handful of rows in column B are blank because the loyalty platform had a data gap for those customers.
For each email in column A and discount in column B of the 'Recipients' tab, send eSputnik message 9901 with the discount as a personalisation parameter. If column B is blank for a row, skip the send and write "SKIPPED — missing discount" in column C.
When the workbook has duplicate email addresses
Two tabs were merged and some customers appear twice. You only want to send once per person.
Deduplicate the 'Recipients' tab by email address in column A, keeping the row with the higher discount value in column B. Then send eSputnik message 9901 to each unique email with their discount injected as a parameter. Write the send result into column C.
When only certain customer tiers should receive this message
Column C already has a tier label: "Gold," "Silver," "Bronze." This campaign is for Gold and Silver only.
Filter the 'Recipients' tab to rows where column C is 'Gold' or 'Silver'. Send eSputnik message 9901 to each qualifying email with the discount from column B injected as a parameter. Write the send result into column D for each row. For Bronze rows, write "SKIPPED — tier excluded" in column D.
When you need to convert discount values before sending
Column B has discount percentages as decimals (0.20, 0.15) but the eSputnik template parameter expects whole numbers (20, 15).
Convert all values in column B of the 'Recipients' tab from decimals to whole numbers by multiplying by 100. Then send eSputnik message 9901 to each email in column A with the converted discount value injected as a personalisation parameter. Write the send result into column C and the total successful send count into cell D1.
The pattern: parameter validation, conversion, send, and confirmation in one prompt. The campaign goes out on schedule.
Try It
Get the 7-day free trial of SheetXAI and open any Excel workbook 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 into eSputnik from Excel or the eSputnik in Excel overview.
