Skip to main content
Back to Blog
Direct Mail MarketingOctober 5, 2026

How to Build a Real Estate Prospecting Spreadsheet for Direct Mail

W

WriteToMail Team

Every successful direct mail campaign starts before you design a single postcard. It starts with a spreadsheet.

For real estate agents, a clean, well-structured CSV file is the difference between a campaign that reaches 500 qualified prospects and one that bounces, mis-delivers, or wastes your budget on the wrong homeowners. Once you have that file ready, sending bulk direct mail from a spreadsheet takes minutes — not days.

This guide walks you through building that spreadsheet from scratch: where to pull your prospect data, which columns to include, how to clean the file before uploading, and how to launch a bulk postcard mailing through WriteToMail without touching a printer or making a post office run.


Prerequisites

Before you start, you'll need:

  • A spreadsheet application (Google Sheets or Microsoft Excel)
  • Access to your MLS, county assessor records, or a FSBO data source
  • A free or paid account on WriteToMail
  • 30–60 minutes for your first build (faster once you have a template)

By the end, you'll have a production-ready CSV file and your first bulk postcard campaign queued for delivery.


Step 1: Choose Your Prospect Segment

Before opening a spreadsheet, decide who you're targeting. Real estate prospecting direct mail works best when it's tightly focused. Broad lists produce low response rates. Specific lists produce appointments.

The three most productive segments for real estate agents:

Expired listings. These homeowners already wanted to sell. They're often frustrated with their previous agent and actively looking for alternatives. According to the Data & Marketing Association, direct mail response rates average 4.4% for prospect lists — expired listings typically beat this benchmark because the audience has demonstrated intent.

FSBOs (For Sale By Owner). These sellers are motivated but often underestimate the complexity of the transaction. A well-timed mailer positioning your services as complementary — not competitive — converts at meaningful rates.

Absentee owners. These are property owners whose mailing address differs from the property address. They're prime candidates for off-market deals and rental property sales. County assessor records are your primary source here.

Pick one segment per campaign. Mixing segments in a single CSV creates confusion in your messaging because each group needs a different headline and offer.


Step 2: Source Your Prospect Data

Your data quality determines your campaign quality. Here's where to pull it.

Expired Listings — MLS Access

If you have MLS access, you can pull expired listing reports directly. Filter by:

  • Status: Expired
  • Date range: Last 30–90 days (fresher is better — agents move fast on these)
  • Property type: Match your specialty (residential, condo, multi-family)

Export the report as a CSV or XLS file. You'll get property address, owner information if available, and listing details. Some MLS platforms require additional steps to access owner mailing addresses — check your local board's data policies.

FSBO Listings — Aggregator Sites

Sites like FSBO.com, Zillow (for-sale-by-owner filter), and Craigslist real estate sections list active FSBO properties with addresses. Manual compilation works for smaller lists. For volume, third-party data providers like REDX and Vulcan7 specialize in FSBO and expired lead data with verified contact information.

Absentee Owners — County Assessor Records

Every county in the United States maintains a public assessor database. Most are searchable online. You're looking for properties where the owner's mailing address differs from the property address — that's the absentee owner indicator.

Search your county assessor's website directly. Many counties allow bulk data exports. If yours doesn't, services like PropStream, BatchLeads, and List Source aggregate county data and let you filter by absentee ownership, equity percentage, and property type.


Step 3: Build Your Spreadsheet Structure

Open a blank Google Sheet or Excel file. Set up these columns in this exact order:

Column Header Name Notes
A first_name Owner's first name for personalization
B last_name Owner's last name
C property_address The physical address of the property
D property_city City of the property
E property_state State abbreviation (e.g., TX, CA)
F property_zip 5-digit ZIP code
G mailing_address Where to send the mail (same as property unless absentee)
H mailing_city City for mailing address
I mailing_state State for mailing address
J mailing_zip ZIP for mailing address
K listing_status Expired, FSBO, Absentee Owner — used for segmentation
L days_on_market Optional — useful for expired listing messaging

The mailing_address columns are critical and often skipped by first-timers. For expired listings and FSBOs, the mailing address and property address are usually the same — the owner lives there. For absentee owners, they're different. If you mix them up, your postcards go to empty houses.


Step 4: Populate and Format the Data

Import or paste your raw data into the spreadsheet. Then apply these formatting rules before you touch anything else.

Standardize all caps or title case — pick one. WriteToMail's variable fields will render exactly what you enter. "JOHN" on the postcard looks different from "John." Title case (first letter capitalized) reads more naturally.

Split full names into first and last. If your data came in as "John Smith" in one column, use Excel's Text to Columns feature or the SPLIT function in Google Sheets to separate them. You need first_name as its own column for personalization to work correctly.

Format ZIP codes as text, not numbers. Spreadsheet applications automatically strip leading zeros from ZIP codes. 02108 becomes 2108. This breaks USPS address validation. Format the ZIP columns as "Plain text" before entering data.

Remove duplicate addresses. Sort by mailing_address and delete duplicates. Sending two postcards to the same address wastes money and looks unprofessional.

Verify state abbreviations. Use the two-letter postal format: CA, TX, FL, NY. Spelled-out state names can cause address parsing errors.


Step 5: Cross-Check Mailing vs. Property Address

For every absentee owner in your list, confirm that the mailing_address field reflects where the owner actually receives mail — not the property address.

A simple rule: if listing_status = "Absentee Owner" and mailing_address = property_address, flag that row for manual review. Something is wrong. Either the source data combined them incorrectly, or this owner isn't actually absentee.

You can write a quick formula to catch this in Google Sheets:

