When to send handwritten thank-you cards to customers
The customer milestones worth a handwritten thank you card, from first sale to renewals and churn saves, and how to wire each one to an event in your system.
Send a handwritten thank you card to a customer at the moments that matter to them: their first purchase, a first revenue milestone, onboarding, a renewal, an anniversary, an unusually large order, and the point where they might be about to leave. Each of these is also an event your systems already record. That means you can wire a card to it once and stop relying on someone to remember.
Pick moments, not schedules
A card sent on a fixed calendar, every quarter to everyone, reads like a mailing. A card that arrives because something specific happened reads like attention. The best triggers are moments the customer will recognize when they open the card: "you just placed your first order," "it has been a year," "thank you for staying."
That also keeps volume honest. If every event sends a card, cards stop meaning anything. Choose a few milestones, write a good note for each, and let the events do the rest.
The milestones worth a card
Here are the moments that tend to deserve a handwritten note, with the kind of event you would hook each one to:
- First sale. The first order from a new customer. Trigger on order paid where the customer's order count is 1.
- First revenue. If your customers earn money through your product, their first sale or first payout is a milestone for them, not just for you. Trigger on the first successful payout or first transaction on their account.
- Onboarding. A note from a real person early in the relationship. Trigger a few days after signup, or when a key setup step is completed.
- Renewals. Thank them for choosing you again. Trigger on the successful renewal charge, not on the reminder before it.
- Anniversaries. One year, two years, five. Trigger from a daily job that finds accounts whose start date matches today.
- Big orders. An order well above that customer's usual size, or above a threshold you set. Trigger on order paid with a total over the threshold.
- Churn-risk saves. A customer who downgraded, paused, or went quiet, and then a teammate reached out. Trigger from your CRM when an account manager flags the account, so a person has looked first.
Wire the trigger to the API
Each card is one request: POST /api/v1/notes with the recipient, the exact note in content, and an Idempotency-Key header. Your event handler builds the request and sends it. The handwritten notes API guide walks through the full request with a curl example.
Three details make event-driven cards safe.
Make the idempotency key the milestone. Build it from the customer and the event, like cust_8812-first-order or acct_301-anniversary-2026. If a webhook fires twice or a job reruns, the same key with the same body returns the same note and never a second card. The same key with a different body returns a 409, which tells you two parts of your system disagree about what the card should say.
Record why the card was sent. The optional context object is stored with the note and never written on the card. Put the trigger name, the order ID, or the CRM record there, so anyone looking at the note later can see what caused it.
Handle bad addresses at the source. US addresses are verified and standardized, and an undeliverable US address is rejected with a 422 before anything is created. Do not retry those. Flag the customer record so someone can fix it. International addresses are stored as sent, so make sure that data is formatted the way the destination country expects.
Write a note for each milestone
The content you send is written exactly as sent, up to 500 characters. Your code fills in the details, and the note should read naturally once they are filled in. A first-order note can mention what they bought. A renewal note can mention how long they have been with you. An anniversary note can mention when they started.
Keep each one short. A 7x5 card has room for a few sentences, and a few specific sentences beat a full card of general ones. There is more on this in how to write a handwritten note for customers.
Mail takes time, so write the note so it still makes sense whenever it arrives. "Thank you for your first order" works any day it lands. "Your package arrives tomorrow" does not.
Leave room for people
Automate the routine moments: first orders, renewals, anniversaries. Keep a person in the loop for the sensitive ones. A churn-risk card should usually follow a real conversation, and the note should reflect it. A card that arrives after a complaint, with no sign anyone read the complaint, can do more harm than no card at all.
Add a few guards in your handler too. Skip customers who refunded or cancelled the order that triggered the card. Skip test accounts and internal accounts. Cap how many cards one customer can receive in a short window, so a busy week does not turn into a stack of envelopes.
Not every card needs an integration. For a one-off, like a thank you after a long call or a note to a customer who helped you fix a bug, you can send a single note from the portal.
Start with one milestone
You do not need to wire all of these at once. Pick the one milestone where a card would mean the most to your customers, often the first order or the first renewal.
Build with a test key first: same API, nothing written or mailed. Then send one real note to yourself with your live key. Read the card when it arrives. When it reads right, turn the trigger on.
Once it is running, every note shows up in the portal with its status, from created to card_printed to card_dispatched, so you can watch each milestone turn into a card. Behind each one, the note is rendered into pen strokes and checked by OCR before a robot writes it. You can read how in how we check every card.
For worked examples, see the use cases for milestone cards, thank-you cards and welcome cards.
Request and response details are in the notecardHQ API docs.