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

  1. Visit the Demo tab to download sample data and get familiar with the system
  2. Go to the Data tab to import your own CSV files when ready
  3. Create placeholders in your Word document (e.g., <<customer_name>>)
  4. 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

  1. Click "Import Data File" to upload CSV or TXT files (up to 50MB)
  2. View your imported files with metadata showing file size, number of rows and columns, and import status
  3. 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

Image Libraries

Organize your images in libraries for easy access in documents:

  1. Click "Create Library" to start organizing images
  2. Upload images to your libraries
  3. Reference images using libraryName/filename.jpg in placeholders
  4. 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:

<<field_name>>

Example: <<customer_name>> will be replaced with the customer name from your data

Image Fields

Use double square brackets for image filename fields:

[[field_name]]

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:

<<students.FirstName>>
<<families.Phone>>

✅ Perfect for related table fields inside arrays

Root Level (Outside Loops)

Primary table: Use dotted notation

<<classes.ClassName>>

Foreign key joins: Use simplified notation

<<TeacherFirstName>>
<<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 ROSTER
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

  1. Start simple - Begin with basic text placeholders
  2. Design first - Set up your fonts, colors, and layout before adding placeholders
  3. Test frequently - Use the Actions tab to preview your results
  4. 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

  1. Go to the Data tab in the add-in
  2. Find the Word Templates section
  3. Click "Upload Template"
  4. Select any .docx file from your computer
  5. The template appears in your library immediately

Save Current Document

  1. Open or create a Word document with your desired layout
  2. Go to the Data tab in the add-in
  3. Find the Word Templates section
  4. Click "Save Current Doc"
  5. The current document is saved to your library

Viewing Your Templates

In the Data tab, all your templates are displayed as cards showing:

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

  1. Go to the Actions tab
  2. In the Layout & Flow section, you'll see a new "Word Template" dropdown
  3. Click the dropdown to see all your saved templates
  4. Select the template you want to use
  5. Click "Load" to load the template into your current document (optional - or skip to use as-is)
  6. Select your data file as normal
  7. Choose your layout options (one-per-page or flow columns)
  8. 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

Homeschool Co-op Example

Scenario: You manage a homeschool co-op and create class rosters weekly.

Old Workflow:

  1. Open Word, recreate the class roster layout
  2. Add co-op logo and headers
  3. Set up the table structure
  4. Add placeholders for student names, grades, parents
  5. Format fonts and colors
  6. Finally, run the action

New Workflow with Template Library:

  1. Go to Actions tab
  2. Select "Class Roster Template" from dropdown
  3. Select your current students CSV file
  4. 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

  1. Select a data file from your imported files
  2. Choose your layout option:
    • One per page: Each record gets its own page with full formatting
    • Flow Columns: Records flow vertically through document columns
  3. Enable "Keep Together" if you want to prevent page breaks within records
  4. 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

Product Catalog with Bullets:
<<CategoryName>> Products:

{{ForEach:products}}
{{BULLET}}<<ProductName>> - <<Price>>{{FormatCurrency}}
  <<Description>>
{{EndForEach}}
Employee Report with Separators:
{{ForEach:employees}}
<<EmployeeName>> - <<Department>>
Phone: <<Phone>>
Email: <<Email>>
{{SEPARATOR}}
{{EndForEach}}
Customer Profiles with Page Breaks:
{{ForEach:customers}}
Customer Profile
Name: <<CustomerName>>
Status: <<Status>>
Join Date: <<JoinDate>>{{FormatDate:MMMM d, yyyy}}

Notes: <<Notes>>
{{PAGEBREAK}}
{{EndForEach}}
Numbered List with RowNumber:
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:

  1. In Word, click File > Info > Properties
  2. Enter values for Title, Subject, Author, and Keywords
  3. 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

Professional Header/Footer:
{{TITLE}} - Version {{REVNUM}}
Prepared by {{AUTHOR}} on {{TODAY:MMMM d, yyyy}}
Page {{PAGENUMBER}} of {{TOTALPAGES}}
Document Audit Trail:
Document: {{FILENAME}}
Created: {{CREATEDATE}}
Last Modified: {{SAVEDATE}}
Total Edit Time: {{EDITTIME}} minutes
Word Count: {{WORDCOUNT}} | Version: {{REVNUM}}
Auto-Numbering Figures:
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}}...
Multi-Sequence Numbering:
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

Invoice Line Item Total:
{{ForEach:LineItems}}
<<ProductName>>
Quantity: <<Quantity>> x Price: <<Price>>{{FormatCurrency}}
Total: {{MULTIPLY:Quantity,Price}}{{FormatCurrency}}
{{EndForEach}}
Invoice Grand Total:
Subtotal: <<Subtotal>>{{FormatCurrency}}
Tax: <<Tax>>{{FormatCurrency}}
Grand Total: {{ADD:Subtotal,Tax}}{{FormatCurrency}}
Discount Calculation:
Original Price: <<OriginalPrice>>{{FormatCurrency}}
Discount: <<Discount>>{{FormatCurrency}}
Final Price: {{SUBTRACT:OriginalPrice,Discount}}{{FormatCurrency}}
Average Grade Calculation:
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

  1. Browse Template Library - Access from the add-in Templates tab
  2. Select Template - Choose the template that matches your needs
  3. Customize Fields - Add your data fields to placeholders
  4. Modify Formatting - Adjust styling to match your brand
  5. 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

