DataPublisher for Word · May 2026
Diagrams and flow charts for the Actions Tab structure, merge flows, email pipeline, and distribution workflows.
ACTIONS TAB
│
├── Row 1
│ ├── Merge ← Core document generation engine
│ ├── E-Signatures ← Send docs for e-sign · track status
│ └── DataRequest ← Outbound form links · collect responses
│
└── Row 2
├── Email Campaigns ← Send tracked email via Microsoft Graph
├── Email Analytics ← Opens · clicks · replies dashboard
└── Email Config ← Microsoft account connection + tracking
│
└── Reference (accessed via button in Merge)
← Placeholder syntax + full function library
BEFORE RUNNING MERGE
│
├── Data file uploaded? Data → Files → Import Data File
│
├── Placeholders in doc? Type <<FieldName>> OR use Data → Builder
│
└── Layout decided?
│
├── Each record on its own page?
│ └── Data Flow: One per page
│
├── All records in one document with loop blocks?
│ └── Data Flow: Single Document (ForEach loops)
│
└── Records flowing through columns?
└── Set Word columns first (Layout → Columns)
└── Data Flow: Flow Columns
│
▼
RUN ACTION
│
▼
Progress bar (cancel available)
│
▼
Generated document
ONE PER PAGE SINGLE DOCUMENT FLOW COLUMNS
──────────── ─────────────── ────────────
Template: Template: Template:
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ <<Name>> │ │ Report │ │ <<Name>> │
│ <<Address>> │ │ {#FOREACH x} │ │ <<Phone>> │
│ Dear <<Name>>│ │ <<x.item>> │ │ <<Name>> │
│ ...letter... │ │ {/FOREACH} │ │ <<Phone>> │
└──────────────┘ └──────────────┘ │ ...flowing...│
│ │ └──────────────┘
▼ ▼ │
Output (3 records): Output (3 records): ▼
Page 1: Alice letter Single document Output (3 records):
Page 2: Bob letter with all 3 items 2-column directory
Page 3: Carol letter listed in sequence flowing top to bottom
<<field_name>>{{FunctionName:parameter}}{{AnotherFunction}}
│ │ │ │
│ │ │ └── Chain more functions
│ │ └── Optional parameter (colon separator)
│ └── Function name (case-sensitive, in {{ }})
└── Data field placeholder (column name from CSV)
Examples:
<<price>>{{FormatCurrency}}
<<name>>{{ToUpperCase}}{{MakeBold}}
<<date>>{{FormatDate:MMMM d, yyyy}}
<<score>>{{ConditionalColorNumeric:>=90=green,70-89=orange,<70=red}}
<<description>>{{TruncateTo:50}}{{RemoveLineIfEmpty}}
{#IF field_name = comparison_value}
← content shown when condition is TRUE →
{ELSE}
← content shown when condition is FALSE →
{/IF}
Supported operators:
= != > < >= <= CONTAINS STARTSWITH ENDSWITH
Example:
{#IF status = Active}
This account is in good standing.
{ELSE}
This account requires attention.
{/IF}
ELSE clause is optional:
{#IF renewal_date = 2026}
Renewal due this year.
{/IF}
Master file: orders.csv Detail file: order_items.csv
order_id | customer_name order_id | product | qty | price
───────────────────── ────────────────────────────────
101 | Alice Smith 101 | Widget A | 2 | 9.99
102 | Bob Jones 101 | Widget B | 1 | 24.99
102 | Gadget X | 3 | 14.99
Template:
Order for <<customer_name>>
{#FOREACH order_items}
<<order_items.product>> Qty: <<order_items.qty>> $<<order_items.price>>
{/FOREACH}
────────────────────
Output (Order 101):
Order for Alice Smith
Widget A Qty: 2 $9.99
Widget B Qty: 1 $24.99
────────────────────
You (in Word) Recipient DataPublisher
───────────── ───────── ─────────────
Open document
│
▼
Actions → E-Signatures
│
▼
+ Send for Signature
Enter: name, email ──────────────► Email with secure link
│ │
▼ ▼
Status: Sent Recipient opens link
│ │
▼ ▼
Status: Viewed Views document
│ │
▼ ▼
Status: Signed ◄───────────────── Signs electronically
│ │
▼ │
Download signed copy ◄────────────── Signed doc archived
You (Compose) Recipient DataPublisher
───────────── ───────── ─────────────
Form Builder
→ Design fields
→ Save to Library
│
▼
Activate schema
│
▼
New DataRequest ──────────────► Email with secure form link
Enter: name, email │
│ ▼
▼ Opens form in browser
Status: Sent │
│ ▼
▼ Fills fields, uploads files,
Status: Viewed e-signs if required
│ │
▼ ▼
Status: Submitted ◄────────── Submits form
│
▼
History panel shows response
→ View submitted data
→ Download uploaded files
→ Review e-signature
CSV (recipient list)
│
▼
Email Campaign Wizard
Step 1: Select data file
Step 2: Map email column
Step 3: Compose subject + body (with <<merge fields>>)
Step 4: Preview personalized sample
Step 5: Send
│
▼
Microsoft Graph API ──► Personalized email from your M365 address
│ │
│ ┌──────────┴──────────┐
│ │ │
▼ ▼ ▼
DataPublisher Open pixel Click proxy link
tracking server fires fires
│ │ │
▼ ▼ ▼
Email Analytics Dashboard
│── Emails Sent count
│── Opens count
│── Clicks count
└── Replies count (via Graph webhook)
First time: After connecting:
─────────── ─────────────────
"Not Connected" Connected account card
[Connect Microsoft Account] │
│ Account name + email
▼ [Refresh] [Disconnect]
Microsoft sign-in page │
│ Tracking toggles:
▼ ☑ Track opens
Approve permissions ☑ Track clicks
│ ☑ Track replies
▼ │
Return to taskpane Test Send form
[Refresh Status] (verify connection)
│
▼
Connected account card appears
POST-PROCESSING FUNCTIONS BY CATEGORY
Text Formatting Data Formatting Visual Styling
─────────────── ─────────────── ──────────────
ToUpperCase FormatCurrency MakeBold
ToLowerCase FormatPhone MakeItalic
ToTitleCase FormatNumber:n CenterText
TruncateText FormatPercent:n SetFontSize:n
TruncateTo:n FormatDate:pattern SetColor:#hex
SetFontColor
ApplyCharStyle
Conditional Logic Dynamic Formatting Images
───────────────── ────────────────── ──────
RemoveLineIfEmpty ConditionalColor InsertImage
RemoveSpaceIfEmpty ConditionalHighlight SetImageWidth:n
AddPrefixIfNotEmpty ConditionalColorNumeric CenterImage
AddPrefix:text ConditionalFormatNumeric AlignImageLeft
AddSuffix:text ConditionalFormatString AlignImageRight
ClassHeader ResizeImageTo:WxH
TruncateTo:n
Layout & Tables
───────────────
DotLeaders
CreateTable:,
CreateTable:|