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

Bulk Send Postcards From a Google Sheet Campaign List

2026-05-14
5 min read

The Scenario

Your retail chain just wrapped a loyalty program audit. You have 300 customers in the 'Loyalty Members' sheet — Name in column A, Address1 through Zip in columns B–E — plus a campaign postcard with the front image URL in column F and the back image URL in column G. The art director signed off on the design yesterday. The marketing director wants all 300 in the mail today.

You have access to DocuPost. You have the sheet. What you do not have is a way to get 300 rows of postcard data into the DocuPost dashboard without spending the rest of your afternoon on it.

The bad version:

  • Log into DocuPost, start a new postcard campaign, and begin entering recipients one by one — Name, Address1, City, State, Zip, paste the front image URL, paste the back image URL.
  • Realize somewhere around recipient 20 that the front and back image URLs are the same for every row, which means you could have batched this, but you are already 20 deep in manual entry and there is no obvious way to pivot.
  • Finish recipient 47 and get pulled into a meeting. Come back and lose track of which row you were on.

Three hundred postcards is not a job for a dashboard UI. It is a job for a spreadsheet with an API connection.

The Easy Way: One Prompt in SheetXAI

SheetXAI is an AI agent that lives inside your Google Sheet. It reads the loyalty member list, understands the column layout, and through its built-in DocuPost integration sends all 300 postcards in one operation. You describe what you want — it handles the dispatch.

Open the SheetXAI sidebar and use this prompt:

Read the 'Loyalty Members' sheet (columns: Name, Address1, City, State, Zip), check DocuPost account balance, and send a postcard to each recipient using the front image URL in column F and back image URL in column G.

What You Get

  • SheetXAI checks your DocuPost balance before starting — if the account cannot cover 300 postcards, it surfaces the current balance and stops before any charges are incurred.
  • For each row dispatched successfully, it writes "Sent" into column H.
  • Rows where the dispatch fails — a malformed address, an inaccessible image URL — get a specific error message in column H so you know exactly which recipients to follow up on.
  • When the run completes, your sheet is the audit trail: every recipient, every outcome, every DocuPost API response, all in column H.

What If the Data Is Not Quite Ready

The image URLs are inconsistent across rows

Most rows share the same campaign image URLs. But 18 rows in a "VIP" segment need a different front image — the URL is in column I instead of column F.

Read the 'Loyalty Members' sheet. For rows where column J = 'VIP', use the front image URL in column I and the back image URL in column G. For all other rows, use column F as the front image and column G as the back. Send a DocuPost postcard to every recipient using columns A–E for the address, then write 'Sent' in column H.

Some addresses are missing zip codes

Column E has blank cells for 12 rows — someone pulled the list before the zip code enrichment ran.

Before sending postcards from the 'Loyalty Members' sheet, check column E for blank zip codes. For any row where column E is empty, write 'MISSING ZIP — SKIPPED' in column H and skip that row. For all remaining rows, send a DocuPost postcard using columns A–E and image URLs in F and G, then mark column H as 'Sent'.

The campaign list is split across two sheets by region

'West Region' and 'East Region' tabs both have the same column structure. The campaign runs across both.

Read all rows from the 'West Region' sheet and the 'East Region' sheet. Send a DocuPost postcard to every recipient across both tabs using columns A–E for the address and columns F–G for the front and back image URLs. Write 'Sent' in column H of whichever tab each row came from.

Balance check, dedup, send, and mark — all in one

Get the DocuPost account balance. If balance is at least $150, read the 'Loyalty Members' sheet, remove any duplicate rows where columns A and E (Name and Zip) match, send a postcard to each remaining recipient using columns A–E for the address and columns F–G for the image URLs, and write 'Sent' in column H. If any row fails, write the failure reason in column H instead. If the balance is under $150, put 'BALANCE TOO LOW — current: $X' in cell A1 and stop.

The pattern: ask for the cleanup and the action in a single prompt. One operation instead of three.

Try It

Open your loyalty customer sheet, your event attendee list, or any collection of physical addresses you need to reach — get the 7-day free trial of SheetXAI and send the whole postcard batch through DocuPost without touching the dashboard. For letter campaigns, see the bulk letter spoke, or return to the DocuPost hub overview.

Stop memorizing formulas.
Tell your spreadsheet what to do.

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

Learn more