FEATURE

Every postcard is addressed to one person

Drop a merge field anywhere on the card and it fills in per recipient at print time, from the 12 built-in fields, or from any column you brought in with your own data.

The 12 built-in fields

Nine come from the contact, three from your business. Insert them from the editor sidebar. You never type the underlying tag by hand.

From the contact

  • first_name
  • last_name
  • full_name
  • company_name
  • phone
  • email
  • city
  • state
  • zip_code

From your business

  • sender_name
  • sender_phone
  • sender_address

These pull from your business profile, so you are not retyping your own phone number into every design.

A field with no value for a given contact renders as empty rather than printing a raw placeholder on the card.

Plus any column you brought with you

The 12 built-ins are the floor, not the ceiling. Every contact carries an open set of custom fields, populated from the extra columns in your Excel or CSV import. Reference one with a custom. prefix and it merges exactly like a built-in.

For example, if your spreadsheet has a Last Visit column and a Preferred Doctor column:

  • custom.last_visit: “It has been a while since your last visit in March 2025.”
  • custom.preferred_doctor: “Dr. Patel has an opening this month.”
  • custom.pet_name: “Bailey is due for a dental cleaning.”

This is the difference between a postcard that says “Dear Valued Patient” and one that names the thing the recipient actually cares about. The data is already sitting in the export from your practice-management or field-service software. Import it and it is available on the card.

A QR code that belongs to one recipient

Drop a QR code onto the design and each printed card gets its own. Because the code is generated per postcard, a scan tells you which contact scanned it, not just that somebody did. Place it on the front, the back, both, or neither, and drag it wherever it fits the layout.

Where that QR code sends people, and the UTM tags it carries, are resolved at the moment of the scan, not baked in at print time. You can repoint a campaign after the cards are already in the mail. See how tracking works →

What personalization does not do

Worth saying plainly, because some direct mail tools do offer this and you should know before you sign up:

No conditional or if-then content blocks

PostKnock merge fields substitute a value. They do not branch. You cannot write “if the contact is in Texas show this offer, otherwise show that one,” and there are no rules, expressions, or hidden-unless conditions in a design.

In practice, the way to run different messages at different segments is to build separate campaigns and put the right contacts in each. For an owner-operator mailing a few hundred people that is usually simpler than maintaining a rules engine anyway, and it means the proof you approve is exactly the card that prints, with no hidden variant you never looked at.

Also not supported: personalized URLs on their own subdomain (pURLs). Tracking links are per recipient, but they run on a shared short domain rather than a custom one per person.

You see the merge before it prints

The design editor previews merge fields with sample data as you work, so you can see whether a long last name breaks the line before it costs you anything. Before a campaign can go out, its design has to pass a proof review: a rendered front and back of the actual card. Nothing prints unproofed.

Personalization Questions

Which merge fields are built in?

There are 12. Nine come from the contact: first name, last name, full name, company name, phone, email, city, state, and ZIP code. Three come from your business profile: sender name, sender phone, and sender address. You insert them from the editor sidebar rather than typing a tag.

Can I use my own data fields?

Yes. Extra columns from your Excel or CSV import are stored as custom fields on each contact, and you can place any of them on a postcard using a custom prefix. There is no fixed list. If your export has a last visit date, a pet name, or a preferred provider, you can print it.

Does PostKnock support conditional or if-then content?

No. Merge fields substitute a value, they do not branch. There is no if-then logic, no rules engine, and no show-this-block-unless conditions in a design. To send different messages to different segments, build separate campaigns and put the right contacts in each.

What happens if a contact is missing a field?

The field renders as empty rather than printing a raw placeholder on the card. Write your copy so it still reads correctly when an optional field is blank, and check the preview before approving the proof.

Is each QR code unique to the recipient?

Yes. A QR code is generated per postcard, so a scan is attributed to the individual contact who received that card. The destination it points to and the UTM tags it carries are resolved at scan time, which means you can change them after the cards have already been mailed.

Print the detail they actually care about

Import your list, drop in the fields, approve the proof. No minimums, no contracts.

Start Free