Setting Up PivotMerge

Step-by-Step Setup

  1. 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
  2. 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...
  3. Configure Domain Template (for advanced users)
    • In your domain template configuration, add PivotMerge settings
    • Set recordsPerPage to match your grid (e.g., 10 for 2×5)
    • Optionally specify layout name (e.g., "avery-5390")
  4. 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:

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

All Numeric Operators:
>50 Greater than
<25 Less than
>=100 Greater/equal
<=10 Less/equal
25-75 Range
100 Exact match
Real-World Industry Examples:
📚 Student Grades:
<<grade>>{{ConditionalColorNumeric:90-100=darkgreen,80-89=green,70-79=orange,60-69=darkorange,<60=red}}
🌡️ Temperature Monitoring:
<<temp>>{{ConditionalColorNumeric:>=95=red,85-94=orange,65-84=green,<65=blue}}
💰 Sales Performance:
<<revenue>>{{ConditionalColorNumeric:>=1000000=darkgreen,500000-999999=green,100000-499999=orange,<100000=red}}

2 ConditionalFormatNumeric - Complete Font Control

All 13 Font Attributes:
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, None
strikethrough - 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
Syntax Format:
condition=attribute1:value1;attribute2:value2;attribute3:value3
Power User Examples:
📊 Executive Dashboard KPIs:
<<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 Task List:
<<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}}
💵 Financial Reports:
<<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

String Matching Logic:
✓ Equals Match: Active

Matches "Active" (case-insensitive)

✗ NOT Equals: !Inactive

Matches anything except "Inactive"

Uses ALL 13 font attributes from ConditionalFormatNumeric

Apply any combination of font attributes to text based on exact string matching

Real-World Applications:
📦 Order Status Tracking:
<<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}}
💎 Membership Tiers:
<<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}}
🏢 Department Formatting:
<<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

First Match Wins: Conditions are evaluated left-to-right, first match applies
Case-Insensitive: Text matching ignores uppercase/lowercase
Chaining: Can combine with other functions: {{ConditionalFormatNumeric:...}}{{ToUpperCase}}
Colors: Use names (red, blue) or hex codes (#FF0000, #0078d4)
Numeric Operators: Support >, <, >=, <=, ranges (25-75), exact match
String Logic: Exact match or NOT with ! prefix (!Inactive)

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

  1. Combine Functions: Chain multiple functions like <<name>>{{ToUpperCase}}{{MakeBold}}
  2. Case Sensitive: Function names must match exactly
  3. Parameter Format: Use colons for parameters: {{FormatNumber:2}}
  4. Conditional Values: Use equals and commas: {{ConditionalColor:Yes=green,No=red}}
  5. 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:

  1. Design Email in Word - Use placeholders for personalized content
  2. Configure Recipients - Import CSV or connect to Excel/Google Sheets
  3. Send via Microsoft Graph - Direct delivery through Office 365 (no workflow needed)
  4. Track Engagement - Monitor opens, clicks, and responses
  5. 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

  1. Download Sample Data: Click download links to save demo CSV files
  2. Import to Your Account: Use the Data tab to import the downloaded CSV
  3. Create Document Layout: Add placeholders like <<field_name>> in your Word document
  4. Insert Field Placeholders: Use the Data tab to see available fields
  5. Generate Documents: Use the Actions tab to run the data through your template
  6. Experiment: Try different layouts and post-processing functions

Learning Tips

  1. Start Simple: Begin with basic text placeholders before adding images
  2. Preview Your Work: Use the Actions tab to test results quickly
  3. Experiment with Layouts: Try different data flow options
  4. Check Your Data: Review imported data to understand available fields
  5. Practice with Functions: Try post-processing functions with demo data

Advanced Features

Power User Tips

Character Styling with ApplyCharStyle

Professional Table Formatting

Conditional Document Cleanup

Advanced Data Processing

Image Library Management

Best Practices for Image Libraries

  1. Organize by project - Create separate libraries for different document types
  2. Use consistent naming - Name images descriptively for easy reference
  3. Optimize file sizes - Smaller images load and process faster
  4. Plan for scaling - Use resize functions to maintain consistency

Image Processing Workflow

  1. Upload to library - Organize images in named libraries
  2. Reference in data - Use libraryName/filename.jpg format
  3. Apply functions - Use resize and alignment functions as needed
  4. Test results - Preview to ensure proper sizing and placement

Tips and Best Practices

Document Design Best Practices

1. Design First, Data Second

2. Placeholder Strategy

3. Layout Planning

Data Management Best Practices

1. File Organization

2. Data Quality

3. Performance Optimization

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

Getting Help

If you need additional assistance:

  1. Start with Demo Tab - Use sample data to learn the system
  2. Check this Guide - Reference the function tables and examples
  3. Experiment - Try different combinations of functions and layouts
  4. 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.