DataPublisher for Word - Complete User Guide
Master document automation with CSV data, templates, and advanced formatting functions
Introduction
DataPublisher for Word is a powerful Microsoft Word add-in that transforms how you work with data in your documents. It allows you to create beautifully formatted documents by combining data from CSV files with Word templates that contain placeholders for dynamic content.
Data Integration
Import CSV files up to 50MB to use as data sources
Document Publishing
Transform Word documents with placeholders into multiple formatted pages
Image Libraries
Organize and manage images for automatic insertion
Secure Storage
All data files are securely stored and associated with your account
Advanced Formatting
Over 30 post-processing functions for professional document styling
Multiple Layouts
One-per-page, flowing columns, and table layout options
How It Works
1. Import your data
Upload CSV files containing your information
2. Design your template
Create a Word document with placeholders like <<customer_name>>
3. Add formatting
Use post-processing functions like {{MakeBold}} for advanced styling
4. Run the action
Combine your data with your template to generate formatted documents
Getting Started
First-Time Users
If you're new to DataPublisher, we recommend starting with the Demo tab to experiment with sample datasets, learn how placeholders work, practice with different layout options, and see examples of post-processing functions.
Quick Start Steps
- Visit the Demo tab to download sample data and get familiar with the system
- Go to the Data tab to import your own CSV files when ready
- Create placeholders in your Word document (e.g.,
<<customer_name>>) - Use the Actions tab to combine your data with your document layout
Working with Data
Data Tab Overview
The Data tab is your command center for managing data files, live connections, image libraries, and project workspaces. It's organized into sub-tabs: Files (static CSV uploads and Word templates), Sources (live connections), Import (pull live data straight into a document), Media (image libraries), Tables (in-app data editing), Data Sets (project workspaces and the Domain Template Catalog), and Builder (a visual, no-syntax tool for building placeholders).
Importing Data Files
- Click "Import Data File" to upload CSV files (up to 50MB)
- View your imported files with metadata showing file size, number of rows and columns, and import status
- Use the action buttons for each file:
- Insert Fields: Insert placeholders for available fields
- Sort Data: Organize your data before processing
- View Data: Interactive viewer with search, filtering, and export
- Download: Retrieve the original file to your computer
Supported File Formats
- CSV files (.csv)
- Text files (.txt)
- Maximum file size: 50MB
Editing Data in the Tables Tab
Once a file is imported, use Data → Tables to view, search, filter, and edit individual rows without leaving Word — add a row, fix a value, or delete a record directly. Changes update the stored file immediately, so the next merge run uses the corrected data.
Image Libraries
Organize your images in libraries for easy access in documents:
- Click "Create Library" to start organizing images
- Upload images to your libraries
- Reference images using
libraryName/filename.jpgin placeholders - Use with functions like
{{InsertImage}}and[[image]]placeholders
Supported Image Formats
.jpg, .jpeg, .png, .gif, .bmp, .tiff, .webp
Live Data Connections & Sync
Beyond CSV upload, DataPublisher can connect directly to a live external data source, so you're always merging current data instead of re-exporting a spreadsheet by hand. This is managed from Data → Sources.
Supported Connections
Google Sheets
Connects via Google OAuth. Sign in and grant read access — every sheet you have access to becomes available as a data source.
Microsoft Excel 365
Connects via Microsoft Graph to Excel files stored in OneDrive or SharePoint. Requires a Microsoft 365 subscription.
SQL Server
Direct database connection using a connection string — server address, database name, and credentials. Best for internal databases on your network.
Live source data is never stored in DataPublisher — each time you run a merge or import, the data is fetched fresh from the source. Manage existing connections (re-authenticate or remove) from the Connected Data Sources list in the Sources sub-tab.
Pulling a Live Snapshot with Import
Data → Import is a 4-step wizard for dropping a live data snapshot directly into the document you're working on — useful for a status report or proposal rather than a full personalized-document run:
- Select Source — choose a connection you set up in Sources
- Select Table/Sheet — pick the table, worksheet, or view
- Configure Import — check/uncheck which columns to include
- Preview & Insert — confirm a 5-row preview, then insert as a Word table at your cursor
Import vs. Merge
Use Import for a live snapshot dropped into a single document. Use a connected source with Actions → Merge for high-volume personalized document generation across every record.
Scheduled Sync
For connected sources you run against repeatedly, DataPublisher can refresh the data on a schedule instead of requiring you to reconnect or re-import manually each time — useful for recurring reports and campaigns that should always reflect current records.
Creating Document Templates
Placeholder Syntax
Text Fields
Use double angle brackets for CSV data fields:
Example: <<customer_name>> will be replaced with the customer name from your data
Image Fields
Use double square brackets for image filename fields:
Example: [[product_image]] will insert the image file referenced in your data
Understanding Dotted vs. Simplified Notation
When working with relational data (multiple linked tables), DataPublisher supports two placeholder syntaxes depending on where you use them:
Inside {{ForEach}} Loops
Use dotted notation:
<<families.Phone>>
✅ Perfect for related table fields inside arrays
Root Level (Outside Loops)
Primary table: Use dotted notation
Foreign key joins: Use simplified notation
<<CoopName>>
✅ Simplified names work at document root
Quick Reference Table
| Location | Syntax | Example |
|---|---|---|
| Inside ForEach loop | Dotted notation | <<students.FirstName>> |
| Root - Primary table | Dotted notation | <<classes.ClassName>> |
| Root - Foreign key join | Simplified notation | <<TeacherFirstName>> (not <<teachers.FirstName>>) |
Why this matters: Word's data binding has technical limitations with property names containing dots at the document root level. Inside loops, dotted properties work perfectly for navigating nested data structures.
Real-World Example: Class Roster
Here's how to combine both syntaxes correctly:
Class: <<classes.ClassName>> ← Primary table (dotted ✓)
Teacher: <<TeacherFirstName>> <<TeacherLastName>> ← Foreign key (simplified ✓)
Email: <<TeacherEmail>> | Phone: <<TeacherPhone>>
STUDENTS:
{{ForEach:enrollments}}
<<students.FirstName>> <<students.LastName>> ← Inside loop (dotted ✓)
Family: <<families.FamilyLastName>> ← Inside loop (dotted ✓)
Phone: <<families.PrimaryPhone>>
{{EndForEach}}
Template Design Tips
- Start simple - Begin with basic text placeholders
- Design first - Set up your fonts, colors, and layout before adding placeholders
- Test frequently - Use the Actions tab to preview your results
- Plan for empty data - Use functions like
{{RemoveLineIfEmpty}}for clean layouts
Word Template Library
The Word Template Library feature allows you to upload, store, and reuse your own Word document templates. This powerful feature saves time by letting you build a personal library of templates that can be quickly loaded and combined with your data.
Why Use the Template Library?
Save Time
Load pre-formatted templates instantly instead of recreating layouts each time
Ensure Consistency
Use the same professional templates across all your documents
Easy Reusability
Build once, use many times - perfect for recurring documents
Team Collaboration
Create standard templates for your organization or homeschool co-op
Managing Your Template Library
Uploading Templates
You have two ways to add templates to your library:
Upload from Your Computer
- Go to the Data tab in the add-in
- Find the Word Templates section
- Click "Upload Template"
- Select any .docx file from your computer
- The template appears in your library immediately
Save Current Document
- Open or create a Word document with your desired layout
- Go to the Data tab in the add-in
- Find the Word Templates section
- Click "Save Current Doc"
- The current document is saved to your library
Viewing Your Templates
In the Data tab, all your templates are displayed as cards showing:
- Template Name - The original filename
- Upload Date - When you added it to your library
- File Size - Template size in KB or MB
- Action Buttons - Load, Download, or Delete
Using Templates in the Actions Tab
This is where the real magic happens! The Actions tab workflow has been enhanced to let you select templates from your library.
New Actions Tab Workflow
- Go to the Actions tab
- In the Layout & Flow section, you'll see a new "Word Template" dropdown
- Click the dropdown to see all your saved templates
- Select the template you want to use
- Click "Load" to load the template into your current document (optional - or skip to use as-is)
- Select your data file as normal
- Choose your layout options (one-per-page or flow columns)
- Click "Run Action" to generate documents
Pro Tip: You can select a template from the dropdown and click "Run Action" directly without loading it into the document first. The system will use the template stored in your library for document generation.
Template Actions
Load
Loads the template into your current Word document. Perfect when you want to customize the template before running your action.
Download
Downloads the template file to your computer. Great for sharing templates or creating backups.
Delete
Removes the template from your library (with confirmation). Use this to clean up templates you no longer need.
Common Use Cases
| Use Case | How It Helps | Example |
|---|---|---|
| Weekly Class Rosters | Save your roster template once, use it every week | Upload "Class Roster.docx" with headers, logos, and placeholders ready to go |
| Monthly Invoices | Consistent invoice format with your branding | Save "Invoice Template.docx" with company logo, payment terms, line item table |
| Student Certificates | Professional certificate design used throughout the year | Upload "Certificate.docx" with decorative border, signature lines, co-op logo |
| Field Trip Forms | Standard permission slip layout | Save "Permission Slip.docx" with all required legal text and signature areas |
| Newsletter Templates | Branded newsletter header and layout | Upload "Newsletter.docx" with columns, headers, and content placeholders |
Best Practices
Template Design Tips
- Name Clearly - Use descriptive filenames like "Co-op-Class-Roster.docx" instead of "Template1.docx"
- Include Placeholders - Add all necessary <<FieldName>> placeholders before saving as template
- Set Formatting - Format fonts, colors, logos, headers, and footers before saving
- Test First - Run a test action with sample data before saving as a template
- Keep It Updated - If you modify a template, save the new version with a date or version number
- Organize by Purpose - Create templates for different document types (academic, financial, events, etc.)
Technical Details
- File Format: Only .docx files are supported (Word 2016+, Office 365, Word Online)
- File Size Limit: 50MB maximum per template
- Storage: Templates are securely stored in your account
- Loading Method: Uses OOXML (Office Open XML) technology for fast, programmatic template insertion
- Privacy: Your templates are private - only you can access them
Homeschool Co-op Example
Scenario: You manage a homeschool co-op and create class rosters weekly.
Old Workflow:
- Open Word, recreate the class roster layout
- Add co-op logo and headers
- Set up the table structure
- Add placeholders for student names, grades, parents
- Format fonts and colors
- Finally, run the action
New Workflow with Template Library:
- Go to Actions tab
- Select "Class Roster Template" from dropdown
- Select your current students CSV file
- Click "Run Action" - Done!
Time Saved: What took 15 minutes now takes 30 seconds! ⚡
Running Data Actions
Actions Tab Overview
The Actions tab is where you execute data publishing operations to generate your final documents.
Basic Setup
- Select a data file from your imported files
- Choose your layout option:
- One per page: Each record gets its own page with full formatting
- Flow Columns: Records flow vertically through document columns
- Enable "Keep Together" if you want to prevent page breaks within records
- Click "Run Action" to generate your documents
Data Flow Modes Explained
📋 One Per Page
Best for: Reports, certificates, letters, flyers, individual student records
How it works: Template is processed for EACH record. Each data record creates a separate page with full formatting control.
Perfect when: You need individual documents for each record (e.g., "50 individual product flyers")
📊 Flow Columns
Best for: Directories, catalogs, listings with compact layout
How it works: Records flow through Word columns (setup columns first using Word's Layout > Columns).
Perfect when: You want multiple records per page in column format (e.g., "Phone directory with 3 columns")
📄 Single Document (ForEach loops)
Best for: Product catalogs, price lists, employee directories, reports with multiple items
How it works: Template is processed ONCE. Use {{ForEach:arrayname}} loops inside your template to iterate through all data records.
Perfect when: You want one document with all data items listed (e.g., "Product Catalog - All 50 Products")
{{ForEach:products}}
• <<ProductName>> - <<Price>>
{{EndForEach}}
Choosing the Right Mode
Single Document vs One Per Page - Key Difference:
- Single Document: Template = 1 page, ForEach loops add all data → Result = 1 multi-page document
- One Per Page: Template = 1 page per record → Result = many pages (one per record)
Example: You have a product catalog template with 8 products in your CSV:
- Single Document mode: 1 document with 8 products listed using {{ForEach:products}}
- One Per Page mode: 8 separate pages (template duplicated 8 times)
Pre-Action Checklist
Before running an action, ensure:
- ☐ Data file is imported and selected
- ☐ Document contains proper placeholders
- ☐ Layout option is chosen
- ☐ Word document columns are configured (if using Flow Columns)
Master-Detail Relationships
Master-Detail allows you to work with nested data structures, such as invoices with line items, customers with multiple orders, or students with course enrollments.
ForEach Loop Syntax
Invoice: <<InvoiceNumber>>
Customer: <<CustomerName>>
{{ForEach:LineItems}}
<<ProductName>> - <<Quantity>> x <<Price>>{{FormatCurrency}} = <<Total>>{{FormatCurrency}}
{{EndForEach}}
Total: <<InvoiceTotal>>{{FormatCurrency}}
Formatting Hints for ForEach Loops
Special formatting hints make your ForEach loops more powerful and professional:
| Hint | Purpose | Example |
|---|---|---|
{{BULLET}} |
Add bullet point (•) before content | {{BULLET}}<<FeatureName>> → "• Wireless Connectivity" |
{{SEPARATOR}} |
Add horizontal line (---) between records | Place before {{EndForEach}} to separate items |
{{PAGEBREAK}} |
Start new page for each record in loop | Place before {{EndForEach}} for separate pages |
{{RowNumber}} |
Show current loop iteration number | {{RowNumber}}. <<StudentName>> → "1. John Smith" |
Real-World ForEach Examples with Formatting
<<CategoryName>> Products:
{{ForEach:products}}
{{BULLET}}<<ProductName>> - <<Price>>{{FormatCurrency}}
<<Description>>
{{EndForEach}}
{{ForEach:employees}}
<<EmployeeName>> - <<Department>>
Phone: <<Phone>>
Email: <<Email>>
{{SEPARATOR}}
{{EndForEach}}
{{ForEach:customers}}
Customer Profile
Name: <<CustomerName>>
Status: <<Status>>
Join Date: <<JoinDate>>{{FormatDate:MMMM d, yyyy}}
Notes: <<Notes>>
{{PAGEBREAK}}
{{EndForEach}}
Top Students:
{{ForEach:students}}
{{RowNumber}}. <<StudentName>> - Grade: <<FinalGrade>>
{{EndForEach}}
ForEach Array Names
Your CSV data is accessible using multiple array names for convenience:
{{ForEach:data}}- Generic data array{{ForEach:records}}- Generic records array{{ForEach:items}}- Perfect for item lists{{ForEach:products}}- Perfect for product catalogs{{ForEach:customers}}- Perfect for customer lists{{ForEach:employees}}- Perfect for employee reports
Use whichever name makes your template most readable!
Real-World Examples
Invoice with Line Items
Generate invoices with dynamic product lists
Student Transcripts
Create transcripts with course lists per student
Order Confirmations
Build order summaries with multiple items
Class Rosters
Perfect for homeschool coops - teacher with student lists
Master-Detail Tips
- Array names in {{ForEach:ArrayName}} are case-sensitive
- All field references inside ForEach access child record data
- Parent record fields remain accessible inside loops
- Can nest multiple ForEach loops for complex hierarchies
- Great for homeschool coops: one teacher with multiple students per class
Conditional Document Sections
Show or hide entire document sections based on data values using {{IF}} and {{ENDIF}} blocks.
Conditional Block Syntax
| Condition Type | Syntax | Example |
|---|---|---|
| Equals | {{IF fieldname=value}} |
{{IF Status=Active}} |
| Not Equals | {{IF fieldname!=value}} |
{{IF Type!=Standard}} |
| Greater Than | {{IF fieldname>number}} |
{{IF Score>90}} |
| Less Than | {{IF fieldname<number}} |
{{IF Price<100}} |
| Greater or Equal | {{IF fieldname>=number}} |
{{IF Age>=18}} |
Complete Example
Customer: <<CustomerName>>
{{IF MembershipLevel=Premium}}
VIP BENEFITS:
- Free shipping
- 24/7 priority support
- Exclusive discounts
{{ENDIF}}
{{IF OrderTotal>500}}
🎁 Special Gift Included!
{{ENDIF}}
Homeschool Coop Examples
Grade-Level Content
{{IF GradeLevel=Elementary}}
Show age-appropriate content for younger students
Special Accommodations
{{IF HasIEP=Yes}}
Include individualized education plan notes
Enrollment Status
{{IF Status=Enrolled}}
Show class schedules only for enrolled students
Important Notes
- Every {{IF}} must have a matching {{ENDIF}}
- Conditions are case-sensitive for text values
- Can nest IF blocks inside ForEach loops
- Content inside IF blocks is completely removed if condition is false
Built-in Functions
Built-in Functions provide dynamic values and calculations directly in your templates without requiring data from CSV files.
Date & Time Functions
| Function | Purpose | Example |
|---|---|---|
{{TODAY}} |
Insert current date | {{TODAY}} → "1/15/2025" |
{{TODAY:format}} |
Insert formatted date | {{TODAY:MMMM d, yyyy}} → "January 15, 2025" |
{{NOW}} |
Insert current date and time | {{NOW}} → "1/15/2025 3:45 PM" |
{{NOW:format}} |
Insert formatted date/time | {{NOW:h:mm a}} → "3:45 PM" |
Common Date Format Patterns
| Pattern | Result | Example Usage |
|---|---|---|
MMMM d, yyyy |
January 15, 2025 | {{TODAY:MMMM d, yyyy}} |
MM/dd/yyyy |
01/15/2025 | {{TODAY:MM/dd/yyyy}} |
yyyy-MM-dd |
2025-01-15 | {{TODAY:yyyy-MM-dd}} |
dddd, MMMM d |
Wednesday, January 15 | {{TODAY:dddd, MMMM d}} |
h:mm a |
3:45 PM | {{NOW:h:mm a}} |
Document Field Functions
These are real Word field codes that auto-update as your document changes! They work like native Word fields (Insert > Quick Parts > Field) and update when you press F9 or print.
Document Navigation
| Function | Purpose | Example |
|---|---|---|
{{PAGENUMBER}} |
Current page number (auto-updates) | Page {{PAGENUMBER}} → "Page 5" |
{{TOTALPAGES}} |
Total number of pages (auto-updates) | {{PAGENUMBER}} of {{TOTALPAGES}} → "5 of 10" |
{{SECTION}} |
Current section number | Section {{SECTION}} → "Section 2" |
{{SECTIONPAGES}} |
Number of pages in current section | {{SECTIONPAGES}} pages → "3 pages" |
Document Metadata
| Function | Purpose | Example |
|---|---|---|
{{FILENAME}} |
Document filename (auto-updates when renamed) | File: {{FILENAME}} → "File: Report.docx" |
{{AUTHOR}} |
Document author (from File > Info > Properties) | By {{AUTHOR}} → "By John Smith" |
{{TITLE}} |
Document title (from File > Info > Properties) | {{TITLE}} → "Quarterly Report" |
{{SUBJECT}} |
Document subject (from File > Info > Properties) | {{SUBJECT}} → "Q4 2025 Analysis" |
{{KEYWORDS}} |
Document keywords (from File > Info > Properties) | {{KEYWORDS}} → "report, sales, quarterly" |
Setting Document Properties
To use metadata fields effectively:
- In Word, click File > Info > Properties
- Enter values for Title, Subject, Author, and Keywords
- These values will automatically appear in your template!
Document Statistics
| Function | Purpose | Example |
|---|---|---|
{{WORDCOUNT}} |
Total word count (auto-updates as you type) | {{WORDCOUNT}} words → "1,247 words" |
{{CHARCOUNT}} |
Total character count (auto-updates) | {{CHARCOUNT}} characters → "7,538 characters" |
{{REVNUM}} |
Revision number (increments on save) | Version {{REVNUM}} → "Version 5" |
{{EDITTIME}} |
Total editing time in minutes | {{EDITTIME}} minutes → "45 minutes" |
Document Date Fields
| Function | Purpose | Example |
|---|---|---|
{{CREATEDATE}} |
Document creation date/time | Created: {{CREATEDATE}} → "Created: 1/15/2025 10:30 AM" |
{{SAVEDATE}} |
Last save date/time (auto-updates) | Modified: {{SAVEDATE}} → "Modified: 1/15/2025 3:45 PM" |
{{PRINTDATE}} |
Last print date/time | Printed: {{PRINTDATE}} → "Printed: 1/15/2025 2:15 PM" |
Field vs. Text Dates
- {{TODAY}}/{{NOW}} - Static text, shows date at generation time
- {{CREATEDATE}}/{{SAVEDATE}}/{{PRINTDATE}} - Live fields, update automatically
- Use {{TODAY}} for "Report Generated: January 15, 2025"
- Use {{SAVEDATE}} for "Last Modified: (auto-updates on save)"
User Information
| Function | Purpose | Example |
|---|---|---|
{{USERNAME}} |
Current user's full name (from Windows/Office) | Prepared by {{USERNAME}} → "Prepared by John Smith" |
{{USERINITIALS}} |
Current user's initials | ({{USERINITIALS}}) → "(JS)" |
{{USERADDRESS}} |
User's mailing address (from Office settings) | {{USERADDRESS}} → "123 Main St, City, ST" |
Advanced Field Functions
These functions require parameters and enable powerful cross-referencing:
| Function | Purpose | Example |
|---|---|---|
{{DOCPROPERTY:name}} |
Insert custom document property value | {{DOCPROPERTY:ProjectCode}} → "PRJ-2025-001" |
{{SEQ:name}} |
Auto-incrementing sequence (1, 2, 3...) | Figure {{SEQ:Figures}} → "Figure 1", "Figure 2"... |
{{REF:bookmark}} |
Cross-reference to bookmark content | See {{REF:Introduction}} → "See Project Overview" |
{{PAGEREF:bookmark}} |
Page number of bookmark location | page {{PAGEREF:TechSpecs}} → "page 15" |
Real-World Field Examples
{{TITLE}} - Version {{REVNUM}}
Prepared by {{AUTHOR}} on {{TODAY:MMMM d, yyyy}}
Page {{PAGENUMBER}} of {{TOTALPAGES}}
Document: {{FILENAME}}
Created: {{CREATEDATE}}
Last Modified: {{SAVEDATE}}
Total Edit Time: {{EDITTIME}} minutes
Word Count: {{WORDCOUNT}} | Version: {{REVNUM}}
Figure {{SEQ:Figures}}: System Architecture
[Insert diagram here]
Figure {{SEQ:Figures}}: Database Schema
[Insert diagram here]
As shown in Figure {{REF:Architecture}} on page {{PAGEREF:Architecture}}...
Figure {{SEQ:Figures}}: Sales Chart → Figure 1
Table {{SEQ:Tables}}: Revenue Data → Table 1
Figure {{SEQ:Figures}}: Growth Graph → Figure 2
Table {{SEQ:Tables}}: Expense Report → Table 2
Each sequence maintains its own counter!
Math Functions
Perform calculations directly in your templates using field values:
| Function | Syntax | Example |
|---|---|---|
{{MULTIPLY}} |
{{MULTIPLY:field1,field2}} |
{{MULTIPLY:Quantity,Price}} → Calculate total |
{{ADD}} |
{{ADD:field1,field2}} |
{{ADD:Subtotal,Tax}} → Calculate sum |
{{SUBTRACT}} |
{{SUBTRACT:field1,field2}} |
{{SUBTRACT:Price,Discount}} → Calculate difference |
{{DIVIDE}} |
{{DIVIDE:field1,field2}} |
{{DIVIDE:Total,Count}} → Calculate average |
Real-World Math Examples
{{ForEach:LineItems}}
<<ProductName>>
Quantity: <<Quantity>> x Price: <<Price>>{{FormatCurrency}}
Total: {{MULTIPLY:Quantity,Price}}{{FormatCurrency}}
{{EndForEach}}
Subtotal: <<Subtotal>>{{FormatCurrency}}
Tax: <<Tax>>{{FormatCurrency}}
Grand Total: {{ADD:Subtotal,Tax}}{{FormatCurrency}}
Original Price: <<OriginalPrice>>{{FormatCurrency}}
Discount: <<Discount>>{{FormatCurrency}}
Final Price: {{SUBTRACT:OriginalPrice,Discount}}{{FormatCurrency}}
Total Points: <<TotalPoints>>
Number of Assignments: <<AssignmentCount>>
Average: {{DIVIDE:TotalPoints,AssignmentCount}}{{FormatNumber:2}}
Built-in Functions Tips
- 29 total built-in functions available - 6 text-based + 23 Word field codes!
- Built-in functions work anywhere - headers, footers, body text, inside ForEach loops
- Field functions auto-update - Press F9 or Ctrl+A then F9 to update all fields
- Toggle field code view with Alt+F9 to see the underlying Word field codes
- Combine math functions with post-processing:
{{MULTIPLY:Qty,Price}}{{FormatCurrency}} - SEQ functions maintain independent counters - perfect for numbering figures, tables, steps
- Use
{{TODAY}}for static dates,{{SAVEDATE}}for auto-updating dates - Set document properties (File > Info > Properties) to use
{{TITLE}},{{AUTHOR}}, etc. - Professional reports - Combine {{FILENAME}}, {{REVNUM}}, {{WORDCOUNT}} for audit trails
Domain Templates - Pre-Built Solutions
Domain Templates provide industry-specific, pre-built document templates that you can customize for your needs.
Available Template Libraries
Education & Homeschool
Report cards, transcripts, certificates, course syllabi, student records, progress reports, attendance sheets
Perfect for Homeschool Coops: Class rosters, enrollment forms, parent communications
Healthcare
Patient intake forms, consent forms, medical records, HIPAA-compliant templates
Legal
Contracts, NDAs, service agreements, employment contracts, terms & conditions
Real Estate
Property listings, purchase agreements, lease agreements, disclosure forms
Human Resources
Offer letters, employment agreements, performance reviews, onboarding docs
Sales & Marketing
Proposals, quotes, invoices, sales reports, marketing materials
Construction Management
Project proposals, change orders, subcontractor agreements
Homeschool Coop Specialization
Built for Homeschool Communities
Domain Templates include specialized templates designed specifically for homeschool cooperatives:
- Class Registration: Enrollment forms with parent/student info
- Student Rosters: Teacher class lists with contact information
- Progress Reports: Multi-student report cards by teacher
- Attendance Tracking: Weekly/monthly attendance sheets
- Parent Communications: Newsletters, announcements, schedules
- Financial Documents: Tuition invoices, payment receipts
How to Use Domain Templates
Domain Templates live in the Domain Template Catalog, found under Data → Data Sets. Each catalog entry bundles sample CSV data, pre-designed Word templates with placeholders already placed, and a ready-to-run Data Set.
- Browse the catalog - Use the Category filter to narrow the list, click a tile to read its description
- Click "Use This Template" - The sample data, templates, and Data Set are copied to your account instantly
- Run it with sample data first - Switch to Actions → Merge and click Run Action to see it working
- Swap in your own data - Return to Data → Files to replace the sample CSV with your real data
- Customize as needed - Adjust placeholders, formatting, and layout to match your brand, then save your version for reuse
Need something fully custom instead of a catalog match? Use Build Domain in the same Data Sets sub-tab to open the visual Domain App Builder and define your own data schema and template set from scratch.
Template Benefits
- Time Savings: Start with professional layouts instead of building from scratch
- Best Practices: Templates follow industry standards and compliance requirements
- Fully Customizable: Modify any aspect to fit your specific needs
- Regular Updates: New templates added regularly based on user feedback
AI Assistant
DataPublisher includes a built-in assistant, powered by Claude, that only works inside a Domain App — it's not a general-purpose helper for the rest of the task pane. Its main job is narrowing down a Domain Template: a domain like Real Estate or Healthcare can easily have dozens of templates in its catalog, and it's not always obvious from a list of names which one is the right starting point.
Finding the Right Template
Describe what you're trying to produce — for example, "I need a tuition invoice for my homeschool co-op" or "something for confirming a property listing with an agent" — and the assistant narrows the domain's template catalog down to the ones that actually match, instead of you scrolling and guessing.
If That's Not Enough
Template selection is the core job, but if you're still stuck after picking a template, you can keep talking to it — it can also help you map CSV columns to placeholders or think through an email campaign setup before you open that wizard. Treat this as a fallback for when you're unsure what to do next, not a replacement for the Data and Actions tabs.
Opening the Assistant
The assistant lives on the specific Domain App you're working in, not in the task pane's main navigation:
- Go to Data → Data Sets and find the Domain App card you're working with under My Data Sets (see Domain Templates above for how to get one there)
- Click the card to expand it, then click its AI sub-tab (alongside Data, Data Connector, and Word Templates)
- Click Open AI Assistant to launch it in a larger window
Because it opens from a specific card, the assistant already knows which domain you're in and is scoped to that domain's own templates and data structures — which is what lets it narrow a long template list down instead of giving generic answers.
When to Use It
Reach for the assistant when a Domain App's template list is long and you aren't sure which one fits. If you already know which template and layout you need, it's just as fast to go straight to the Data and Actions tabs — both paths produce the same result.
Capability Packs
Capability Packs add a working functional module — not just templates — to a domain you've set up. Where a Domain Template gives you documents to generate, a Capability Pack gives you a small working application scoped to that domain: real records, a dashboard, and day-to-day data entry, right inside the task pane.
Find them under Data → Data Sets → Capability Packs, below the Domain Pack browser. Two packs are available today:
Financials
Invoices, bills, expenses, AR aging, and a cash summary — a lightweight accounting view for a domain
Sales & Marketing
Contacts, a deal pipeline board, pipeline summary, and a retention watchlist — a lightweight CRM view for a domain
Using the Financials Pack
Click the 📊 Financials mini-tab. It opens with four views:
- Overview — a cash summary widget and an accounts-receivable aging widget
- Invoices — list and detail views for invoices, including recording payments
- Bills — list and detail views for bills, including recording bill payments
- Expenses — expense list for the domain
Using the Sales & Marketing Pack
Click the 🤝 Sales & Marketing mini-tab. It opens with three views:
- Overview — a pipeline summary widget and a retention watchlist
- Contacts — contact list and detail, with an activity timeline per contact
- Pipeline — a deal pipeline board
Packs Are Domain-Scoped
Both packs show data for whichever domain data set is currently active. If nothing is active, the pack tells you to open or select one first — see Domain Templates for how to activate a Domain Template Catalog entry or build a custom domain.
Flow Packs
Flow Packs automate a named, repeatable business process across a domain — things like client onboarding, a renewal reminder sequence, or working an invoice-collections queue — instead of a one-time document merge. Where a Capability Pack gives you a working module (invoices, contacts), a Flow Pack runs a multi-step process over time and tracks where each run currently stands.
Find it under Data → Data Sets, below the Capability Packs section.
Browsing Flow Definitions
The Flow Definitions list shows every flow available in your account, with its trigger type (manual or event-triggered), the domain(s) it's scoped to (if any), and its status.
Starting a Flow
- Click a flow definition card — a Start Flow form opens
- Enter the Domain ID you want this run to apply to (e.g.
real-estate) - Fill in any variables the flow requires — each one the flow declares appears as its own labeled field
- Click Start Flow
Tracking Instances
Every flow you start becomes an instance, listed under Instances for that Domain ID. Click ↻ Refresh to update the list, or click an instance to expand its step-by-step log.
| Status | Meaning |
|---|---|
| Created | Instance registered, hasn't started running yet |
| Running | Actively executing steps |
| Waiting External | Paused, waiting on an outside event (e.g. a reply or a scheduled delay) |
| Checkpoint Pending | Paused for a human decision — needs Approve or Reject before continuing |
| Escalated | Flagged for attention, typically after a checkpoint timed out |
| Completed | Finished successfully |
| Failed | Stopped on an error — check the step log for details |
| Cancelled | Manually stopped |
When an instance is Checkpoint Pending, its expanded log shows a Resume Checkpoint button — approve or reject, with an optional note, to let the flow continue. A running instance can be stopped at any time with Cancel Instance.
Known Limits
- Scheduled waits inside a flow are hour-granularity only — you can't currently schedule a step to the minute
- Variable values are flat text tokens; a flow can't compute a value from another step's output inside the same field
- If the Flow Definitions list is empty, your account's flow catalog may not be seeded yet — contact support
Intelligence Packs
Intelligence Packs watch a domain's activity over time and surface who needs attention — composite scores per entity, independent risk dimensions, and early-warning lists — instead of a raw data table you have to scan yourself. There are currently three Intelligence Packs, one for each of the three core domains:
| Pack | Domain | What it surfaces |
|---|---|---|
| Family Health | Homeschool Co-op | Composite family health score (0–100) across payment, attendance, volunteer, and response dimensions. Flags families trending downward. |
| Transaction Risk | Real Estate | Four-dimension risk score per active transaction: financing, title, inspection, and timeline. Higher score = more risk. |
| Subcontractor Reliability | Construction Management | Reliability score per subcontractor across schedule, quality, bid responsiveness, and change-order control. Lower score = more risk. |
Every event you log feeds one shared activity history for the domain. As more Intelligence Packs are added, they all read from that same history — not separate copies of what happened.
Where to Find It
Intelligence Packs appear in two places:
- Table Manager → 🧠 Insights tab — the operational view. Scores and Alerts sub-tabs show current entity scores and anything flagged for attention. This is the place to check day-to-day.
- Table Manager → ⚙️ Packs → Insights tab — the catalog view. Lists which Intelligence Packs are available for this domain type and what event vocabulary each one watches. Includes a View Scores → link to jump directly to the operational view.
- Data → Data Sets → Intelligence Packs (taskpane) — the event-logging form, for domains that don't yet have automatic event feeds wired in.
Scores are recomputed nightly at 2:00 AM automatically. You can also force an immediate recompute from the Scores view using the Recompute Scores button on any pack.
Family Health — Homeschool Co-op
Scores each family 0–100 across four weighted dimensions based on events logged to the co-op's activity history:
| Dimension | Weight | Based on |
|---|---|---|
| Payment | 35% | Payments received vs. late |
| Attendance | 25% | Sessions attended vs. missed |
| Volunteer | 20% | Volunteer hours logged vs. missed |
| Response | 20% | Documents opened vs. sent |
A dimension with no events yet defaults to a neutral 50 rather than pulling the score down. Tiers: Green (75+), Yellow (50–74), Red (below 50).
Alerts fire on two signals: score dropped 15+ points in the last 30 days, or none of the last three documents sent to the family were opened.
Log events manually via Data → Data Sets → Intelligence Packs, or — for email sends — events are automatically fed when the document distribution flow has intelligence context stamped on the send (a future update; see Known Limits).
Transaction Risk — Real Estate
Scores each active transaction 0–100 across four independent risk dimensions. Higher score = more risk (inverted from Family Health). Each dimension surfaces separately so you know which kind of risk to act on — not just that a problem exists.
| Dimension | Weight | Based on |
|---|---|---|
| Financing | 30% | Financing denied vs. approved events; contingency waived is a positive signal |
| Title | 25% | Title issues found vs. cleared |
| Inspection | 25% | Inspections failed vs. passed |
| Timeline | 20% | Milestones delayed vs. completed |
Tiers: Low (below 30), Medium (30–59), High (60–79), Critical (80+).
Alerts fire when a transaction's composite risk rose 15+ points in the last 30 days, or when it is currently in the Critical tier.
Log events using the real estate domain's event vocabulary: financing_approved, financing_denied, title_issue_found, title_cleared, inspection_passed, inspection_failed, milestone_completed, milestone_delayed, and others (full list in the pack's manifest).
Subcontractor Reliability — Construction Management
Scores each subcontractor 0–100 across four performance dimensions based on events logged over a rolling 12-month window. Higher score = more reliable.
| Dimension | Weight | Based on |
|---|---|---|
| Schedule Reliability | 35% | Milestones completed vs. delayed |
| Quality | 25% | Punch-list items closed vs. reopened |
| Bid Responsiveness | 20% | Bid responses received vs. no-responses |
| Change Order Control | 20% | Change orders per completed milestone (exponential decay — 0 change orders scores 100) |
Tiers: Excellent (80+), Good (60–79), Watch (40–59), At-Risk (below 40).
Alerts fire when a subcontractor's reliability dropped 15+ points in the last 30 days, or when they are currently At-Risk.
Log events using: milestone_completed, milestone_delayed, punchlist_item_added, punchlist_item_closed, punchlist_item_reopened, bid_invitation_sent, bid_response_received, bid_no_response, change_order_submitted, and others.
Known Limits
- Events are logged manually today. Email opens, payment completions, and DataRequest responses will feed the event log automatically in a future update. Until then, use the event-logging form in Data → Data Sets → Intelligence Packs.
- Scores are based on events logged going forward, not on historical CSV data. A family or subcontractor who has no logged events will not appear in the scores table until at least one event is recorded.
- One domain type per pack. Family Health only works for Homeschool Co-op domains, Transaction Risk for Real Estate, and Subcontractor Reliability for Construction Management. The table-manager domain-type detection is based on domain ID matching — see your system administrator if events are not routing to the correct pack.
PivotMerge Multi-Up Layouts
PivotMerge is a powerful feature that allows you to place multiple records on a single page in a grid layout. This is perfect for creating name tags, business cards, labels, flash cards, and other multi-up documents that save paper and time.
Save 90% Paper & Time: Instead of printing one student's name tag per page (100 pages for 100 students), print 10 per page (only 10 pages needed)!
Common Use Cases
| Use Case | Records Per Page | Example Layout |
|---|---|---|
| Name Tags (Avery 5390) | 10 tags per sheet | 2 columns × 5 rows |
| Business Cards | 10 cards per sheet | 2 columns × 5 rows |
| Trading Cards | 9 cards per sheet | 3 columns × 3 rows |
| Flash Cards | 4 cards per sheet | 2 columns × 2 rows |
| Sticker Sheets | 12 or 24 per sheet | Custom grid layout |
| ID Badges | 8 badges per sheet | 2 columns × 4 rows |
How PivotMerge Works
PivotMerge uses special ArrayItem syntax to access individual records within a batch of records on each page:
{{ArrayItem:TableName:0}}
<<Students.FirstName>> <<Students.LastName>>
<<Students.Grade>>
{{EndArrayItem}}
{{ArrayItem:TableName:1}}
<<Students.FirstName>> <<Students.LastName>>
<<Students.Grade>>
{{EndArrayItem}}
... (repeat for each position on the page)
ArrayItem Syntax Explained
- {{ArrayItem:TableName:Index}} - Marks the start of a multi-up item
TableName- Name of your data table (e.g., "Students", "Products")Index- Position in the batch (0-based: 0, 1, 2, 3...)
- {{EndArrayItem}} - Marks the end of the item
- <<TableName.FieldName>> - Regular field placeholders work inside ArrayItem blocks
Setting Up PivotMerge
Step-by-Step Setup
- Design Your Layout
- Create a Word document with a table that has the grid you want (e.g., 2 columns × 5 rows for name tags)
- Format each cell with fonts, colors, borders as desired
- Add ArrayItem Blocks
- In the first cell, add
{{ArrayItem:TableName:0}} - Add your field placeholders (e.g.,
<<Students.FirstName>>) - End with
{{EndArrayItem}} - Repeat for each cell, incrementing the index: 0, 1, 2, 3...
- In the first cell, add
- Configure Domain Template (for advanced users)
- In your domain template configuration, add PivotMerge settings
- Set
recordsPerPageto match your grid (e.g., 10 for 2×5) - Optionally specify layout name (e.g., "avery-5390")
- Run Your Action
- Select your data file
- Choose your configured domain template
- Run the action and watch the magic happen!
Real-World Example: Homeschool Co-op Name Tags
Scenario
Your homeschool co-op has 85 students and you need name tags for the first day.
Without PivotMerge:
- Create 85 separate pages (one name tag per page)
- Print 85 pages
- Cut out 85 individual name tags
- Time: ~2 hours, Paper: 85 sheets
With PivotMerge (Avery 5390):
- Design one template with 10 name tags per page (2×5 grid)
- Add ArrayItem blocks for positions 0-9
- Run action with students.csv file
- Print 9 pages (85 students ÷ 10 per page = 8.5 pages)
- Time: 15 minutes, Paper: 9 sheets ✨
Savings: 90% less time, 90% less paper, and professional-looking results!
Tips for Multi-Up Layouts
Best Practices
- Use Tables: Word tables make alignment easy and consistent
- Test with Long Names: Make sure your layout accommodates longer text without breaking
- Add Borders: Light borders or dotted lines make cutting easier
- Include Blank Space: Leave margin around edges for cutting tolerance
- Preview First: Always preview with a small batch before printing hundreds
- Match Label Sheets: If using pre-cut label sheets (like Avery), match their dimensions exactly
Integration with Other Features
PivotMerge works seamlessly with other DataPublisher features:
- Conditional Content: Use
{{IF}}blocks inside ArrayItem blocks to show/hide content - Post-Processing Functions: Apply formatting functions to fields within multi-up items
- Images: Include student photos or logos in each multi-up position
- Domain Templates: Save PivotMerge layouts as domain templates for easy reuse
Pro Tip: Create a library of PivotMerge templates for different purposes - name tags, business cards, flash cards, labels. Save them in your Word Template Library for instant access!
Post-Processing Functions Reference
Post-processing functions add advanced formatting and logic to your placeholders. Add them after field placeholders using the {{function}} syntax.
Text Formatting
| Function | Purpose | Example |
|---|---|---|
{{ToUpperCase}} |
Convert to UPPERCASE | <<name>>{{ToUpperCase}} → "JOHN SMITH" |
{{ToLowerCase}} |
Convert to lowercase | <<email>>{{ToLowerCase}} → "john@company.com" |
{{ToTitleCase}} |
Convert to Title Case | <<city>>{{ToTitleCase}} → "New York" |
{{TruncateText}} |
Limit to 50 characters | <<description>>{{TruncateText}} → "Long text..." |
{{TruncateTo:30}} |
Custom character limit | <<description>>{{TruncateTo:30}} → "Short text..." |
Data Formatting
| Function | Purpose | Example |
|---|---|---|
{{FormatCurrency}} |
Format as USD currency | <<price>>{{FormatCurrency}} → "$1,234.56" |
{{FormatPhone}} |
Format phone numbers | <<phone>>{{FormatPhone}} → "(555) 123-4567" |
{{FormatNumber:2}} |
Set decimal places | <<rating>>{{FormatNumber:2}} → "4.75" |
{{FormatPercent:1}} |
Format as percentage | <<completion>>{{FormatPercent:1}} → "85.5%" |
{{FormatDate:MM/dd/yyyy}} |
Custom date format | <<date>>{{FormatDate:MMMM d, yyyy}} → "January 15, 2025" |
Visual Styling
| Function | Purpose | Example |
|---|---|---|
{{MakeBold}} |
Apply bold formatting | <<title>>{{MakeBold}} → Bold Text |
{{MakeItalic}} |
Apply italic formatting | <<subtitle>>{{MakeItalic}} → Italic Text |
{{CenterText}} |
Center-align text | <<header>>{{CenterText}} → Centered paragraph |
{{SetFontSize:16}} |
Set font size (points) | <<title>>{{SetFontSize:18}} → 18pt text |
{{SetColor:#FF0000}} |
Set text color (hex) | <<warning>>{{SetColor:#FF0000}} → Red text |
{{SetFontColor}} |
Set text to a fixed default blue - not configurable. Prefer {{SetColor:#hex}} above for any color you need to control. |
<<label>>{{SetFontColor}} → Blue text (#0066CC) |
{{ApplyCharStyle}} |
Apply character style | <<company>>{{ApplyCharStyle}} → Uses DBPUBCS_fieldname style |
Conditional Logic
| Function | Purpose | Example |
|---|---|---|
{{RemoveLineIfEmpty}} |
Remove paragraph if empty | <<address2>>{{RemoveLineIfEmpty}} → Clean layouts |
{{RemoveSpaceIfEmpty}} |
Remove whitespace if empty | Prevents double spaces |
{{AddPrefixIfNotEmpty}} |
Add bullet if has value | <<feature>>{{AddPrefixIfNotEmpty}} → "• Great location" |
{{AddPrefix:★ }} |
Add custom prefix | <<item>>{{AddPrefix:★ }} → "★ Premium feature" |
{{ClassHeader}} |
Show value once per group | <<category>>{{ClassHeader}} → Groups similar items |
Dynamic Formatting
| Function | Purpose | Example |
|---|---|---|
{{ConditionalColorNumeric}} |
Color numbers by value with operators (>, <, >=, <=, ranges) | <<score>>{{ConditionalColorNumeric:>=90=green,70-89=blue,<70=red}} → Color-coded scores |
{{ConditionalFormatNumeric}} |
Full formatting for numbers (font, size, color, bold, italic, etc.) | <<kpi>>{{ConditionalFormatNumeric:>=95=size:16;color:green;bold:true,<80=color:red}} → Comprehensive numeric formatting |
{{ConditionalFormatString}} |
Full formatting for text values (exact match or not-equals with !) | <<status>>{{ConditionalFormatString:Active=color:green;bold:true,!Active=color:gray}} → Format by text value |
Additional Functions
These functions are fully implemented and available today, but were missing from earlier versions of this guide.
| Function | Purpose | Example |
|---|---|---|
{{ConditionalColor}} |
Color text by exact-match value (simpler alternative to ConditionalColorNumeric for text/status fields) | <<status>>{{ConditionalColor:Active=green,Inactive=red,Pending=orange}} |
{{ConditionalHighlight}} |
Highlight text background by exact-match value | <<priority>>{{ConditionalHighlight:High=yellow,Medium=lightblue,Low=lightgreen}} |
{{AlignImageLeft}} |
Insert image aligned to the left of its paragraph | <<photo>>{{AlignImageLeft}} |
{{AlignImageRight}} |
Insert image aligned to the right of its paragraph | <<photo>>{{AlignImageRight}} |
{{AddSuffix:text}} |
Append custom text after a field's value (companion to AddPrefix) | <<name>>{{AddSuffix:, PhD}} → "Jane Smith, PhD" |
{{CreateTable:delimiter}} |
Turn a delimited text field into a Word table | <<csv_data>>{{CreateTable:,}} for comma-separated, {{CreateTable:|}} for pipe-separated |
Aggregate Functions
Calculate totals, counts, and averages across all rows in your dataset — not just the current row. These are post-processing functions and use the <<field>>{{Function}} syntax.
| Function | Purpose | Example |
|---|---|---|
{{COUNT}} |
Count total records, or records in a linked array | <<StudentCount>>{{COUNT}} or {{COUNT:tableName}} |
{{SUM:fieldName}} |
Sum a numeric field across all records (or a linked array) | <<Total>>{{SUM:Amount}} or {{SUM:invoices.Amount}} |
{{AVERAGE:fieldName}} |
Average a numeric field across all records (or a linked array) | <<AvgGPA>>{{AVERAGE:GPA}} or {{AVERAGE:students.GPA}} |
Note: there is also a post-processing {{TODAY}} (used as <<field>>{{TODAY}}) separate from the standalone built-in {{TODAY}} field documented above. Both insert the current date; use whichever fits your placeholder pattern.
Master Class: Advanced Conditional Formatting
Transform your data with intelligent, automatic formatting that adapts to content values
1 ConditionalColorNumeric - Smart Number Color Coding
>50 Greater than<25 Less than>=100 Greater/equal<=10 Less/equal25-75 Range100 Exact match<<grade>>{{ConditionalColorNumeric:90-100=darkgreen,80-89=green,70-79=orange,60-69=darkorange,<60=red}}
<<temp>>{{ConditionalColorNumeric:>=95=red,85-94=orange,65-84=green,<65=blue}}
<<revenue>>{{ConditionalColorNumeric:>=1000000=darkgreen,500000-999999=green,100000-499999=orange,<100000=red}}
2 ConditionalFormatNumeric - Complete Font Control
family - Font name (Arial, Times, Calibri)size - Font size in points (12, 14, 16)color - Text color (red, #FF0000)bold - Bold text (true/false)italic - Italic text (true/false)underline - Single, Double, Nonestrikethrough - Strike through (true/false)doubleStrikeThrough - Double strike (true/false)superscript - Superscript (true/false)subscript - Subscript (true/false)smallCaps - Small capitals (true/false)allCaps - ALL CAPS (true/false)highlightColor - Background highlight<<metric>>{{ConditionalFormatNumeric:>=100=family:Arial;size:20;color:darkgreen;bold:true;underline:Single,90-99=family:Arial;size:16;color:green;bold:true,80-89=size:14;color:blue,70-79=size:12;color:orange;italic:true,<70=size:10;color:red;strikethrough:true}}
<<priority>>{{ConditionalFormatNumeric:1=size:18;color:red;bold:true;allCaps:true;highlightColor:yellow,2-3=size:14;color:orange;bold:true,4-5=size:12;color:blue,>5=size:10;color:gray;strikethrough:true}}
<<variance>>{{ConditionalFormatNumeric:>10=family:Arial;size:14;color:darkgreen;bold:true,5-10=color:green,0-4=color:black,-4-0=color:orange,<-5=color:red;bold:true;highlightColor:pink}}
3 ConditionalFormatString - Text-Based Formatting
Active
Matches "Active" (case-insensitive)
!Inactive
Matches anything except "Inactive"
Apply any combination of font attributes to text based on exact string matching
<<status>>{{ConditionalFormatString:Delivered=color:green;bold:true;size:14,Shipped=color:blue;italic:true,Processing=color:orange,Cancelled=color:red;strikethrough:true,!Delivered=highlightColor:lightyellow}}
<<level>>{{ConditionalFormatString:Diamond=family:Georgia;size:18;color:purple;bold:true;allCaps:true,Platinum=size:16;color:silver;bold:true,Gold=size:14;color:gold;bold:true,!Diamond=size:12;color:gray}}
<<dept>>{{ConditionalFormatString:Executive=family:Arial;size:16;color:darkblue;bold:true;underline:Single,Management=size:14;color:blue;bold:true,Staff=size:12;color:black}}
Quick Reference Card
{{ConditionalFormatNumeric:...}}{{ToUpperCase}}Additional Quick Examples
- KPI Dashboard:
<<performance>>{{ConditionalFormatNumeric:>=100=color:darkgreen;bold:true;size:16,80-99=color:blue;size:14,<80=color:red;italic:true}} - Grade Sheets:
<<grade>>{{ConditionalFormatString:A=color:green;bold:true,B=color:blue,C=color:orange,D=color:red,F=color:red;strikethrough:true}} - Status Fields:
<<status>>{{ConditionalFormatString:Approved=color:green;bold:true,Pending=color:orange;italic:true,Rejected=color:red}} - Sales Reports:
<<variance>>{{ConditionalColorNumeric:>0=green,0=gray,<0=red}} - Priority Levels:
<<priority>>{{ConditionalFormatString:High=size:16;color:red;bold:true,Medium=size:14;color:orange,Low=size:12;color:blue}}
Image Functions
| Function | Purpose | Example |
|---|---|---|
{{ResizeImageTo:300}} |
Set specific width (px) | [[logo]]{{ResizeImageTo:250}} → 250px width |
{{ResizeImageTo:300x200}} |
Set width x height | [[product]]{{ResizeImageTo:300x200}} → 300x200px |
{{CenterImage}} |
Center-align image | [[banner]]{{CenterImage}} → Centered image |
{{SetImageWidth:144}} |
Set width only, aspect ratio locked (defaults to 108pt / 1.5" if no number given). Prefer {{ResizeImageTo}} above if you also need to control height. |
[[photo]]{{SetImageWidth:144}} → 144pt-wide image, height auto-scaled |
{{InsertImage}} |
Insert from library | <<library/image.jpg>>{{InsertImage}} → Library image |
Function Usage Tips
- Combine Functions: Chain multiple functions like
<<name>>{{ToUpperCase}}{{MakeBold}} - Case Sensitive: Function names must match exactly
- Parameter Format: Use colons for parameters:
{{FormatNumber:2}} - Conditional Values: Use equals and commas:
{{ConditionalColor:Yes=green,No=red}} - Empty Field Handling: Use
{{RemoveLineIfEmpty}}to clean up documents
Email, SMS & Office 365 Integration
Send personalized email — and, optionally, SMS — campaigns and automate document workflows using Microsoft Graph and your Office 365 account. Everything runs from Actions → Email Campaigns, with connection setup in Actions → Email Config.
Email Campaign Publishing
Click Launch Email Campaign Wizard and work through the steps:
- Select Data File - Choose the CSV with your recipient list (must include an email column)
- Map Fields - Identify the recipient email column, name fields, and any other merge fields
- Compose Email - Write your subject line and HTML body using placeholders (
<<FirstName>>,<<company>>, etc.), or click Use Document Content to pull in the Word document you already have open - Preview - See how the merged email looks for a sample record
- Review & Send - Confirm the recipient count and send via Microsoft Graph (no separate workflow export required)
As you work through the wizard your configuration is saved automatically — the Saved Campaign Configurations panel lets you reload and re-run a past campaign without rebuilding it.
SMS Delivery (Optional Second Channel)
The Email Campaign Wizard includes a Delivery Channel toggle: Email, SMS, or Email + SMS. SMS sends through your recipients' carrier text gateway — no separate SMS account, phone number, or additional billing required.
- Choose SMS or Email + SMS in the Delivery Channel toggle
- Map the phone column - Select the CSV column containing recipient mobile numbers
- Map or set a default carrier - Select a CSV column with each recipient's carrier, or choose one default carrier for everyone (Verizon, AT&T, T-Mobile, Sprint, US Cellular, Cricket, Boost, Metro by T-Mobile, Google Fi, Republic Wireless)
- Write your SMS template - A dedicated editor enforces the 160-character limit with a live counter and lets you insert
<<field>>tokens; a live preview shows the resolved message against your first record
SMS Notes
- SMS messages are plain text only (no HTML, no images) and are hard-capped at 160 characters — longer messages are truncated
- A carrier must be known for each recipient (mapped column or default) or that recipient's SMS is skipped
- Carrier gateways are best-effort with no delivery receipts — use them for campaigns, not mission-critical single sends
Use Cases
Automated Reporting
Generate and email weekly reports automatically
Document Workflows
Create documents when records are added to SharePoint
Bulk Email Campaigns
Send personalized emails with attached documents
Scheduled Generation
Generate invoices, statements, or reports on schedule
Homeschool Coop Automation
Perfect for Co-op Administrators
- Weekly Class Rosters: Auto-generate and email updated student lists to teachers
- Progress Reports: Automatically create and distribute report cards each semester
- Parent Communications: Send personalized newsletters with student-specific information
- Attendance Reminders: Generate and email attendance sheets to teachers each week
- Enrollment Confirmations: Auto-send confirmation documents when students enroll
Integration Tips
- Test your template with sample data before sending campaigns
- Microsoft Graph respects Office 365 sending limits (usually 10,000/day)
- Use tracking features to monitor campaign performance
- Store generated documents in SharePoint or OneDrive
- Export workflow packages for advanced automation scenarios
Email Analytics
The Email Analytics sub-tab is your aggregate dashboard across every campaign you've sent. Four summary cards show totals:
| Metric | How It's Tracked |
|---|---|
| Emails Sent | Total emails dispatched |
| Opens | An invisible 1×1 tracking pixel records a unique open (some email clients that block external images will prevent this) |
| Clicks | Links are routed through the DataPublisher tracking server before forwarding to the destination |
| Replies | Monitored via Microsoft Graph webhooks and recorded when a recipient responds to a tracked email |
Each of the three tracking behaviors (opens, clicks, replies) can be toggled independently from Actions → Email Config.
E-Signatures
Send the document you're working on to one or more recipients for electronic signature, and track the result — without leaving Word or paying for a separate e-signature subscription.
Sending a Document for Signature
- Open or generate the document you want signed in Word
- Go to Actions → E-Signatures
- Click + Send for Signature
- Enter the recipient's name and email, configure any signing fields or instructions, and send
The recipient receives a secure link. They open it in a browser, review the document, and sign electronically — no account or software required on their end.
Tracking Signature Status
The invitation list on the E-Signatures sub-tab shows every request you've sent. Use the Status Filter to narrow the view:
| Status | Meaning |
|---|---|
| Sent | Delivered, recipient hasn't opened it yet |
| Viewed | Recipient opened the document |
| Signed | Recipient completed the signature |
| Expired | The signing link timed out before signing |
| Revoked | You cancelled the request |
Search by recipient name or email to find a specific request. Archived records are hidden by default — click Archived to include them.
Behind the Scenes
Signed documents are delivered through Microsoft Graph — the same infrastructure as your regular Office 365 email — and every signature event is logged with a full audit trail (timestamps, signer identity, document status) for compliance or legal reference. If a status hasn't updated after a recipient signs, click the Refresh button on the E-Signatures sub-tab to pull the latest status from the server.
DataRequests
Most document automation is one-way: you have the data, you push it into a template, you get a document. DataRequests flip the direction. You send a secure, time-limited link to someone else, and they provide or confirm information inside a custom form rendered from your template — their response flows back into your data automatically. Think of it as: template → form → response → your data, with no email attachments, PDF forms, or manual re-entry.
Real-World Examples
| Scenario | What You Send | What Comes Back |
|---|---|---|
| School enrollment | A "fill in" form with blank student fields | Parent fills in child's name, DOB, allergies |
| Real estate listing confirmation | A "confirm" form pre-filled from your data | Agent confirms or corrects price, square footage, etc. |
| Contract signature | A "sign" form with the finalized agreement | Recipient's e-signature and timestamp |
| Annual data update | A "fill in" form with last year's values | Recipient updates what's changed |
Sending a DataRequest
- Go to Actions → DataRequest → Compose and click + New DataRequest
- Choose a form source:
- Data File — DataPublisher reads a CSV's column headers and builds a form automatically, guessing each field's type (email, phone, date, etc.). Edit labels, field types, and which columns are included before sending.
- Form Schema — use a form you've already designed in the Form Builder and saved to your Forms Library. Toggle between Fill In (recipient enters new data) and Confirm (recipient reviews existing data).
- Domain App — use a pre-packaged form type from a Domain App (Real Estate, School Co-op, Construction Management, etc.), with the data schema already configured.
- Enter recipient details — email (required), name (optional, for a personalized greeting), and an expiry window (default 7 days, 1–365 allowed)
- Review & click Send Invitation — the recipient gets a secure, single-use link by email. No account or password required on their end.
Send Straight from a Data Row
Browsing a file in the Data Viewer? Every row has a send icon. Clicking it opens the DataRequest wizard pre-loaded with that row's recipient email and name, and links the response so a submitted answer writes back to that exact row automatically.
Tracking Responses
The History mini-tab (Actions → DataRequest → History) is your response inbox:
| Status | Meaning |
|---|---|
| Sent | Link delivered, recipient hasn't opened it yet |
| Viewed | Recipient opened the link |
| Draft | Recipient started the form and saved a draft |
| Submitted | Recipient completed and submitted the form |
| Expired | Link passed its expiry date without a submission |
| Revoked | You cancelled the invitation before it was used |
Click any card to see the full response, uploaded files, and any e-signature captured with it. Use Resend to deliver a fresh copy of the same link, or Revoke to immediately invalidate it.
DataRequest vs. E-Signatures
These are related but distinct: DataRequests are for collecting or confirming data (and can include a signature as part of the response). The E-Signatures sub-tab is specifically for sending a finished document out for signature alone. If you just need a signature on a document, use E-Signatures; if you need information back, use DataRequest.
Demo and Learning
Demo Tab Features
The Demo tab provides sample datasets and learning resources to help you master DataPublisher.
Available Sample Datasets
Real Estate Dataset
Content: Property listings with agent info and amenities
Fields: 18 fields including address, price, agent details
Records: 4 sample properties
Use Case: Perfect for real estate flyers, property reports
Business Directory Dataset
Content: Business listings with contact information
Fields: 7 fields including business name, address, phone
Records: 500 business entries
Use Case: Great for directories, contact lists, business catalogs
How to Use Demo Data
- Download Sample Data: Click download links to save demo CSV files
- Import to Your Account: Use the Data tab to import the downloaded CSV
- Create Document Layout: Add placeholders like
<<field_name>>in your Word document - Insert Field Placeholders: Use the Data tab to see available fields
- Generate Documents: Use the Actions tab to run the data through your template
- Experiment: Try different layouts and post-processing functions
Learning Tips
- Start Simple: Begin with basic text placeholders before adding images
- Preview Your Work: Use the Actions tab to test results quickly
- Experiment with Layouts: Try different data flow options
- Check Your Data: Review imported data to understand available fields
- Practice with Functions: Try post-processing functions with demo data
Advanced Features
Power User Tips
Character Styling with ApplyCharStyle
- Creates character style named
DBPUBCS_fieldname - Uses existing formatting as the style template
- Apply with:
<<company>>{{ApplyCharStyle}}
Professional Table Formatting
- Use
{{DotLeaders}}for table-of-contents style formatting - Creates: "Item Name ........ $19.99"
- Perfect for menus, price lists, directories
Conditional Document Cleanup
{{RemoveLineIfEmpty}}prevents empty paragraphs{{RemoveSpaceIfEmpty}}prevents double spaces- Essential for clean, professional layouts
Advanced Data Processing
- Chain multiple functions for complex formatting
- Example:
<<name>>{{ToUpperCase}}{{MakeBold}}{{SetColor:#0066CC}} - Combine conditional logic with visual styling
Image Library Management
Best Practices for Image Libraries
- Organize by project - Create separate libraries for different document types
- Use consistent naming - Name images descriptively for easy reference
- Optimize file sizes - Smaller images load and process faster
- Plan for scaling - Use resize functions to maintain consistency
Image Processing Workflow
- Upload to library - Organize images in named libraries
- Reference in data - Use
libraryName/filename.jpgformat - Apply functions - Use resize and alignment functions as needed
- Test results - Preview to ensure proper sizing and placement
Tips and Best Practices
Document Design Best Practices
1. Design First, Data Second
- Set up your fonts, colors, and layout before adding placeholders
- Use Word's built-in styles for consistency
- Test with sample data before using real data
2. Placeholder Strategy
- Use descriptive field names that match your CSV headers
- Group related placeholders together
- Consider using conditional functions for optional fields
3. Layout Planning
- Choose the right layout option for your content type
- Set up Word columns before using Flow Columns layout
- Use page breaks strategically with One Per Page layout
Data Management Best Practices
1. File Organization
- Use clear, descriptive filenames for your CSV files
- Keep original data files as backups
- Organize related files together
2. Data Quality
- Clean your data before importing (remove empty rows, fix formatting)
- Use consistent data formats (dates, phone numbers, etc.)
- Test with a small dataset first
3. Performance Optimization
- Limit large datasets to essential fields only
- Use appropriate image sizes for faster processing
- Test with smaller datasets before running large batches
Troubleshooting Common Issues
Placeholders Not Replacing
- Check spelling of field names in placeholders
- Ensure field names match CSV headers exactly
- Verify data file is selected in Actions tab
Images Not Displaying
- Check image file paths in your data
- Verify images are uploaded to correct library
- Ensure image file formats are supported
Formatting Issues
- Test post-processing functions with simple data first
- Check function syntax (case-sensitive)
- Verify parameter formats (use colons for parameters)
Security and Privacy
- All data files are securely stored and encrypted
- Files are associated with your account only
- Data is not shared between users
- Regular backups ensure data safety
Getting Help
If you need additional assistance:
- Start with Demo Tab - Use sample data to learn the system
- Check this Guide - Reference the function tables and examples
- Experiment - Try different combinations of functions and layouts
- Test Small - Use small datasets to test before running large batches
Remember
DataPublisher is designed to make complex document generation simple. Start with basic features and gradually explore advanced functions as you become more comfortable with the system.