← Back to all templates

Wedding Thank You Card Template: The Script

Wedding Thank You Card Template: The Script

The wedding is over, the honeymoon was amazing, and now you’re staring at a stack of 150 blank cards. Don’t let thank-you note paralysis set in.

The Room Blocks by Engine thank you card template is a simple, plug-and-play system designed to help you finish your wedding thank you notes faster and with way less stress. It combines ready-to-use wedding thank you note wording and etiquette guidance.

Showing gratitude should feel. This template helps you track every gift, contribution, and guest appearance, making your 'thank yous' as sincere and beautiful as your wedding.

Access the Room Blocks by Engine Thank You Note Template

Free thank you card template

The script and tracking kit for every note

Don't let post-wedding card paralysis set in. Five plug-and-play scripts plus a tracker so no guest is left un-thanked. Try the kit below.

Interactive preview

Thank you tracker

Log every guest, their gift, and the note status. Stats update in real time.

Total notes
0
Drafted
0
Not started
0
Guest Gift or reason Status Date sent Notes Mailed
+ Add note
Download as CSV Print Reset tracker
Modular scripts

Five scripts to copy and paste

Adapt each script with names and specifics. The full download has 20+ tailored by scenario.

Before you mail

15 considerations checklist

The details that turn a thank you note from generic to genuine.

    (function() { 'use strict'; var STORAGE_KEY = 'rb-ty-preview-v1'; var DEFAULTS = [ { guest: 'Suzanne Quincy', gift: 'KitchenAid mixer', status: 'Sent', dateSent: '2027-02-15', notes: 'Mentioned the lavender color', mailed: true }, { guest: 'Marcus and Lara Allen', gift: 'Cash gift, $200', status: 'Drafted', dateSent: '', notes: 'For honeymoon flights', mailed: false }, { guest: 'Jordan and Riley Patel', gift: 'Travel voucher', status: 'Drafted', dateSent: '', notes: 'Tahiti reference', mailed: false }, { guest: 'Ava Reyes', gift: 'Attended only', status: 'Sent', dateSent: '2027-02-10', notes: 'Thanked for the toast', mailed: true }, { guest: 'Dev Singh', gift: 'Wine set', status: 'Not started', dateSent: '', notes: '', mailed: false }, { guest: 'Lens & Light Photography', gift: 'Vendor service', status: 'Sent', dateSent: '2027-01-25', notes: 'Tipped and reviewed', mailed: true }, { guest: 'The Anderson Family', gift: 'Crystal vase', status: 'Not started', dateSent: '', notes: '', mailed: false } ]; var SCRIPTS = [ { tag: 'Wedding gift', title: 'For a registry or physical gift', text: 'Dear [Name],\n\nThank you so much for the [gift]. We absolutely love it and will [how you will use it]. Your thoughtfulness means more to us than you know. Having you there to celebrate with us made the day even more special.\n\nWith love,\n[Your Names]' }, { tag: 'Cash or check', title: 'When the gift is money', text: "Dear [Name],\n\nThank you for your incredibly generous gift. We're putting it toward [honeymoon, new home, etc.] and it's going to make such a difference. We're so grateful to have you in our corner.\n\nWith love,\n[Your Names]" }, { tag: 'Attended only', title: 'No gift, just their presence', text: "Dear [Name],\n\nHaving you at our wedding meant everything to us. Your presence, your energy, and [specific memory] made the day complete. We're so lucky to share our lives with people like you.\n\nWith love,\n[Your Names]" }, { tag: 'Vendor', title: 'For your photographer, planner, florist', text: "Dear [Name],\n\nWe wanted to take a moment to thank you for [what they did]. Your professionalism and care made a stressful day feel easy. We'll recommend you to anyone who asks.\n\nWarmly,\n[Your Names]" }, { tag: 'Non-registry', title: 'For unexpected or unique gifts', text: "Dear [Name],\n\nThank you for the [gift]. It is so uniquely you, and we love that we have a piece of your personality in our home. It will remind us of your friendship every time we [use, see, enjoy] it.\n\nWith love,\n[Your Names]" } ]; var CHECKS = [ 'Note specifically mentions the gift by name to show genuine appreciation.', 'Personalized sentence about a specific moment shared with the guest at the wedding.', 'Clear plan for using a cash gift (down payment, honeymoon excursion, etc.).', 'Thank you sent to long-distance guests, even without a physical gift.', 'Note addressed to every person on the original invitation including plus-ones.', 'Batching schedule kept to mail all notes within three months of the wedding.', 'Tracker logs when each note is written, stamped, and physically mailed.', 'Professional thank you sent to vendors who went above and beyond.', 'Stationery consistent with the overall design of the wedding suite.', 'Mailing address verified as current for guests who may have moved.', 'Handwriting legible and written in a quality pen that does not smudge.', 'Wedding photo or digital gallery link included as a special extra.', 'Wording for group gifts personalized to each individual who contributed.', 'Postage cost accounted for in the final post-wedding budget.', 'Note expresses excitement about seeing the guest again soon.' ]; var state = loadState(); function loadState() { try { var raw = localStorage.getItem(STORAGE_KEY); if (raw) { var p = JSON.parse(raw); if (p && p.notes) return p; } } catch (e) {} return { notes: JSON.parse(JSON.stringify(DEFAULTS)), checks: {} }; } function saveState() { try { localStorage.setItem(STORAGE_KEY, JSON.stringify(state)); } catch (e) {} } function esc(s) { if (s == null) return ''; return String(s).replace(/[&<>"']/g, function(c) { return { '&':'&','<':'<','>':'>','"':'"',"'":''' }[c]; }); } function renderRows() { var tbody = document.getElementById('rb-rows'); var html = ''; state.notes.forEach(function(n, i) { html += '' + '' + '' + 'Not startedDraftedSent' + '' + '' + '' + '×' + ''; }); if (!html) html = 'No notes tracked yet.'; tbody.innerHTML = html; } function renderStats() { var total = state.notes.length; var sent = state.notes.filter(function(n){return n.status==='Sent';}).length; var draft = state.notes.filter(function(n){return n.status==='Drafted';}).length; var none = state.notes.filter(function(n){return n.status==='Not started';}).length; document.getElementById('rb-stat-total').textContent = total; document.getElementById('rb-stat-sent').textContent = sent; document.getElementById('rb-stat-draft').textContent = draft; document.getElementById('rb-stat-none').textContent = none; } function renderScripts() { var c = document.getElementById('rb-scripts'); var html = ''; SCRIPTS.forEach(function(s, i) { html += '
    ' + '' + esc(s.tag) + '' + '

    ' + esc(s.title) + '

    ' + '
    ' + esc(s.text) + '
    ' + '' + '' + 'Copy' + '' + '
    '; }); c.innerHTML = html; } function renderChecks() { var c = document.getElementById('rb-checks'); var html = ''; CHECKS.forEach(function(t, i) { var done = !!state.checks[i]; html += '
  • ' + '' + '' + esc(t) + '' + '
  • '; }); c.innerHTML = html; } function copyText(idx, btn) { var text = SCRIPTS[idx].text; var fallback = function() { var ta = document.createElement('textarea'); ta.value = text; ta.style.position = 'fixed'; ta.style.opacity = '0'; document.body.appendChild(ta); ta.select(); try { document.execCommand('copy'); } catch (e) {} document.body.removeChild(ta); }; if (navigator.clipboard && navigator.clipboard.writeText) { navigator.clipboard.writeText(text).catch(fallback); } else { fallback(); } btn.classList.add('is-copied'); var label = btn.querySelector('.rb-copy-label'); if (label) label.textContent = 'Copied!'; setTimeout(function() { btn.classList.remove('is-copied'); if (label) label.textContent = 'Copy'; }, 1800); } function attach() { var tbody = document.getElementById('rb-rows'); tbody.addEventListener('input', onInput); tbody.addEventListener('change', onInput); tbody.addEventListener('click', function(e) { var btn = e.target.closest('[data-del]'); if (btn) { state.notes.splice(Number(btn.getAttribute('data-del')), 1); saveState(); renderRows(); renderStats(); } }); document.getElementById('rb-add').addEventListener('click', function() { state.notes.push({ guest: '', gift: '', status: 'Not started', dateSent: '', notes: '', mailed: false }); saveState(); renderRows(); renderStats(); }); document.getElementById('rb-scripts').addEventListener('click', function(e) { var btn = e.target.closest('[data-copy]'); if (btn) copyText(Number(btn.getAttribute('data-copy')), btn); }); document.getElementById('rb-checks').addEventListener('change', function(e) { var c = e.target.closest('[data-check]'); if (c) { var i = Number(c.getAttribute('data-check')); state.checks[i] = c.checked; saveState(); var li = c.closest('.rb-check-item'); if (li) li.classList.toggle('is-done', c.checked); } }); document.getElementById('rb-csv').addEventListener('click', function() { var rows = [['Guest','Gift','Status','Date sent','Notes','Mailed']]; state.notes.forEach(function(n) { rows.push([n.guest, n.gift, n.status, n.dateSent, n.notes, n.mailed?'Yes':'No']); }); var csv = rows.map(function(r) { return r.map(function(c) { var s = String(c == null ? '' : c); if (s.indexOf(',') !== -1 || s.indexOf('"') !== -1 || s.indexOf('\n') !== -1) return '"' + s.replace(/"/g,'""') + '"'; return s; }).join(','); }).join('\n'); var blob = new Blob([csv], { type: 'text/csv;charset=utf-8' }); var url = URL.createObjectURL(blob); var a = document.createElement('a'); a.href = url; a.download = 'wedding-thank-yous.csv'; document.body.appendChild(a); a.click(); document.body.removeChild(a); setTimeout(function() { URL.revokeObjectURL(url); }, 100); }); document.getElementById('rb-print').addEventListener('click', function() { window.print(); }); document.getElementById('rb-reset').addEventListener('click', function() { if (confirm('Reset thank you tracker?')) { try { localStorage.removeItem(STORAGE_KEY); } catch (e) {} state = loadState(); renderRows(); renderStats(); renderChecks(); } }); } function onInput(e) { var t = e.target; var tr = t.closest('tr[data-i]'); if (!tr) return; var i = Number(tr.getAttribute('data-i')); var f = t.getAttribute('data-field'); if (!f || !state.notes[i]) return; var v = t.type === 'checkbox' ? t.checked : t.value; state.notes[i][f] = v; saveState(); if (f === 'status') { renderStats(); } else { renderStats(); } } renderRows(); renderStats(); renderScripts(); renderChecks(); attach(); })();

    Why a Google doc is the ultimate thank you tool

    Writing wedding thank you notes doesn’t have to feel overwhelming. Using a Google Doc turns a traditionally tedious task into a manageable system.

    Collaboration without chaos

    You and your partner can work on the document at the same time, splitting the guest list and drafting notes together, even if you’re in different locations.

    Copy-paste efficiency

    With modular scripts for different scenarios, you’re not rewriting the same sentences 150 times. You simply personalize each note while keeping your tone consistent.

    Version control you can trust

    Draft notes digitally, mark them as “final,” then hand-write them into your physical cards. No more guessing which version you meant to send.

    For couples balancing post-wedding life, a Google Docs thank you card template saves time without sacrificing sincerity.

    9 considerations for your thank you notes

    1. Does the note specifically mention the gift by name to show genuine appreciation for the guest’s choice?
    2. Have you included a personalized sentence about a specific moment you shared with the guest during the wedding?
    3. Have you sent a thank-you to guests who traveled a long distance, even if they didn’t bring a physical gift?
    4. Is the note addressed to everyone listed on the original invitation, including plus-ones and children?
    5. Have you sent professional thank you notes to vendors who went above and beyond?
    6. Is your stationery consistent with the overall vibe of your wedding suite?
    7. Have you included a wedding photo or link to your digital gallery as a thoughtful extra?
    8. Is wording for group gifts personalized to each contributor?
    9. Does the note express excitement about seeing the guest again soon?

    Gratitude is the final act of your wedding journey

    Your wedding should be all about the 'I do,' not the to-do list! Finish your notes faster, stay organized, and send messages that actually feel meaningful.

    Finish your notes in record time. Access the Room Blocks by Engine thank you card template for Google Docs today.

    Frequently asked questions

    How long do I have to send wedding thank you notes?

    Traditionally, within three months of the wedding. Sooner is always better, but grace is usually given if you communicate appreciation thoughtfully.

    Do I have to hand-write wedding thank you notes?

    Yes, handwritten notes are still the standard. Drafting in Google Docs simply makes the process faster and more organized.

    What would I say if I didn’t love the gift?

    Focus on the guest’s kindness and effort. Gratitude is about the thought, not the item itself.

    GRAB
    THE FREE TEMPLATE
    NOW

    And when you're ready, we're here to help you find the best room block

    Download now ↓ Start your trip

    Booking group travel will never be the same.

    Start your trip →