Word add-in & mail merge
Office.js task pane for Word (Windows / Mac). Sign in to x0, then insert A4 stationery filled from Xero contacts and items.
Install
- Open Word add-in on the portal:
/word/addin/ - Download
x0-word-addin.xml(/word/addin/manifest.xml) - Word → Insert → My Add-ins → Upload My Add-in → choose the manifest
- Home ribbon → Connect x0
Same x0 login and API token as the Excel add-in. Task pane: /word/addin/taskpane/ (HTTPS, frameable).
Templates
| Template | Sheet / file | Data |
|---|---|---|
| Customer mail merge | customer-mailmerge.docx |
Customers (IsCustomer) |
| Supplier mail merge | supplier-mailmerge.docx |
Suppliers (IsSupplier) |
| Customer labels | customer-labels.docx |
Avery L7160 — 3×7 on A4 |
| Inventory labels | inventory-labels.docx |
Avery L7160 — item code, name, price |
| Item catalogue | item-catalogue.docx |
Xero items price list |
Downloads (signed in):
- Blank template:
/word/templates/<slug>.docx - Filled from cache:
/word/templates/<slug>.docx?filled=1 - CSV for desktop Mailings:
/word/merge.csv?kind=customers|suppliers|items - Zip of all blanks + CSVs:
/word/templates.zip
Add-in: Insert template · Merge now
- Sideload the manifest and sign in (token stays in add-in storage, not in the document).
- Pick a template.
- Insert template — blank MERGEFIELD letter/labels (
«ContactName»,«ItemCode», …). - Merge now — builds a filled .docx on x0 and replaces the document body.
Refresh contacts / items on the portal first if the cache is stale (data-freshness.md).
Desktop Word mail merge (no add-in)
- Download a blank
.docxand the matching CSV. - Word → Mailings → Select Recipients → Use an existing list → CSV.
- Fields are already MERGEFIELD. Finish & Merge → Print or Edit individual documents.
Label stock: Avery L7160 / L7159 (63.5 × 38.1 mm, 21 per A4 page).
Merge fields
Contacts: ContactName, FirstName, LastName, GreetingName, EmailAddress, Phone, AddressLine1, AddressLine2, City, Region, PostalCode, Country, TaxNumber, AccountNumber, AddressBlock
Items: OData entity set Items (GET /odata/v1/Items). Fields commonly used in Word: ItemCode, ItemName, ItemDescription, SalesPrice, PurchasePrice, QuantityOnHand, TaxType, AccountCode (mapped from Xero Code / Name / details).
Seller (every row): SellerName, SellerAddress, SellerGst, SellerPhone, SellerEmail, LetterDate
Letters are not tax invoices. Use NZ Excel forms for GST stationery.
APIs
| Method | Path | Auth |
|---|---|---|
| GET | /word/addin/manifest.xml |
public |
| GET | /word/addin/taskpane/ |
public (frameable) |
| GET | /v1/word/merge-data?kind= |
Bearer API key |
| GET | /v1/word/templates/{slug}?filled= |
Bearer API key |
Code signing / trust
Same manifest architecture as the Excel add-in:
Office.js manifests are XML, never Authenticode-signed. Trust is
catalog/admin deployed plus HTTPS on the taskpane host — not a certificate on
the manifest.
| Deployment path | Signing needed? | Notes |
|---|---|---|
| Sideload ("Upload My Add-in" — current path, above) | No | Per-user/device testing. |
| Microsoft 365 admin center — Centralized Deployment | No code signing | Recommended org-wide path; requires HTTPS on every manifest URL. |
| SharePoint app catalog | No code signing | Older org-wide path, same HTTPS requirement. |
| AppSource / Microsoft Marketplace | No Authenticode, but mandatory HTTPS + certification review | Only relevant for a public marketplace listing. |
What is needed: a verified-publisher Microsoft 365 tenant admin to
approve Centralized Deployment/catalog trust, HTTPS on /word/addin/* (and
every other manifest URL), and — only if listing on AppSource — a Microsoft
Partner Center account. An Authenticode/EV certificate is only relevant if x0
ever ships a native VSTO/ClickOnce desktop installer, which it does not
today (this is a browser-hosted Office.js task pane).
Related
- Documentation index · Glossary
- excel-addin.md — Excel Connect x0
- excel-forms.md — NZ A4 tax invoice / PO / quote
- odata.md — Contacts / Items entities