Template gallery / welcome-letter
HOA new owner welcome letter template
New owner welcome packet that is a letter rather than a cover sheet: a letterhead, a reference band carrying the lot and account number, one line of welcome, the assessment as a ruled band with the first payment date, a first-month checklist with real boxes, a who-to-call table, what the assessment covers beside the amenities, the handful of rules new owners break by accident as numbered records, the governing documents, and a signature.
chromium default PDF 22 top-level fields Billed per page
Fields
The full JSON Schema is below. Required fields are marked; anything missing comes back as a 422 naming the path, the expected type and a value that would be accepted.
| Field | Type | Required | Description |
|---|---|---|---|
| accent | string | optional | The association's navy. The letter is black ink on white with a double keyline, so this colour is held in reserve rather than tinting the page. A hex colour or a CSS colour keyword. It is interpolated into the stylesheet, so nothing else is accepted. |
| currency | string | optional | |
| letter_date | string (date) | required | |
| headline | string | optional | |
| lede | string | optional | |
| association | object { name, short_name, subtitle, address, … } | required | |
| managing_agent | object { name } | optional | |
| owner | object { name, salutation } | required | |
| property | object { address, unit, account_number, closed_on } | required | |
| body | array of string | optional | The opening paragraphs, in order. |
| assessment | object { amount, frequency, unit_type, due, … } | optional | The ruled band under "What you pay": the amount set large beside the due date, the first payment and how to pay. Any line whose field is missing is left out. |
| first_steps | array of string | optional | Checkbox list of what to do in the first month. |
| contacts | array of object { topic, who, note, how } | optional | Who to call for what. |
| amenities | array of object { name, detail } | optional | |
| services | array of string | optional | What the assessment pays for. |
| rules | array of object { title, text } | optional | The handful of rules new owners break by accident. Bold lead-in, then the rule. |
| rules_note | string | optional | |
| documents | array of string | optional | |
| meetings | string | optional | |
| valediction | string | optional | |
| signer | object { name, title, organization } | required | |
| footer | string | optional | Replaces the default "the recorded documents govern" line. |
Default render options
Applied unless you override them. Options are part of the cache key.
| page_size | "Letter" |
| margin | {"top":"0.65in","right":"0.65in","bottom":"0.85in","left":"0.65in"} |
| print_background | true |
Example payload
This exact object renders the preview above. It is also what the API echoes back in a validation error, so an agent can repair a payload without a round trip to the docs.
{
"letter_date": "2026-09-16",
"headline": "Welcome to Heron Bay.",
"lede": "Everything you need in the first month, on two pages.",
"association": {
"name": "Heron Bay Homeowners Association, Inc.",
"short_name": "Heron Bay",
"subtitle": "Board of Directors",
"address": "PO Box 4127, Wilmington, NC 28406",
"phone": "(910) 555-0177",
"email": "office@heronbayhoa.example.test",
"website": "heronbayhoa.example.test",
"office_hours": "Tuesdays and Thursdays, 4 to 6 p.m."
},
"managing_agent": {
"name": "Cape Fear Property Management"
},
"owner": {
"name": "Priyanka and Sam Oyelaran",
"salutation": "Priyanka and Sam"
},
"property": {
"address": "1442 Tern Court, Wilmington, NC 28411",
"unit": "Lot 129, detached home",
"account_number": "HB-0129",
"closed_on": "2026-09-04"
},
"body": [
"Your closing was recorded on September 4 and your account is open. This letter is the short version of what the association does, what it costs, and the handful of rules that catch people out in the first year.",
"Nobody here is a professional. The board is five owners who volunteer, and the day-to-day is handled by a management com… [246 characters, shortened for display]"
],
"assessment": {
"amount": 257,
"frequency": "Monthly",
"unit_type": "Detached home rate for 2026",
"due": "1st of the month",
"late_note": "Late after the 10th; $25 fee and 8% interest",
"first_due_on": "2026-10-01",
"proration_note": "September was prorated at closing",
"how_to_pay": "Autopay in the owner portal drafts on the third of each month. You can also mail a check to the lockbox address on your … [260 characters, shortened for display]"
},
"first_steps": [
"Register for the owner portal at heronbayhoa.example.test/portal, account HB-0129",
"Set up autopay, or note the first payment date above in your calendar",
"Collect two amenity fobs from the clubhouse office, with your closing statement",
"Send the office the name and mobile number of anyone who should be on the gate call list",
"Read the five rules on the second page before you order anything for the exterior of the house",
"Add the second Tuesday of the month to your calendar if you would like to come to a board meeting"
],
"contacts": [
{
"topic": "Billing and autopay",
"who": "Cape Fear Property Management",
"note": "weekdays 9 to 5",
"how": "(910) 555-0142 · billing@capefearpm.example.test"
},
{
"topic": "Work orders, common areas",
"who": "Denise Hollowell, community manager",
"note": "portal tickets first",
"how": "heronbayhoa.example.test/portal"
},
{
"topic": "Architectural applications",
"who": "Architectural Review Committee",
"note": "meets the first Monday",
"how": "arc@heronbayhoa.example.test"
},
{
"topic": "Gate, fobs and access",
"who": "Clubhouse office",
"note": "Tues and Thurs, 4 to 6 p.m.",
"how": "(910) 555-0177"
},
{
"topic": "Urgent, after hours",
"who": "24-hour emergency line",
"note": "water, storm damage, gates",
"how": "(910) 555-0199"
},
{
"topic": "Board and agenda items",
"who": "Matthew Okafor, Secretary",
"note": "by noon the Thursday before",
"how": "secretary@heronbayhoa.example.test"
}
],
"amenities": [
{
"name": "Pool and deck",
"detail": "Dawn to 9 p.m. November–March, dawn to 10 p.m. April–October. Fob required; no glass on the deck."
},
{
"name": "Clubhouse",
"detail": "Open daily; reservable for private events for a $75 fee and a refundable $200 deposit."
},
{
"name": "Fitness room",
"detail": "24 hours, fob access. Ages 16 and up, or with an adult."
},
{
"name": "Walking trail and pond",
"detail": "1.2 miles, dawn to dusk. Catch and release only."
},
{
"name": "Kayak racks",
"detail": "18 racks at the pond launch, assigned by waiting list. $40 per year."
}
],
"services": [
"Weekly landscape maintenance of all common areas and street frontage",
"Trash and recycling collection, Tuesday mornings",
"Pool service, chemicals and seasonal staffing",
"Common area electricity, irrigation and street lighting",
"Property, liability and D&O insurance for the association",
"Replacement reserves for roofs, paving, the pool and the clubhouse"
],
"rules": [
{
"title": "Anything visible from the street needs approval before the work starts.",
"text": "Paint colours, fences, roofs, decks, sheds, storm doors, satellite dishes and solar all need an architectural applicatio… [257 characters, shortened for display]"
},
{
"title": "Bins go out no earlier than Monday evening and come in by Tuesday evening.",
"text": "Between collections they are stored out of sight from the street — in the garage, behind a fence or behind an approved screen."
},
{
"title": "Two vehicles in the driveway, none on the street overnight.",
"text": "Street parking is permitted from 6 a.m. to midnight for guests and contractors. Boats, trailers and RVs may be on the property for up to 48 hours for loading only."
},
{
"title": "Dogs on a leash, and pick up after them.",
"text": "Bag stations are at both trail entrances and by the mail kiosk. The association is not permitted to restrict breeds, but it does enforce the leash rule."
},
{
"title": "Rentals have a six-month minimum and must be registered.",
"text": "Short-term rentals are prohibited under Article IX. Register any tenant with the office within ten days of the lease being signed and give them a copy of the rules."
}
],
"rules_note": "The full rules run to eleven pages and are in the portal. These five account for about nine out of ten violation letters we send.",
"documents": [
"Declaration of Covenants, recorded 2011, amended 2019",
"Bylaws of the Association, amended 2022",
"Rules and Regulations, adopted March 10, 2026",
"Architectural Design Guidelines, revised January 2025",
"Collection policy and fine schedule, adopted March 10, 2026"
],
"meetings": "The Board meets on the second Tuesday of each month at 6:30 p.m. in the clubhouse, and every meeting is open to owners. … [338 characters, shortened for display]",
"valediction": "Welcome aboard,",
"signer": {
"name": "Priya Raghunathan",
"title": "President, Board of Directors",
"organization": "Heron Bay Homeowners Association, Inc."
}
}
Values longer than 240 characters — data URIs, inline SVG — are shortened here so the
shape of the payload stays readable, and the replacement says how much was left out.
get_template and GET /v1/templates/:ref return them in full.
Render it
curl -sS https://api.galleyrender.com/v1/render \
-H "Authorization: Bearer $GALLEY_API_KEY" \
-H 'content-type: application/json' \
-d '{
"template": "welcome-letter@1",
"format": "pdf",
"data": "… the example payload above …"
}' # No API key. The first call mints a trial of 10 PDF pages or 10 images.
curl -sS https://mcp.galleyrender.com/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "render",
"arguments": {
"template": "welcome-letter",
"format": "pdf",
"data": { … see the example payload above … }
}
}
}'
Pin the version — welcome-letter@1 — in anything you ship. Publishing a new
version never changes an old one. Render endpoint reference →
Renders the example payload on the production service. No account, no key.
JSON Schema
schema.json (22 top-level properties)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "New owner welcome letter",
"type": "object",
"required": [
"association",
"owner",
"property",
"letter_date",
"signer"
],
"additionalProperties": true,
"properties": {
"accent": {
"type": "string",
"description": "The association's navy. The letter is black ink on white with a double keyline, so this colour is held in reserve rather than tinting the page. A hex colour or a CSS colour keyword. It is interpolated into the stylesheet, so nothing else is accepted.",
"default": "#1c3f60",
"examples": [
"#1c3f60"
],
"pattern": "^(#[0-9a-fA-F]{3,8}|[a-zA-Z]{3,20})$"
},
"currency": {
"type": "string",
"default": "USD",
"examples": [
"USD"
]
},
"letter_date": {
"type": "string",
"format": "date",
"examples": [
"2026-09-16"
]
},
"headline": {
"type": "string",
"default": "Welcome to the neighbourhood.",
"examples": [
"Welcome to Heron Bay."
]
},
"lede": {
"type": "string",
"examples": [
"Everything you need in the first month, on two pages."
]
},
"association": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"examples": [
"Heron Bay Homeowners Association, Inc."
]
},
"short_name": {
"type": "string",
"examples": [
"Heron Bay"
]
},
"subtitle": {
"type": "string",
"default": "Board of Directors",
"examples": [
"Board of Directors"
]
},
"address": {
"type": "string",
"examples": [
"PO Box 4127, Wilmington, NC 28406"
]
},
"phone": {
"type": "string",
"examples": [
"(910) 555-0177"
]
},
"email": {
"type": "string",
"format": "email",
"examples": [
"office@heronbayhoa.example.test"
]
},
"website": {
"type": "string",
"examples": [
"heronbayhoa.example.test"
]
},
"office_hours": {
"type": "string",
"description": "When the clubhouse office is actually staffed, for the letterhead.",
"examples": [
"Tuesdays and Thursdays, 4 to 6 p.m."
]
},
"logo_url": {
"type": "string",
"format": "uri",
"examples": [
"https://example.com/heron-bay.png"
]
}
}
},
"managing_agent": {
"type": "object",
"properties": {
"name": {
"type": "string",
"examples": [
"Cape Fear Property Management"
]
}
}
},
"owner": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"examples": [
"Priyanka and Sam Oyelaran"
]
},
"salutation": {
"type": "string",
"examples": [
"Priyanka and Sam"
]
}
}
},
"property": {
"type": "object",
"properties": {
"address": {
"type": "string",
"examples": [
"1442 Tern Court, Wilmington, NC 28411"
]
},
"unit": {
"type": "string",
"examples": [
"Lot 129, detached"
]
},
"account_number": {
"type": "string",
"examples": [
"HB-0129"
]
},
"closed_on": {
"type": "string",
"format": "date",
"description": "When the sale was recorded. Printed in the reference band, because it is the date the assessment starts running from.",
"examples": [
"2026-09-04"
]
}
}
},
"body": {
"type": "array",
"description": "The opening paragraphs, in order.",
"items": {
"type": "string",
"examples": [
"Your closing was recorded on September 4 and your account is open."
]
},
"examples": [
[
"Your closing was recorded on September 4 and your account is open."
]
]
},
"assessment": {
"type": "object",
"description": "The ruled band under \"What you pay\": the amount set large beside the due date, the first payment and how to pay. Any line whose field is missing is left out.",
"properties": {
"amount": {
"type": "number",
"examples": [
257
]
},
"frequency": {
"type": "string",
"default": "Monthly",
"examples": [
"Monthly"
]
},
"unit_type": {
"type": "string",
"examples": [
"Detached home rate for 2026"
]
},
"due": {
"type": "string",
"examples": [
"1st of the month"
]
},
"late_note": {
"type": "string",
"examples": [
"Late after the 10th; $25 fee"
]
},
"first_due_on": {
"type": "string",
"format": "date",
"examples": [
"2026-10-01"
]
},
"proration_note": {
"type": "string",
"examples": [
"September was prorated at closing"
]
},
"how_to_pay": {
"type": "string",
"examples": [
"Set up autopay in the owner portal, mail a check to the lockbox, or pay by card for a 2.9% processing fee."
]
}
}
},
"first_steps": {
"type": "array",
"description": "Checkbox list of what to do in the first month.",
"items": {
"type": "string",
"examples": [
"Register for the owner portal at heronbayhoa.example.test/portal using account HB-0129"
]
},
"examples": [
[
"Register for the owner portal"
]
]
},
"contacts": {
"type": "array",
"description": "Who to call for what.",
"items": {
"type": "object",
"required": [
"topic",
"who"
],
"properties": {
"topic": {
"type": "string",
"examples": [
"Billing, statements and autopay"
]
},
"who": {
"type": "string",
"examples": [
"Cape Fear Property Management"
]
},
"note": {
"type": "string",
"examples": [
"Weekdays 9 a.m. to 5 p.m."
]
},
"how": {
"type": "string",
"examples": [
"(910) 555-0142 · billing@capefearpm.example.test"
]
}
}
}
},
"amenities": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"examples": [
"Pool"
]
},
"detail": {
"type": "string",
"examples": [
"Open dawn to 9 p.m. Nov–Mar, dawn to 10 p.m. Apr–Oct. Fob required."
]
}
}
}
},
"services": {
"type": "array",
"description": "What the assessment pays for.",
"items": {
"type": "string",
"examples": [
"Weekly landscape maintenance of all common areas"
]
},
"examples": [
[
"Weekly landscape maintenance of all common areas"
]
]
},
"rules": {
"type": "array",
"description": "The handful of rules new owners break by accident. Bold lead-in, then the rule.",
"items": {
"type": "object",
"required": [
"title",
"text"
],
"properties": {
"title": {
"type": "string",
"description": "The rule itself, set in Newsreader above the explanation.",
"examples": [
"Anything visible from the street needs approval first."
]
},
"text": {
"type": "string",
"examples": [
"Paint colours, fences, roofs, decks, sheds and satellite dishes all need an architectural application before work starts."
]
}
}
}
},
"rules_note": {
"type": "string",
"examples": [
"The full rules are eleven pages. These five account for nearly every violation letter we send."
]
},
"documents": {
"type": "array",
"items": {
"type": "string",
"examples": [
"Declaration of Covenants, Conditions and Restrictions, recorded 2011, amended 2019"
]
},
"examples": [
[
"Declaration of Covenants, recorded 2011"
]
]
},
"meetings": {
"type": "string",
"examples": [
"The Board meets on the second Tuesday of each month at 6:30 p.m. in the clubhouse. Every meeting is open to owners."
]
},
"valediction": {
"type": "string",
"default": "Welcome aboard,",
"examples": [
"Welcome aboard,"
]
},
"signer": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"examples": [
"Priya Raghunathan"
]
},
"title": {
"type": "string",
"examples": [
"President, Board of Directors"
]
},
"organization": {
"type": "string",
"examples": [
"Heron Bay Homeowners Association, Inc."
]
}
}
},
"footer": {
"type": "string",
"description": "Replaces the default \"the recorded documents govern\" line.",
"examples": [
"Where this letter differs from the recorded documents, those documents govern."
]
}
}
}