How to A/B Test Two Versions of Your Sales One-Pager
Every sales team has this argument: the feature-tour one-pager versus the customer-story one-pager, settled by whoever argues longest. Attachments can't end the debate — both versions disappear into inboxes and return nothing.
Tracking links can. Split your next send down the middle, give each half a different variant, and a week later the reading data calls the winner — not the loudest voice in the room.
Make it a fair fight
Change one variable. Here that's the framing — Variant A tours the features, Variant B tells one customer's outcome story — with the same offer, same design, same send day. Upload both as private documents:
curl -X POST https://apdf.io/api/docs \
-H "Authorization: Bearer $API_TOKEN" -H "Accept: application/json" \
--data-urlencode "file=https://your-site.example/onepager-a.pdf" \
--data-urlencode "name=Reporting One-Pager — Variant A" \
-d "is_public=0"
# repeat for Variant B — note both doc_ids
Split the list mechanically
No cherry-picking — alternate rows of the contact CSV so neither variant gets the warmer half. One loop mints the links:
i=0
while IFS=, read -r NAME EMAIL; do
DOC=$([ $((i % 2)) -eq 0 ] && echo "$A_ID" || echo "$B_ID")
curl -s -X POST "https://apdf.io/api/docs/$DOC/links" \
-H "Authorization: Bearer $API_TOKEN" -H "Accept: application/json" \
--data-urlencode "name=$NAME" --data-urlencode "email=$EMAIL" -o /dev/null
i=$((i+1)); sleep 1 # stay under the API rate limit
done < <(tail -n +2 contacts.csv)
Ten contacts in, five links on each variant out. Mail-merge each half its own URLs and the experiment is live — every open and every second of reading now lands on the right side of the scoreboard, attributed by name.
Read the scoreboard
A week later, one call per variant settles it:
$ curl -s "https://apdf.io/api/docs/$A_ID/analytics" -H "Authorization: Bearer $API_TOKEN" \
-H "Accept: application/json" | jq '.data | {sessions, unique_viewers, avg_duration_ms}'
{
"sessions": 4,
"unique_viewers": 4,
"avg_duration_ms": 13500
}
$ curl -s "https://apdf.io/api/docs/$B_ID/analytics" -H "Authorization: Bearer $API_TOKEN" \
-H "Accept: application/json" | jq '.data | {sessions, unique_viewers, avg_duration_ms}'
{
"sessions": 7,
"unique_viewers": 5,
"avg_duration_ms": 43429
}
Reading the numbers like an experimenter:
- Dwell time is the verdict — 13.5 versus 43.4 seconds average on the same-length page. Variant B held people three times longer.
- Re-opens are the tell — B logged 7 sessions from 5 viewers: two people came back. Nobody returned to A.
- Reach differed too — 4 of 5 opened A, 5 of 5 opened B. With identical subject lines, that's noise; log it, don't celebrate it.
- Completion can't referee a one-pager — it reads 100% on both sides the moment anyone opens page one of one. For single-page tests, dwell and re-opens carry the decision.
Call it honestly, then ship the winner
Five readers per arm is a directional test, not a p-value — treat a 3× dwell gap as a confident direction and anything under 1.5× as a tie. Send the winner to the rest of the list (the bulk links script scales the mail merge), and keep the loser's link set live: stragglers who open late keep feeding the data.
Then test the next single variable — subject line, opening claim, the case study you lead with. The scoreboard's already built.
Where to go from here
The experiment machinery generalizes — same links, bigger questions.