Data Publisher for Word - Complete User Guide
Master document automation with CSV data, templates, and advanced formatting functions
Introduction
Data Publisher 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 Data Publisher, 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 and image libraries.
Importing Data Files
- Click "Import Data File" to upload CSV or TXT files (up to 50MB)
- View your imported files with metadata showing file size, number of rows and columns, and import status
- Use the three action buttons for each file:
- Fields List: Insert placeholders for available fields
- Sort Data: Organize your data before processing
- Data Viewer: Interactive viewer with search, filtering, and export
Supported File Formats
- CSV files (.csv)
- Text files (.txt)
- Maximum file size: 50MB
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
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), Data Publisher 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
📄 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}}
📋 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")
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
- 38 total functions available - 11 text-based + 27 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
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
- Browse Template Library - Access from the add-in Templates tab
- Select Template - Choose the template that matches your needs
- Customize Fields - Add your data fields to placeholders
- Modify Formatting - Adjust styling to match your brand
- Save & Reuse - Save customized templates for future use
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
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 Data Publisher 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 |
{{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 |
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 |
{{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
Microsoft Graph & Office 365 Integration
Send personalized email campaigns and automate document workflows using Microsoft Graph and your Office 365 account.
Email Campaign Publishing
Create email campaigns in Word and send them directly through your Office 365 account:
- Design Email in Word - Use placeholders for personalized content
- Configure Recipients - Import CSV or connect to Excel/Google Sheets
- Send via Microsoft Graph - Direct delivery through Office 365 (no workflow needed)
- Track Engagement - Monitor opens, clicks, and responses
- Optional: Export Workflow - Create automation packages if advanced scheduling needed
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
Demo and Learning
Demo Tab Features
The Demo tab provides sample datasets and learning resources to help you master Data Publisher.
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
Data Publisher 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.