FEATURES › CONTACTS

Upload the file your software gave you

Excel .xlsx and .xls are first-class, right alongside CSV. Your practice-management, booking, or accounting system exports an Excel file, so that is what PostKnock takes. No "please convert to CSV UTF-8 comma-delimited" step, no reformatting, no CRM required.

Unlimited contacts on every plan, including Free. No $99/mo, no minimum, no time limit.

.xlsx

Modern Excel

.xls

Legacy Excel

.csv

Comma-separated

Zapier

6,000+ apps, all plans

The format is detected from the file itself, not from the extension you happened to save it as.

You see the import before it happens

Uploading does not write anything to your account. The file is staged, PostKnock proposes a mapping, and you confirm it. Only then does anything commit.

Your column Maps to Sample
Patient NameFull nameMaria Delgado
Mailing Address 1Street412 W Oak St
Postal CodeZIP2138
Home PhonePhone(617) 555-0142
Chart #External IDPT-90412
Last Visit ProviderCustom fieldDr. Okafor

Illustrative. Your real column names and real first rows appear in the Sample column, so you can tell at a glance whether a mapping is wrong before it matters.

Columns map themselves

"Patient Name", "Customer Name", "Client Name", "Mailing Zip", "Postal Code": PostKnock recognizes the header names real software actually emits, not just the tidy ones. Anything it does not recognize is shown to you as unmapped rather than silently dropped.

Phone coverage, up front

The preview counts how many rows actually have a phone number, so you know before importing how much of the list can receive a follow-up call. No surprise at wave 2.

The messy-spreadsheet problems, handled

Real exports are messy. These are fixed on import, not left for you to find after a hundred cards come back.

ZIP codes that lost a leading zero

Excel turns 02138 into 2138 the moment it treats the column as a number. PostKnock recognizes a four-digit ZIP and restores the leading zero. Every New England and New Jersey address on your list depends on this.

One "Name" column, no first and last

A single full-name column is split into first and last for you, so personalization still works. If a row has only a company and no person, the card mails to the company instead of being thrown away.

Columns you did not plan to map

Any extra column can be kept as a named custom field instead of being discarded: last-visit provider, plan type, service tier, whatever your system carries. You can also map a column to tags, and one cell holding "lapsed; ppo; north-office" becomes three tags.

Addresses that cannot be mailed

Address shape is validated on import and each contact carries a mailable flag. A contact with a bad or incomplete address is flagged rather than quietly costing you postage, and fixing the address flips it back to mailable automatically.

Re-import next month without creating duplicates

Map your system's own record number (chart number, customer ID, job number) to External ID, and PostKnock updates matching contacts instead of duplicating them. You can also tag the whole batch with its source system, so you always know which list a contact came from.

The safety check that stops a bad merge

If an External ID matches an existing contact but the first name is different, PostKnock refuses to merge them. That is the signature of a mis-mapped ID column, and merging would overwrite a real person's address with a stranger's. The row is reported back to you as a conflict, with the name it clashed with, and left untouched.

Your best contacts get mailed first

Most lists already carry some notion of who matters most, and almost nobody writes it as a clean number. Map that column to Priority and PostKnock normalizes it to a 0–100 score, then mails in that order as your daily cap releases contacts.

What your spreadsheet says What PostKnock scores it
A / B / C100 / 66 / 33
High / Medium / Low100 / 50 / 0
Hot / Warm / Cold100 / 50 / 0
Gold / Silver / Bronze100 / 66 / 33
Yes / No flags100 / 0
Star ratings, or any numberUsed as a score directly

Before you commit, PostKnock shows you which scheme it detected and a handful of your real values with their scores next to them. If the detection looks wrong, keep the column as a plain custom field instead. Nothing is forced.

Why this matters: you set a daily mailing cap so postage lands at a pace your front desk can answer. Priority decides who goes out inside that cap. On a 4,000-name reactivation list, your A-list patients are in the mail in week one rather than week six.

Do-not-contact, on the Free plan

Mark any contact do-not-contact, with a reason and a date, and they are excluded from mailings and from the call queue. This is not a paid add-on and it is not a separate suppression-list product. It is a field on the contact, available to everyone.

Separately, a contact can be paused. A temporary hold that keeps them in the campaign but stops the next card from going out. Moving out of state, mid-dispute, on vacation. Two different states, because "stop forever" and "stop for now" are different problems.

Six checks run before any card is printed

Direct mail costs real money on the way out the door. Every time PostKnock picks the next batch of contacts to mail, each one has to clear all six of these. A contact that fails any check is skipped, not mailed and refunded later.

1. Not paused

A contact on temporary hold does not get picked up.

2. Not do-not-contact

DNC blocks the mailing and the follow-up call.

3. Has a mailable address

Missing, malformed, or previously returned-to-sender addresses are held back until corrected, so one bad address cannot bill you repeatedly.

4. The wave is not locked

A wave that your plan does not include cannot mail, even if something upstream tried to queue it.

5. No card is already in flight for that wave

If a postcard for this contact and this wave already exists, a second one is never created. No double-mails.

6. The wave is not already complete

A finished wave does not re-send. Contacts move forward, never in circles.

Put plainly: we will not waste your postage.

Import Questions

Do I need a CRM to use PostKnock?

No. A spreadsheet is enough. If your practice-management, booking, or accounting software can export a list, that export is your contact list. Excel .xlsx and .xls files work directly. You do not have to convert anything to CSV first.

What if my column names do not match yours?

PostKnock proposes a mapping automatically and shows it to you with a real sample value from each column. Anything it guessed wrong you change with a dropdown, and anything it did not recognize is listed as unmapped so you can map it or keep it as a custom field. You are never editing your spreadsheet to fit our format.

My ZIP codes lost their leading zeros in Excel. Is that a problem?

No. A four-digit ZIP is recognized as one that lost its leading zero, and the zero is restored on import. This is the single most common way an Excel export breaks a mailing list, so it is handled for you.

What happens if I import the same list twice?

If you map your system's record number to External ID and turn on deduplication, matching contacts are updated instead of duplicated. If an External ID matches a contact whose first name is different, PostKnock refuses to merge and reports it back as a conflict. That pattern almost always means the ID column was mapped wrong.

How many contacts can I store?

Contacts are unlimited on both the Free and Pro plans. You are not charged for storing a list. You pay per postcard actually mailed, from $0.79 on Pro and from $1.05 on Free.

Can I stop mailing one specific person?

Yes, on every plan including Free. Mark them do-not-contact, with a reason and a date, and they are excluded from mailings and from the call queue. If you only want to stop them for now, pause them instead. That keeps them in the campaign without sending the next card.

Bring the spreadsheet you already have

Sign up free and import your list in a few minutes. No $99/mo, no minimum, no time limit.

Start Free