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

  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, 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

  1. Click "Import Data File" to upload CSV 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 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

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:

  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

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:

  1. Select Source — choose a connection you set up in Sources
  2. Select Table/Sheet — pick the table, worksheet, or view
  3. Configure Import — check/uncheck which columns to include
  4. 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:

<<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), DataPublisher 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

📋 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

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

  • 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.

  1. Browse the catalog - Use the Category filter to narrow the list, click a tile to read its description
  2. Click "Use This Template" - The sample data, templates, and Data Set are copied to your account instantly
  3. Run it with sample data first - Switch to Actions → Merge and click Run Action to see it working
  4. Swap in your own data - Return to Data → Files to replace the sample CSV with your real data
  5. 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:

  1. 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)
  2. Click the card to expand it, then click its AI sub-tab (alongside Data, Data Connector, and Word Templates)
  3. 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:

Using the Sales & Marketing Pack

Click the 🤝 Sales & Marketing mini-tab. It opens with three views:

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

  1. Click a flow definition card — a Start Flow form opens
  2. Enter the Domain ID you want this run to apply to (e.g. real-estate)
  3. Fill in any variables the flow requires — each one the flow declares appears as its own labeled field
  4. 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.

StatusMeaning
CreatedInstance registered, hasn't started running yet
RunningActively executing steps
Waiting ExternalPaused, waiting on an outside event (e.g. a reply or a scheduled delay)
Checkpoint PendingPaused for a human decision — needs Approve or Reject before continuing
EscalatedFlagged for attention, typically after a checkpoint timed out
CompletedFinished successfully
FailedStopped on an error — check the step log for details
CancelledManually 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:

PackDomainWhat it surfaces
Family HealthHomeschool Co-opComposite family health score (0–100) across payment, attendance, volunteer, and response dimensions. Flags families trending downward.
Transaction RiskReal EstateFour-dimension risk score per active transaction: financing, title, inspection, and timeline. Higher score = more risk.
Subcontractor ReliabilityConstruction ManagementReliability 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:

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:

DimensionWeightBased on
Payment35%Payments received vs. late
Attendance25%Sessions attended vs. missed
Volunteer20%Volunteer hours logged vs. missed
Response20%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.

DimensionWeightBased on
Financing30%Financing denied vs. approved events; contingency waived is a positive signal
Title25%Title issues found vs. cleared
Inspection25%Inspections failed vs. passed
Timeline20%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.

DimensionWeightBased on
Schedule Reliability35%Milestones completed vs. delayed
Quality25%Punch-list items closed vs. reopened
Bid Responsiveness20%Bid responses received vs. no-responses
Change Order Control20%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

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 DataPublisher 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
{{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

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
{{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

  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

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:

  1. Select Data File - Choose the CSV with your recipient list (must include an email column)
  2. Map Fields - Identify the recipient email column, name fields, and any other merge fields
  3. 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
  4. Preview - See how the merged email looks for a sample record
  5. 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.

  1. Choose SMS or Email + SMS in the Delivery Channel toggle
  2. Map the phone column - Select the CSV column containing recipient mobile numbers
  3. 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)
  4. 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:

MetricHow It's Tracked
Emails SentTotal emails dispatched
OpensAn invisible 1×1 tracking pixel records a unique open (some email clients that block external images will prevent this)
ClicksLinks are routed through the DataPublisher tracking server before forwarding to the destination
RepliesMonitored 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

  1. Open or generate the document you want signed in Word
  2. Go to Actions → E-Signatures
  3. Click + Send for Signature
  4. 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:

StatusMeaning
SentDelivered, recipient hasn't opened it yet
ViewedRecipient opened the document
SignedRecipient completed the signature
ExpiredThe signing link timed out before signing
RevokedYou 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

ScenarioWhat You SendWhat Comes Back
School enrollmentA "fill in" form with blank student fieldsParent fills in child's name, DOB, allergies
Real estate listing confirmationA "confirm" form pre-filled from your dataAgent confirms or corrects price, square footage, etc.
Contract signatureA "sign" form with the finalized agreementRecipient's e-signature and timestamp
Annual data updateA "fill in" form with last year's valuesRecipient updates what's changed

Sending a DataRequest

  1. Go to Actions → DataRequest → Compose and click + New DataRequest
  2. 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.
  3. Enter recipient details — email (required), name (optional, for a personalized greeting), and an expiry window (default 7 days, 1–365 allowed)
  4. 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:

StatusMeaning
SentLink delivered, recipient hasn't opened it yet
ViewedRecipient opened the link
DraftRecipient started the form and saved a draft
SubmittedRecipient completed and submitted the form
ExpiredLink passed its expiry date without a submission
RevokedYou 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

  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

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.