=IF(AND(K2="Absentee Owner", G2=C2), "CHECK", "OK")

Any row that returns "CHECK" needs manual verification before you upload.


Step 6: Clean Your Data for Upload

Data cleaning is where most agents cut corners — and where most campaigns fail.

Run through this checklist before saving your final CSV:

  • No blank rows in the middle of the data
  • No merged cells (common when copying from MLS export tables)
  • No special characters in addresses (ampersands, hashtags, smart quotes)
  • Street abbreviations are consistent (St not Street, Ave not Avenue) — USPS standardizes these, but cleaner input helps
  • No rows where first_name is blank — these will generate awkward postcards ("Dear ,")
  • ZIP codes are 5 digits, formatted as text
  • The header row is Row 1, data starts in Row 2

When you're satisfied, go to File → Download → Comma Separated Values (.csv). You now have a clean, upload-ready file.

For a broader walkthrough of how CSV-based mailings work across business types, the bulk direct mail from spreadsheet setup guide covers additional formatting scenarios worth reviewing.


Step 7: Upload to WriteToMail and Map Your Fields

Head to WriteToMail and select postcard or letter depending on your campaign format.

Upload your CSV when prompted. WriteToMail's bulk mailing feature supports variable data mail merge, which means the columns in your spreadsheet map directly to placeholders in your postcard design. A field like {{first_name}} in your postcard copy automatically pulls "John" for one recipient and "Maria" for the next — no manual editing required.

Map your columns to the corresponding fields:

  • mailing_address, mailing_city, mailing_state, mailing_zip → recipient delivery address
  • first_name → personalization placeholder in your postcard copy
  • property_address → if you're referencing the property in your message body

Preview a sample before sending. Verify that names render correctly, addresses look complete, and the variable fields pulled the right data. One bad field mapping affects every piece in the batch.

If you're new to the postcard format itself, this online postcard mailing service guide covers design decisions, sizing, and how to structure a postcard that gets read.


Step 8: Segment and Send in Batches

Don't send all three prospect types in one campaign. Expired listings need different copy than absentee owners — the pain point, the offer, and the call to action are all different.

Sort your spreadsheet by listing_status, then create separate CSV exports for each segment:

  • expired_listings_[date].csv
  • fsbos_[date].csv
  • absentee_owners_[date].csv

Launch each as a separate campaign in WriteToMail with messaging tailored to that group. This takes an extra 20 minutes upfront and can double your response rate.

Real estate agents running consistent bulk postcard campaigns see response rates between 1–5%, depending on list quality and message relevance, according to benchmarks compiled by the USPS Office of Inspector General. On a 500-piece expired listing campaign, that's 5–25 inbound calls from sellers who already wanted to list.

For a deeper look at how bulk postcard mailing specifically serves real estate prospecting, the guide on bulk postcard mailing for real estate agents covers postcard design, variable data personalization, and cost-per-lead analysis for agents at every volume level.


Common Mistakes and How to Fix Them

Mistake: Using property address as the mailing address for absentee owners. Fix: Always cross-reference your source data. If you bought a list from a data provider, ask specifically whether the mailing address field reflects the owner's mailing address or the property address.

Mistake: Including rows with incomplete addresses. Fix: Filter your spreadsheet for blank cells in mailing_address, mailing_city, mailing_state, or mailing_zip. Delete or complete these rows before uploading. USPS cannot deliver to an incomplete address.

Mistake: Sending one generic message to every prospect type. Fix: Segment by listing_status and write separate postcard copy for each segment. Expired listing owners need to hear something different than a FSBO seller.

Mistake: Pulling stale expired listing data. Fix: The 30-day window is your sweet spot. Expired listings older than 90 days have usually been relisted, withdrawn, or converted by another agent. Fresher data means less wasted spend.

Mistake: Skipping the preview step before sending. Fix: Always preview at least 5 sample records in WriteToMail before launching a bulk send. Check that variable fields rendered correctly, addresses are complete, and formatting looks right on the actual postcard layout.


Next Steps and Related Resources

Once your spreadsheet is clean and your first campaign is live, the next move is building a repeatable system. Most top-producing agents run direct mail campaigns on a monthly cadence — refreshing their expired listing pull every 30 days and continuously adding new FSBOs from their pipeline.

A few resources to help you go deeper:

  • If you're deciding between postcards and letters for different prospect types, this format comparison breaks down when each works better with data to back it up.
  • If you want to understand how agents turn just-sold announcements into neighborhood farming campaigns, the real estate bulk postcard case study shows how the full workflow plays out with real campaign examples.
  • For anyone exporting prospect data from a CRM to feed into your mailing list, the guide on automated physical mail for CRM users covers how to connect your pipeline to physical mail sends without rebuilding your process from scratch.

The spreadsheet is the foundation. Get it right once, and every campaign after that gets faster and more targeted.


Sources

  1. Data & Marketing Association — Response Rate Report — direct mail response rate averages for prospect lists cited in Step 1
  2. USPS Office of Inspector General — Direct Mail Research — response rate benchmarks for postcard campaigns cited in Step 8
  3. REDX Real Estate Data Platform — referenced as a FSBO and expired lead data source in Step 2
  4. PropStream Real Estate Data — referenced as a source for absentee owner list building in Step 2
  5. BatchLeads Property Data — referenced as a county assessor data aggregator in Step 2
  6. Google Sheets Help — SPLIT Function — referenced for name splitting technique in Step 4
  7. USPS Postal Addressing Standards — basis for address formatting guidance throughout Steps 4 and 6
how-to

Ready to Try Direct Mail?

Create professional letters and we'll print and mail them for you. No stamps, no trips to the post office.