Real Estate: How to Share Exposés Securely and Spot Serious Buyers
Ten people request the exposé; one of them is a buyer. The other nine are neighbors, dreamers and portal-scrollers — and until viewing day you can't tell them apart, because a PDF attachment reports nothing back and keeps circulating long after the sale closes.
Send each prospect a personal tracked link instead, and the exposé starts answering the only question that matters: who's calculating, and who's just looking?
One exposé, one link per prospect
Upload the exposé privately, then mint a link for every inquiry — the listing stays in your hands, and every reader arrives with a name:
curl -X POST https://apdf.io/api/docs \
-H "Authorization: Bearer $API_TOKEN" -H "Accept: application/json" \
--data-urlencode "file=https://your-site.example/expose-lindenstrasse-12.pdf" \
--data-urlencode "name=Exposé — Lindenstraße 12" \
-d "is_public=0"
curl -X POST https://apdf.io/api/docs/2b55f-d1f11-042a8/links \
-H "Authorization: Bearer $API_TOKEN" -H "Accept: application/json" \
--data-urlencode "name=Familie Arslan" \
--data-urlencode "email=arslan@familie.example"
The reply to an inquiry is now a personal URL instead of an attachment — same email, better exposé: it opens in the browser on any device, and it can be taken back.
Watch the week's reading
A few days after sending, the sessions list reads like a buyer ranking:
curl -s "https://apdf.io/api/docs/2b55f-d1f11-042a8/analytics/sessions" \
-H "Authorization: Bearer $API_TOKEN" -H "Accept: application/json" |
jq -r '.data[] | "\(.recipient.name): \(.pages_viewed)/6 pages · \(.total_duration_ms)ms · \(.created_at)"'
Familie Arslan: 3/6 pages · 245000ms · 2026-07-21 21:18:20.000
Stefan Brauer: 2/6 pages · 22000ms · 2026-07-20 15:17:20.000
Carola Nguyen: 6/6 pages · 133000ms · 2026-07-20 10:43:20.000
Familie Arslan: 6/6 pages · 265000ms · 2026-07-19 19:00:20.000
Jens Petersen: 2/6 pages · 32000ms · 2026-07-19 12:17:20.000
- Jens flipped through the photos on his phone for half a minute — a looker.
- Stefan peeked at the price page and left after 22 seconds — priced out, no follow-up needed.
- Carola made one careful full pass — warm, worth a viewing invitation.
- The Arslans appear twice — a full evening read, then a return visit two days later. Re-opens are the strongest intent signal a document can send.
- Mona never opened — check the email landed before writing her off.
Confirm it page by page
The session detail turns “they came back” into “here's what they came back for”:
GET /api/docs/2b55f-d1f11-042a8/analytics/sessions/8GkCUcbumRPXOSOd
"pages": [
{ "page": 1, "views": 0, "duration_ms": 0, "viewed": false },
{ "page": 2, "views": 1, "duration_ms": 30000, "viewed": true },
{ "page": 3, "views": 1, "duration_ms": 95000, "viewed": true },
{ "page": 4, "views": 0, "duration_ms": 0, "viewed": false },
{ "page": 5, "views": 1, "duration_ms": 120000, "viewed": true },
{ "page": 6, "views": 0, "duration_ms": 0, "viewed": false }
]
No cover, no location fluff — the return visit went straight to page 3 (floor plan, 95 seconds) and page 5 (price & running costs, 2 minutes). Someone measuring furniture against a floor plan and re-reading the Hausgeld isn't browsing — call them first, and walk into the viewing knowing exactly what they'll ask about.
Sold? Turn the lights off
The day the notary appointment is booked, every circulating exposé copy becomes a liability — old asking prices have a way of resurfacing. One loop revokes the whole prospect list:
API="https://apdf.io/api/docs/2b55f-d1f11-042a8/links"
curl -s "$API" -H "Authorization: Bearer $API_TOKEN" -H "Accept: application/json" |
jq -r '.data[] | select(.is_active) | .token' |
while read -r token; do
curl -s -X POST "$API/$token/deactivate" \
-H "Authorization: Bearer $API_TOKEN" -H "Accept: application/json" > /dev/null
echo "Revoked $token"
sleep 1
done
Every link now lands on a neutral 403 page — no document, not even its name — while your reading history stays intact for the next listing's outreach list. The revocation tutorial has the full lifecycle, including restoring a link if the sale falls through.
Where to go from here
The same signals, wired deeper into your day.
Related tutorials
Freelancers: A Proposal Workflow Without Per-Seat Tools
Proposal software is priced for sales teams; freelancers just need the signal. A one-person workflow on the free plan: links per contact reveal the 12-minute open, the internal forward, and the 21:21 return visit that camped on the price page — plus the three-slot pipeline trick and honest edges.
A/B Test Two Versions of Your Sales One-Pager
End the which-version argument with data: split the contact list down the middle, give each half its own variant behind tracking links, and let dwell time call it — 13.5 versus 43.4 seconds average, two re-opens to zero, and the outcome-story variant ships to the rest of the list.
Track Investor Updates: Know Who Actually Reads Them
Monthly updates go out into silence — reading behavior is the RSVP investors never send. Per-investor links on each update build an opens matrix and a depth ranking, and three months later your next raise starts with a warmest-first call list instead of a gut feeling.