Adobe InDesign · a panel for Windows and macOS

Data Merge Plus

Data merge with the spreadsheet living inside the panel. Bring in an XLSX, XLS or CSV, put the values in your document, and every value stays linked: the panel keeps showing you what changed in the file, what somebody edited in InDesign, and which row has disappeared. Then build the merged document — one record per page, a grid of records, a different layout per record, QR codes drawn in your own ink.

Runs on InDesign 18.5 and newer System Windows and macOS Reads XLSX · XLS · CSV Line Zalesky Workflow This manual build 1.1.0, 5 October 2026

1 · Getting started

What the panel is for, what it needs, and how to open it.

Data Merge Plus does the job of InDesign's own Data Merge, but it does not stop when the merged document is made. The values you place keep a link back to the row they came from, so the panel can tell you at any moment which price is out of date, which text somebody has retyped by hand in InDesign, and which article has fallen out of the spreadsheet altogether.

You work with two things: a data file (the spreadsheet) and a template (your InDesign document with the places to fill marked in it). The panel sits between them.

What you need

ItemRequirement
InDesignVersion 18.5 or newer (developed against 21.5).
Data fileXLSX, XLS or CSV. It must have a header row and a column whose values are unique — the key.
PicturesOrdinary image files on disk. Pictures pasted inside the spreadsheet cannot be read — see Pictures.
RightsNothing special. The panel writes only into the document you have open and into its own cache folder next to the data file.

Installing

  1. Double-click the .ccx file you were given. Creative Cloud installs the panel.
  2. Restart InDesign if it was running.
  3. Open the panel: menu Window › Extensions › Data Merge Plus.

Dock it where you like. The panel is happiest wide — it is a spreadsheet, and the more columns you can see, the less you scroll.

Everything lives in the .indd

All the settings, and every link between a value in the document and a row in the spreadsheet, are stored inside the InDesign document itself. Send the file to a colleague, open it on another machine — the links are still there. There is no separate database to keep or to lose.

2 · The panel

One trip around the window. Everything here comes back later in detail.

price list – autumn + – ↻ Map ⚙ ⋯ Search All rows Preview ◀ ▶ 2 / 5 Check and Merge… # Code (5) Name (5) Price (5) Was Photo (3) QR (2) 1 1001 milk 1.5% 1 l 19.90 24.90 1001.jpg 2 1002 butter 250 g 39.90 59.90 1002.jpg 3 1003 edam 45% 100 g 22.50 29.90 1003.jpg 4 1004 yoghurt 150 g 9.90 12.90 × 1005 coffee beans 1 kg 299.00 Price · 1002 | Data: 39.90 | In the document: 42.90 · changed in the data file Place << >> Update Update All Go to 5 rows · 20 fields · 1 changed · 1 edited · 1 missing · checked 14:09 · file saved 13:44 1 2 3 4 5 6 7 8 9 10
The panel with one data source loaded and five rows, three of them placed in the document.
  1. Data source — which spreadsheet the grid is showing. A document can hold several.
  2. Six buttons — add a source, remove it, check for changes now, Field Mapping, Settings, and ⋯ which holds everything else.
  3. Search and filter — type to find a row; the dropdown narrows the list to placed, changed, edited or missing rows. The red dot means something is out of sync.
  4. Preview — fills the template with one record so you can look at it. The arrows step through the records.
  5. Check and Merge… — builds the merged document.
  6. Column headings — click to sort, drag the right edge to resize, double-click the edge to fit the column to its longest value, double-click the heading to write that placeholder into the document. The number in brackets is how many values of that column are placed. A value cut off at the edge of its cell shows whole when the mouse rests on it.
  7. The cells — the spreadsheet itself, in colour. Right-click any cell for the menu of things you can do with it.
  8. The line under the grid — what the selected cell holds, what is in the document, and what state it is in, in plain words.
  9. The buttons — Place, insert a placeholder, Update, Update All, Go to.
  10. Status line — how many rows and placed fields, how many are out of sync, when the file was last checked and last saved.

Two views: placeholders and data

There are two tabs above the grid. Placeholders is one line per column — what it is called, what kind it is and whether its placeholder is in the document yet — and it is the view you build a template in. Data is the spreadsheet itself with the state colours, for when values are placed. A document with nothing placed opens on Placeholders, a document with placed values opens on Data, and once you pick a tab yourself the panel leaves it alone. The next section is all about the first of the two.

Where is the flyout menu?

InDesign panels usually have a menu behind the ≡ icon in the top right corner. Not every InDesign shows it, so everything in it is also under the ⋯ button in the panel itself — Import, Field Mapping, Create Merged Document, the overviews, Settings, Diagnostics. You never need the flyout.

3 · The Placeholders view

The list of what the template can hold, and whether it holds it yet. This is where a template is built.

A price list with eight thousand rows says nothing useful about a template with nine spots in it. So while nothing is placed, the panel shows the columns rather than the rows: one line each, with the placeholder to write into the document and how many of them are already there. Work down the list, and when every line is green the template is finished.

Placeholders Data (50) Column Kind Placeholder In the document Code Text <<Code>> – Name Text <<Name>> 1× Price Text <<Price>> 1× Photo Picture <<@Photo>> – QR QR code <<@QR>> 1× Paste placeholder Select placeholder in the document Mark the selected frame Format… Show only when… Field Mapping… Click into the text in the document, then double-click a line here to write its placeholder in. 1 2 3 4
Three of the five columns are already in the template, so their lines are green. The menu belongs to the line you right-click.
  1. The two tabs — Placeholders while you build, Data once there is something placed.
  2. Placeholder — exactly what goes into the document for that column. A picture and a QR code carry the at sign, <<@Photo>>, because a whole frame holds them.
  3. In the document — how many spots that column has: the << >> in the text, frames marked with it, frames named after the column. A frame that is marked counts once, however many ways it shows it.
  4. The menu — right-click a line for everything you can do with that column.

Making the columns wider

Drag the right edge of Column, Kind or Placeholder in the heading; a line lights up where you can grab it. In the document takes whatever room is left, so the list never has to scroll sideways. A double-click on an edge fits that column to its longest text. The widths are remembered, and the Data view works the same way.

Writing a placeholder into the document

  1. Click into the text in the document where it should go — or select the frame that should hold the whole value, which is what a picture or a QR code needs.
  2. Double-click the line in the panel.

The placeholder is written in and the line goes green. It is the same as pressing << >> with that column selected, and the same as double-clicking a column heading in the Data view. One press of Ctrl+Z (Cmd+Z) takes it back.

The menu on a line

EntryWhat it does
Paste placeholderWrites <<Column>> at the text cursor. The same as a double-click.
Select placeholder in the documentFinds the one that is already there and selects it — the text of it, or the whole frame when a frame is the placeholder. Choose it again and the panel walks to the next one, so a column used in five places can be checked in five clicks.
Mark the selected frameMakes the frame you have selected in the document the placeholder of this column — for pictures, QR codes and frames that hold one value.
Format… / KindThe number, date or price format of the column, and whether it is text, a picture or a QR code — the same settings as in Field Mapping, on the column you right-clicked.
Show only when…Gives the frames you have selected a condition, starting with this column already chosen. See Fields on condition.
Field Mapping…Opens the whole table of columns.
Green means "it is in the document"

Green in this view is not the green of the Data view. Here it means the template has a spot for that column; there it means a value is placed and matches the file. A line with a dash has no spot yet — and that is the whole to-do list for the template.

4 · Your first price tag

Ten minutes, from a spreadsheet to a merged document. Do this once and the rest of the manual will read itself.

What you will build

A price tag: code, name, price, and a photo. Five records, five tags on a page.

Step 1 — the spreadsheet

Make an XLSX with a header row and one row per article:

CodeNamePriceWasPhoto
1001Milk 1.5% 1 l19,9024,901001
1002Butter 250 g39,9059,901002

Code will be the key — the column whose values never repeat. That is what ties a value in the document to a row in the file, so it has to be unique.

Step 2 — import it

  1. Open your InDesign document.
  2. In the panel press + (or ⋯ › Import Data Source…).
  3. Pick the file. The dialog shows you the sheet, the first rows and the columns.
  4. Set Key column to Code.
  5. Press Import. The grid fills with your rows. Import and Map… does the same and opens Field Mapping straight away, to set the format, the kind and the styles of each column.

Step 3 — mark the template

Draw a text frame and type the placeholders into it, one per line. You can type them by hand, or put the text cursor where you want one and double-click the column heading in the panel:

<<Code>>
<<Name>>
<<Price>>

For the photo, draw an empty picture frame, select it, click the Photo column in the panel and press << >>. The frame is now named <<@Photo>> in the Layers panel, so you can see it is ready.

Step 4 — try one record

Tick Preview. The first record shows on the page, laid over the template; the arrows step through the others. Untick it and the template is back. Nothing is linked yet — this is only a look.

Step 5 — build the merged document

  1. Press Check and Merge…
  2. Records to merge: All records.
  3. Records per page: Multiple records per page. Leave Columns and Rows at 0 and the panel fits as many as the page takes; tick Preview on the page to see the result on the page before anything is made.
  4. Save as: choose a file name.
  5. Create. The merged document opens with every record in its slot.
What you have now

A merged document whose fields are still linked to the spreadsheet. Change a price in Excel, save, and within ten seconds the cell turns red in the panel. Press Update All and the document follows. That is the part Data Merge cannot do.

5 · Importing data

What the import asks for, why it sometimes refuses, and how to make a messy spreadsheet usable in one click.

The two conditions

Only two things are required of a data file, and the import will not go on without them:

ConditionWhy
A header rowThe names in it become the placeholders. Without names there is nothing to write into the document.
A unique keyEvery placed value remembers which row it came from. If two rows share a key, the panel cannot tell them apart. An article number, an EAN, a code.

The import dialog

ControlWhat it does
(file name)The file being imported, at the top. It is picked before the dialog opens — with +, or with Re-import — so there is nothing to type; the source takes its name.
SheetWhich sheet of the workbook to read.
Header rowWhich line holds the column names. Set it to 3 if the file starts with a title and an empty line.
Key columnThe unique column. Several can be ticked — the key is then made of all of them together (article + position, for example).
ValuesAs displayed in Excel takes the number the way Excel shows it (1 299,90). Raw values takes the bare number (1299.9) for the panel's own formats to work with.
NumbersCzech (1 299,90) or as the file writes them (1,299.90). Excel stores only the format code and Windows draws the comma, so the panel does the same.
Delimiter, EncodingCSV and text files only. Auto-detect usually gets it right; set them by hand when it does not.
Text qualifierCSV and text files only. The character a value is wrapped in when it contains the delimiter or a line break itself — "Apples; red" in a file split by semicolons is one value, not two. Inside such a value a doubled qualifier stands for the character itself: "24"" screen" reads as 24" screen. Double quote is the standard; choose None for a file that uses quotes as ordinary characters.
Import and Map…Imports, then opens Field Mapping for the new source, so the columns can be set up with the data in front of you.
PreviewAll the rows, with the problem ones in red. Columns can be resized and scrolled sideways.

When the import refuses

It never just says "error". The dialog lists every problem in plain words, with the Excel line numbers, and offers the fixes as buttons:

ProblemOffered fix
The key repeatsKeep the first of the duplicates · number them (1001, 1001-2) · skip them · combine the key from another column. The panel also suggests a column that would make the key unique.
The key is emptySkip those rows.
A column has no nameName them automatically (Column D).
Two columns share a nameNumber them (Price, Price (2)).
The header row is wrongUse another row as the header.
Several at onceSkip problem rows and import the rest takes everything usable in one click.

If every row would be skipped, the import stops and says so, rather than leaving you with an empty grid.

Texts that mean "empty"

Exports and pivot tables often write (blank) or (empty) into a cell that should be empty. Those count as empty. The list is in the import dialog, Treat as empty, and can be extended — a pivot table in another language writes its own word, so add that one.

Several data sources in one document

Press + again to add another file — a leaflet can have one source for the front page and another for the inside. The dropdown at the top switches between them, and each keeps its own mapping and formats. – removes a source from the document, and its links with it.

Re-importing and checking

  • ↻ reads the file again right now.
  • The panel also checks on its own every ten seconds (adjustable in Settings). A changed file is recognised by its contents, not only by its time stamp, because InDesign's file access can report the time late.
  • ⋯ › Re-import Data Source… asks for the file first — the same one again, or next week's file in its place — and opens the import dialog with the settings of this source, for when the structure of the file has changed and not just the values. A source named after its old file takes the new name.

6 · Marking the template

Four ways to say "this is where the price goes". Use whichever suits the job; they can be mixed in one document.

1 · placeholders <<Code>> <<Name>> <<Price>> 2 · the column name Code Name Price 3 · the frame name any text at all Layers: Price 4 · a whole frame <<@Photo>> A value can be marked any of these four ways, and one document can use all of them. The panel writes a placeholder for you: put the text cursor where it belongs and press << >>, or double-click the column heading in the grid.
What matters is only that the panel can find the spot. Check what it found with ⋯ › Check the Template.

1 · Placeholders in the text

Type <<Price>> where the value belongs. This is the way Data Merge works and the way Create Merged Document expects, so it is the safest choice for a template that will be merged.

Three ways to get one into the document without typing:

  • Put the text cursor where it goes, click the column in the grid, press << >>.
  • Double-click the column heading — the placeholder lands at the cursor.
  • ⋯ › Insert Placeholders for All Columns writes them all at once, one per line, to build a template quickly.

The name between the angle brackets is the placeholder name of the column, which you can change in Field Mapping — handy when the spreadsheet column is called ArtNr_2024_final and you want <<Code>> in the document.

2 · The plain column name

A frame that simply contains the word Price also counts, as long as a column of that name exists. Useful for templates somebody else built without any placeholders. Matching ignores case, spaces and underscores, so art nr finds the column Art_Nr.

3 · A frame named after the column

Name the frame in the Layers panel after the column. The text inside is then irrelevant — the whole frame is filled. Good for tidy templates where every frame has a name anyway.

4 · A whole frame marked with << >>

Select a frame, click the column in the grid, press << >>. The frame is marked as that column's placeholder: a text frame that holds one value shows <<Name>>, and a picture or QR frame is named <<@Photo>> (with the at sign). The frame is renamed in the Layers panel too, so you can see what is prepared.

A picture frame stays a picture frame when it is marked — it is not turned into anything. The mark is its label and its name in the Layers panel, <<@Photo>>, and that is all the panel needs to find it.

Never together with InDesign's own Data Merge

The placeholders InDesign's Data Merge panel writes are the same <<Field>> text, so Data Merge Plus recognises a template built that way. But the two must not run on the same document. Once InDesign's Data Merge has a data source selected, it keeps invisible markers of its own around its fields — at the very places Data Merge Plus writes its values — and editing those values then goes wrong: deleting leaves characters behind (80 l became 8l) and values stop lining up with their links. Before you import the file here, open InDesign's Window › Utilities › Data Merge panel and choose Remove Data Source from its menu.

Placeholders the search could not see

Find/Change keeps its switches in InDesign, not in the document, and they start switched off — so a placeholder on a hidden layer, on a locked layer or on a master page used not to be found at all. The panel now asks for all of them on every search, so where a placeholder sits no longer matters.

Check before you merge

⋯ › Check the Template… lists everything the panel can find — placeholders, plain column names, marked frames, frames named after a column and conditions — with the page each is on and a red mark for a name that matches no column. Two minutes here saves a merged document full of <<Prcie>>.

7 · Placing values

Five ways to get data into the document, from one cell to a whole page of price tags.

A placeholder, not a value

Two things look alike and are not. Placing writes the value of one row into the document and links it. Writing a placeholder prepares the spot so that every row can go through it later. A double-click — on a line in the Placeholders view, on a column heading in the Data view, or on any cell of that column — writes the placeholder, and the line or the cell goes green to say the template now has that spot. To place a value, use Place.

One value at the text cursor

  1. Click in the text where the value should go.
  2. Click the cell in the grid.
  3. Press Place.

The text is written and linked, and the cell turns green.

A whole record into a frame

  1. Select the frame, several frames, or a group.
  2. Click any cell of the row you want.
  3. Press Place.

Every placeholder inside is filled from that row, and all four ways of marking are searched. The panel then says how many frames have text that no longer fits.

A picture or a QR code

Select the frame, click a cell of an image or QR column, press Place. A frame you marked as a placeholder is turned into a picture frame automatically; it does not have to be a picture frame already.

Several slots at once

A page of price tags, filled in one go:

  1. Select all the slots — frames or groups, in any order.
  2. Click the row you want to start from.
  3. ⋯ › Fill Selected Frames From This Row…

The slots are filled with consecutive rows in reading order: page by page, top to bottom, left to right. The panel says how many slots and how many rows it is about to use and waits for your yes. Nothing has to be named or prepared.

What "linked" means

Every placed value keeps an invisible anchor in the text, or a label on the frame, and the document keeps a table of what that anchor stands for: which source, which row, which column, and the value as it was written. That is what lets the panel notice later that the spreadsheet says something else — or that somebody has retyped the price by hand on the page.

8 · Colours and states

The grid is a report. Five colours and you know where you stand.

  • Green — in sync. The document holds exactly what the file says.
  • Red — changed in the data file. Somebody edited the spreadsheet; the document is behind.
  • Orange — edited in InDesign. The text in the document no longer matches what was placed. Usually a manual correction on the page.
  • Purple — the row is gone. It is placed in the document but no longer in the file.
  • Grey — not placed. The value is in the file but nowhere in the document.
  • Yellow edge — locked. Update leaves this field alone.

Rows that are placed but missing from the file are listed first, not buried at the end, because they are the ones that will embarrass you in print.

Reading one cell

Click a cell and the line under the grid spells it out: the column and the key, what the file says, what the document holds, and the state in words. When a value is placed in several spots, it says how many.

Finding what matters

ControlWhat it does
SearchFinds rows containing the text, in any column.
Status filterShows only placed, not placed, changed, edited, missing, or everything out of sync.
The red dotNext to the filter. It appears when something is out of sync; click it to jump straight to those rows.
Column headingClick to sort, click again to reverse. The number in brackets is how many values of that column are placed in the document.
Go toJumps to the place in the document where the selected cell is used, and to the next one if it is used more than once. The view moves to it the way Find/Change does — a value on another page or scrolled out of sight is brought into the middle of the window and selected, and the zoom stays as it was.
Column widthDrag the right edge of a heading; double-click the edge to fit the column to its longest value. Widths are remembered, also for next week's file with the same columns.

The cell you have selected keeps its colour and gets a violet line round it, so you can tell it apart whatever state it is in.

9 · Keeping it in sync

Update, locks, unlinking, and what to do when a key changes.

Update and Update All

  • Update rewrites the selected cells from the data file.
  • Update All rewrites everything that is out of sync, as a single undo step. It asks first, unless you turn that off in Settings.

Both keep the character style of the field, and both leave locked fields alone. Update also looks through the document first for frames copied a moment ago, so they are updated with the original (see Settings).

Locking a field

Right-click a cell › Lock (never update this). The cell gets a yellow edge and neither Update nor Update All touches it. Use it for the one price the client wants worded differently, so an automatic update cannot undo the correction. Unlock it the same way.

Unlinking

Right-click a cell › Unlink (keep the text) removes the link but leaves the text in the document. Unlink the whole row does it for every field of that record. Use it when a page is finished and should stop following the data.

When the key changes in the file

If an article number changes, the old row disappears (purple) and a new one appears. The panel notices when the new row carries the same values as the lost one and offers Relink: the fields in the document are moved over to the new key, and everything stays in place.

How often it looks

Every ten seconds by default; the interval is in Settings and automatic checking can be switched off entirely. ↻ checks right now. Excel only writes to disk when the file is saved, so the panel cannot see a change until your colleague presses save — the status line shows when the file was last saved, so you can tell whether you are looking at fresh data.

10 · Field Mapping

One row per column of your spreadsheet. This is where you say what each column is and how it should look.

Open it with the Map button, or ⋯ › Field Mapping…

Column in the dialogWhat it is for
ShowUntick to hide the column from the grid. It stays in the data and can still be placed; it just stops taking up room.
ColumnThe name as it is in the spreadsheet. The key column is marked.
PlaceholderThe name used in the document, between the angle brackets. Change it to something short and typeable.
TypeText · Image (the cell holds a file name, a code or a path) · QR code (the panel draws the code itself).
Format / file nameFor a text column, the format profile. For an image column, the file-name pattern. For a QR column, the ink and the Content… button.
Paragraph styleA paragraph style given to the paragraph the value lands in — the whole line, so use it where the value is a line of its own: the name, the description, the price line.
Character styleA character style applied to the value itself — small caps for a unit, bold for a price. It styles only the value, so several columns can share one paragraph.
Object styleAn object style given to the frame that holds the value, which is why a picture and a QR code can have one as well. It is applied where a whole frame belongs to the column: a frame marked with << >>, a frame named after the column, a picture or QR frame, and a frame whose entire text is that one placeholder — an icon or a flash, typically. A frame that holds several placeholders gets nothing, because the columns would take turns overwriting each other's style.
SampleThe first row, shown the way it will appear in the document. A dot · marks a non-breaking space.
ResultUnder the columns: five records at a time, every column ticked to show, exactly as the panel will write them with the settings as they are this moment — formats, picture file names, QR content — and under each placeholder the paragraph, character and object style it will get. It follows every change before you press OK; ◀ ▶ page through the records. Only Read from the file and Numbers show after OK, because they change how the file is read.
Three styles, three jobs

The styles are applied every time the value is written — when it is placed, when it is updated, in the merged document and in both previews — and always with "clear overrides" off, so a look you gave that one frame by hand survives. They are yours to choose; the setting Give every placeholder a style of its own in Settings is the other way round — it makes a style for every placeholder and applies it, which is for templates that have no styles at all. See Styles for the placeholders.

Presets: setting up next week's file in one click

A leaflet comes back every week: the same columns, a new file, and the same half hour of saying which column is a picture, what the price format is, where the photographs are and which style goes on the name. Save as… puts all of it under a name, and next week Apply does it again.

ButtonWhat it does
Save as…Everything in this window under a name of your own. Saving under a name that already exists replaces it.
ApplyWrites the chosen preset onto the columns of the file you have open now.
DeleteRemoves the preset from this machine. It does not touch any document.
Export…Writes the preset to a .json file — to keep with the job, or to send to a colleague.
Import…Reads such a file in. It is then in the list like any other preset.

Columns are matched by name, ignoring case, spaces, underscores and accents — so a preset made on nazev finds Název in the next file. A column the preset says nothing about is left exactly as it is, so a preset from a narrower file can be used on a wider one without wiping the new columns. Afterwards the line under the buttons says what happened: how many columns were set up, which of the preset's columns this file has not, and which of yours were left alone.

The formats travel with the preset

A format — with its replacements, its regular expressions and its change of case — lives on your machine, not in the document. So a preset carries the formats it uses inside it: the ones you made yourself, not the built-in ones, which every copy of the panel has anyway. That is what makes an exported preset worth sending: your colleague imports it and has your rules, not just their names. The data file is deliberately not part of a preset — it is the setting up, not the data.

Under the table

GroupWhat is in it
ValuesRead the file as displayed in Excel or as raw values, and the number style (Czech or as written). These can be changed at any time, without importing the file again.
ImagesThe folders to search, the file-name pattern for the whole source, and the list of extensions to try.
Different layout per recordThe column that decides which snippet a record uses, the folder with the snippets, and what to use when the cell is empty. See A layout per record.
Every placeholder name must be unique

Two columns cannot share a placeholder name — the panel would not know which value to write. The dialog says so and will not let you leave it that way.

11 · Formats

The spreadsheet says 1299.9. The leaflet says 1 299,90 Kč. A format profile is the difference.

Setting the format of a column

Right-click any cell of the column › Format of the column… A list of profiles appears with a live preview of that very value before and after. Pick one, press OK, and every value of the column follows it — in the grid, when placing, and in the merged document.

The same right-click menu switches a column between text and image paths, so a spreadsheet you have never seen before can be set up entirely from the grid.

What a profile can do

SettingExample
Decimals19.9 → 19,90
Thousands separator1299.9 → 1 299,90 (a non-breaking space)
Decimal separatorA comma for Czech, a dot for export
Prefix and suffix19,90 → 19,90 Kč, or Only 19,90
Whole and decimal part apart1 299 and 90 in separate placeholders, for a price set in two sizes
Multiplier0.25 → 25 % for a discount written as a fraction
Letter casemilk 1.5% → MILK 1.5%
Find and replaceYour own rules, one per line as find => change, plain text or a regular expression: 3x100 g → 3×100 g. A regular expression starts with re: — re:(\d)x(\d) => $1 x $2 turns 5x5 into 5 x 5. Without re: the text is looked for letter by letter (pcs => ~Spcs), brackets and backslashes included.
Czech non-breaking spacesPuts a hard space after single-letter prepositions and between a number and its unit
Empty lineWhen the value is empty, remove the whole line rather than leave a gap

Two discount profiles are ready made: 49 % with a space and 49% without. New profiles are made in Settings › Formats, where a test value at the top shows what each one does.

12 · Pictures

The spreadsheet holds a code; the panel finds the file.

How a picture is looked for

The order is fixed, and the first file that exists wins:

  1. The pattern of the column ({Code}, photo_{value}, even {Code}_{Colour}) in every folder, in the order the folders are listed, trying each extension in turn.
  2. The same with the plain value of the cell.
  3. If the name already has an extension (coffee.png), no extensions are added.
  4. A full path in the cell (D:\photos\coffee.tif) is used as it stands.

A name made from the data is also tried without the characters a file name cannot have on Windows — * ? " < > | : — and that one first. A product called SADA KLÍČŮ* (with the asterisk of a footnote) is looked for as SADA KLÍČŮ.jpg. When the cell of a picture column is empty and a pattern makes the name, the grid shows the name that will be looked for, so you can see at a glance what the panel expects to find.

An example

Folders F:\photo\main and F:\photo\backup, extensions jpg, png, tif, pattern {Code}, and the row has Code 1001. The panel tries:

F:\photo\main\1001.jpg
F:\photo\main\1001.png
F:\photo\main\1001.tif
F:\photo\backup\1001.jpg
...

The conditions

ConditionWhy
A file on diskA picture pasted inside the spreadsheet, floating over the cells, cannot be read. A spreadsheet gives up its cell values, not its drawings. This is the one that catches people out.
Something in the cellA file name, a code or a full path — or a name pattern that builds the name from other columns. Without it the frame stays empty.
The column set to ImageRight-click a cell › Treat the column as image paths, or set Type in Field Mapping.
A picture placeholderMark the frame with << >>. A text placeholder cannot hold a picture.
The folder reachableNetwork paths are fine as long as they are mounted on the machine doing the merge.

What happens when a picture is missing

The frame is left empty and the record is named in the report of the merge (Images not found: 2 (e.g. 1004 · Photo)). A merged record never keeps the picture that happened to be in the template. With Remove frames that get nothing on in Create Merged Document, the empty frame is taken away altogether. In the document you are working on, Settings decides whether a missing picture empties the frame or leaves what is there.

Fitting

Settings › Images sets how a picture sits in its frame — fit proportionally, fill the frame, fit the frame to the picture, or nothing — and whether it is centred. A frame marked as a placeholder keeps its own fitting options.

13 · QR codes

The panel draws the code itself, as vectors, in an ink from your document. No generator, no website, no RGB.

A QR column behaves exactly like a picture column — you mark a frame, and Place, Preview and Create Merged Document fill it — except that the picture does not have to exist. It is made from the value in the cell.

Setting one up

  1. Map › set the column's Type to QR code.
  2. Click the colour next to it. The swatches of the document are listed with the colour itself, its ink values and a mark for a spot ink. After you choose, the row shows that colour.
  3. Press Content… and say what the code should hold (below).
  4. In the document, select the frame, click the column in the grid, press << >>.

Why it is a PDF, and why that matters

Each code is written as a small vector PDF into a folder called _zaflo_qr beside the data file, and that PDF is placed into the frame. This is deliberate:

  • CMYK, not RGB. An SVG could only be RGB, which has no business in a print job.
  • A spot ink stays a spot ink. Choose a Pantone swatch and the PDF carries a real separation; InDesign adds that ink to the document, and it separates on the plate as one colour.
  • Vectors. Sharp at any size, no resolution to worry about.
  • Made once. The file name is built from the text and the colour, so the same code in a thousand records is drawn once and placed a thousand times.
Changing the colour later

The colour is part of the file name, so a new colour means a new file. The codes already in the document keep pointing at the old one and go orange in the panel until you press Update All. That is on purpose: nothing changes in a finished document behind your back.

What the code can hold

Content… offers the same kinds InDesign's own QR generator does. Leave a field empty and the value of the cell is used.

KindFieldsWhat ends up in the code
Plain textTextThe text as it is. A code, a batch number, a slogan.
Web addressAddresshttp://… — the protocol is added when it is missing, because a phone cannot open www.something.cz without it.
E-mailAddress, Subject, Messagemailto:info@zaflo.cz?subject=Order%201001 — opens a new mail already filled in.
Text messageNumber, MessageSMSTO:+420777123456:I am interested in…
Phone numberNumbertel:+420777123456 — scanning it dials.
Business cardFirst name, Surname, Job title, Organisation, Phone, E-mail, Web, Street, Town, Postcode, Country, NoteA vCard 3.0. The phone offers to save the contact.
Wi-FiNetwork, Password, SecurityWIFI:T:WPA;S:Guest;P:secret;; — the phone joins the network.

Combining columns — {Column}

This is what makes it useful. Any field of the content may take a value from another column of the same row, written in braces:

You writeWhat it means
{Web}The value of the column named Web, from this row.
{value}The value of the column the QR code itself sits in.
Order {Code}Plain text and a value together.
{Firstname} {Surname}As many columns as you like in one field.

Worked examples

You wantKindFill in
A link to the product pageWeb address Address: https://shop.example.cz/p/{Code}
→ https://shop.example.cz/p/1001
A link with a tracking tag per leafletWeb address Address: {Web}?utm_source=leaflet&utm_content={Code}
An order e-mail with the article in the subjectE-mail Address: orders@example.cz
Subject: Order {Code} – {Name}
Message: Please send me {Name}, price {Price}.
A salesperson's business card, one per branchBusiness card First name: {Firstname} · Surname: {Surname} · Organisation: {Branch} · Phone: {Phone} · E-mail: {Mail} · Town: {Town}
Wi-Fi for a hotel room cardWi-Fi Network: {SSID} · Password: {WifiPass} · Security: WPA
An EAN as plain textPlain text Leave Text empty and put the EAN in the cell. (A QR code holding an EAN is not a barcode — it will not scan at a till.)

How big the frame has to be

The more text, the more modules, and the more modules the smaller each one is in the same frame. The dialog tells you the size as you type (37 × 37 modules). As a rule of thumb for print at a normal reading distance:

What is in itModulesSensible frame
A short code (1001)21 × 21from 15 mm
A link (35 characters)29 × 29from 20 mm
An e-mail with a subject33 × 33from 22 mm
A business card57 × 57 and upfrom 35 mm

Shorten the link if the frame is small — a redirect is better than an unreadable code. Every code is drawn with the quiet zone the standard asks for (four modules of empty space all round), so do not crop the frame tightly or put a rule against it.

Two things the panel will not decide for you

Contrast is your call: a light ink on white will not scan, and the panel does not argue with your choice of colour. And a QR code is not a barcode — for an EAN at a till you still need a barcode, which is a different thing altogether.

Where the files go

Folder _zaflo_qr beside the data file, one PDF per unique text and colour, named after both. Delete the folder whenever you like — the codes are made again when they are needed. Keep it with the job when you hand the document over, the same as any other linked file, or package the document and InDesign collects them for you.

14 · Fields on condition

The discount flash only where there is a discount.

Any frame can be given a condition. When a record does not meet it, the frame is taken out of the merged document — and out of the preview's copy, so the template itself stays whole.

Setting one

  1. Select the frame (or several) in the document.
  2. Right-click the cell of the column that should decide, and choose Show the selected frames only when … — that column is already filled in. (The same thing is in ⋯ › Show Only When…)
  3. Pick the test and press OK.
TestKeeps the frame when
is not emptyThere is anything in the cell. The everyday one: a note, a flash, a second picture.
is emptyThe cell is empty — for a frame that fills the gap left by something else.
isThe value matches exactly. Upper and lower case are ignored.
is notThe value is anything else.
containsThe value contains the text.
is more thanThe number is bigger. Spaces and commas are understood, so 1 299,90 compares properly.
is less thanThe number is smaller.

The dialog says straight away how the first row would come out — the frame stays or the frame goes away. Always show takes the condition off again.

Examples

  • A "NEW" flash: Note is new.
  • A percentage badge only on discounted items: Discount is not empty.
  • A "big pack" ribbon: Weight is more than 900.
  • A second photo only where there is one: Photo2 is not empty.

The condition sits on the frame itself, so it travels with a copy of the frame and is evaluated again for every record in the merge. Conditions are listed in ⋯ › Check the Template…

15 · Styles for the placeholders

A template thrown together in ten minutes has everything in the basic style. One command fixes that.

⋯ › Styles for the Placeholders… walks the document and:

  • gives every paragraph holding a <<Placeholder>> a paragraph style named after that placeholder,
  • gives every marked frame an object style with the same name.

So three placeholders — <<Code>>, <<Name>>, <<Price>> — leave you with styles Code, Name and Price already applied. Set the price once in the Paragraph Styles panel and every price in every record follows, because the merged document keeps the styles.

Your own styles are never touched

Only what has no style at all gets one. A placeholder whose paragraph already has a paragraph style, whose characters have a character style, or whose frame has an object style is left exactly as it is — no character style is laid over a styled paragraph. A frame with an object style of its own keeps it. On a finished template the command may therefore do nothing at all, and that is right: it is meant for a template still in the basic styles.

Which kind of style you get

It depends on what is really in the text. A price tag is usually one paragraph with line breaks in it (Shift+Enter), not three paragraphs — and one paragraph can only carry one paragraph style.

Where the value sitsWhat it gets
Alone in its paragraphParagraph style named after the column or the placeholder.
Sharing a paragraph with other valuesCharacter style on that value alone, so the values do not fight over the paragraph.
A whole frame — a picture, a QR code, a frame holding one valueObject style.

If you would rather have paragraph styles everywhere, build the tag with real paragraph returns instead of line breaks and set the spacing with Space Before in the style.

It works on a filled document too

In a template the styles are named after the placeholders. In a document that is already filled — a merged document, or a page you placed by hand — there are no placeholders left, so the styles are named after the column each value came from. Either way you end up with a style per field, and the command can be run on a merged document after the fact.

One paragraph gets one style. If two values share a paragraph (<<Price>> per <<Unit>>), the style is named after the last one found there.

What it will not touch

Only places that still carry a basic style are changed — [Basic Paragraph], [Basic Text Frame], [None] and their equivalents in a localised InDesign, which are the ones in square brackets. Anything you have already styled yourself is left exactly as it is, and the report says how many it left alone.

A style with the right name that already exists is used, not duplicated. So you can build your styles first, name them after the placeholders, and this command will simply apply them.

Nothing looks different afterwards

A style is only a name for what is already there. When the panel makes a new style it fills it with the look of the very text or frame it was made for, and applies it without clearing the local formatting. A new object style is made with all its categories switched off, because a plain new object style in InDesign carries a black hairline and would draw a frame around every picture it touched.

A style that already exists is used as it is and never rewritten — so you can set your styles up first, name them after the columns, and the panel will simply apply them.

Doing it automatically

Settings › Styles › Give every placeholder a style of its own. With it on, a style is made and applied the moment a placeholder is created. The Name in front of the styles box adds a prefix — put DM  there and you get DM Price instead of Price, so the panel's styles never sit among yours. Create Merged Document does the same as it builds the merged document, so what comes out is already styled.

16 · Preview

Look at a record in the real template before anything is made.

Tick Preview and the page shows the row you are on — real text, real pictures, real QR codes, the styles of the columns — exactly where the template is. Nothing else is added: one record, on the page you are looking at. The arrows step from record to record. Untick it and the template is there again, untouched.

The template is never written into. It is hidden while the preview is on, and what you see is a copy of it laid over it and filled with the record. Switching the preview off takes the copy away. So there is nothing to put back and nothing that can be left half put back, however fast you step through the records. Nothing placed this way is linked to the data: a preview is a look, not a placement.

To see how several records will sit on one page — the grid, the spacing, how many fit — open Create Merged Document. The layout is drawn on the active page for as long as that dialog is open, at its true size, and follows the settings as you change them. See 17 · Create merged documents.

  • Nothing is linked and nothing is saved — the preview is only a look.
  • Frames that already hold real data are left alone, so a page that is half finished is not disturbed.
  • A frame with a condition is left out of the copy for the records it does not belong to.
  • Pictures and QR codes show in their frames, and a frame with nothing to show disappears when Remove frames that get nothing is on in Create Merged Document.
Habit worth having

Step through five or six records before a merge. Overset text, a missing picture, a discount flash on the wrong item — all of it shows up here in twenty seconds.

17 · Create merged documents

The whole run: one record per page, or a grid of them, laid out on the real page while you set it up.

Records to merge All records (240) Records per page Multiple records per page Columns 0 Rows 0 Column spacing 5 Row spacing 5 Start at the page margins Snap the spacing to the page columns Keep fields linked to the data file Remove blank lines for empty fields The active page in the document 1 2 3 4 5 6 7 8 2 x 4 = 8 per page · 240 records = 30 pages (the note the dialog shows under the layout)
The page itself is the preview: the records are laid out on it at their true size, and it is rebuilt as you change the settings. It comes back to the template when the dialog closes.

The layout on the page

There is no thumbnail in the dialog. Tick Preview on the page — at the left of the button row, level with Cancel and Create — and the records are laid out on the page you were looking at: the real page, at its real size, with the real margins, the real spacing and the real order, so what you are judging is the job itself and not a drawing of it. Change a number and it is rebuilt a moment later; a line under the layout settings says how many records fit on a page and how many pages that makes.

The tick starts off every time the dialog opens. Laying a page out is real work in the document, and doing it at every keystroke would have InDesign redrawing the page while you are still typing the number.

The spacings are millimetres and take decimals — 2,15 or 2.99, with a comma or a dot, whichever your keyboard gives you.

The template is only hidden while the preview is up. Untick it, or press Create or Cancel, and the page comes back exactly as it was — nothing laid out this way is written into the document or linked to the data.

The merged document is the template

The merged document starts life as a copy of your template file — not a new document with your pages pasted in. Master pages, paragraph, character and object styles, swatches, layers, the page size, the margins, the bleed and the slug, the guides: all of it is there as it was. Every page the merge adds is a copy of the template page with its contents taken off, so page 7 has the same master, the same margins and the same guides as page 1.

Which records

ChoiceWhat it takes
All recordsEverything in the data file.
Records shown in the panelWhatever the search and the filter have left on screen. Filter to one category, merge just that.
Selected rowsThe rows you have selected in the grid.
RangeFrom row … to row …

One record per page

Every page of the template is repeated for every record, the way InDesign's own Data Merge does it: the first record fills all the template pages, the next record the next set, and so on. Placeholders can sit on any of the pages. A template with <<ID>> and <<Name>> on page 1 and <<Price>> and <<Discount>> on page 2 makes four pages from two records: 1–2 for the first record, 3–4 for the second. The dialog shows how many pages the template has and how many the merge will make. Nothing else to set.

Several records per page

Everything on the first page is treated as one block and repeated in a grid. This needs a one-page template: with two or more pages the dialog says so in red and will not create the document — choose one record per page instead (InDesign's Data Merge has the same rule).

SettingWhat it does
Columns, Rows0 means as many as fit inside the margins. A bigger number than fits is reduced to what fits, and the report says so.
Column spacing, Row spacingThe gap between the blocks, in millimetres.
OrderRows first (left to right) or columns first (top to bottom).
Start at the page marginsOn: the first record sits in the top left corner of the margins. Off: it stays exactly where the template block sits.
Snap the spacing to the page columnsUses the column grid of the page, so the records line up with the rest of the layout.
PagesAs in the template keeps whatever the template document is set to. Facing pages pairs them up the way a leaflet is printed: 1, then 2–3, 4–5 and on. Single pages puts every page on its own. On facing pages the records on a left-hand page start at its outside margin, so they keep clear of the spine on both sides.

The rest of the dialog

SettingWhat it does
Keep fields linkedThe merged document keeps the links, so the panel can update it later. This is the thing Data Merge cannot do. Turn it off for a document you will never touch again: it then comes out clean — only the values from the data, with no XML tags or their markers, no notes, no hyperlinks and no labels of Data Merge Plus, and no fields of InDesign's own Data Merge either, if the template was built with it. Real hyperlinks (to a web page) stay.
Remove blank lines for empty fieldsA record with no second line does not leave a gap.
Remove frames that get nothingA picture or QR frame whose cell is empty — or whose picture is not found — is removed instead of left as an empty box, and so is a text frame when every placeholder in it came out empty, like an icon whose note is empty. Only frames that held placeholders go: a frame the template leaves empty on purpose stays. Missing pictures are still listed in the report, so nothing goes quietly. The preview follows the same setting.
Leave out rows that have nothing in themA row with no value in any column is not merged at all, and the next row takes its place — no empty slot with empty frames in the leaflet. The key column does not count, because a price list usually keeps numbering its empty lines. The preview on the page leaves them out too, and the report says how many went.
Records per document0 = everything in one file. Otherwise the run is split and the files are numbered _2, _3 …
Save asWhere the merged document goes, with the whole path written out — offered beside the data file, as its name with _merged (C:\Jobs\katalog.xlsx gives C:\Jobs\katalog_merged.indd); a data file merged before offers where that went. If a file of that name is already open in InDesign, the panel says so instead of failing.
(all settings)Remembered as you leave them, whether you press Create or Cancel, and kept while you choose where to save. Preview on the page is the one exception: it is always off when the window opens. Closing the window takes the preview off the page, and it leaves nothing behind in the undo list.
Export PDFWrites a PDF beside each document with the export preset you choose.
Open the merged documentLeave it on to look at the result; off for an unattended run.

While it runs

From the moment you press Create the list in the panel gives way to a progress bar: the percentage, and what is happening right now — making the copy of the template, adding the pages, laying the records out, filling record 20 of 45, saving, exporting the PDF. When the bar is gone the report opens; until then InDesign is still working, so leave it to it.

The report at the end

When it is done the panel says how many records went in, how many documents and PDFs were written, how many records fit on a page, which placeholder names matched no column, which pictures were not found and which snippets were missing. Read it — it is the difference between noticing a problem now and noticing it in print.

18 · A layout per record

One big tag, three small ones, a landscape one — all in the same run.

A record can bring its own layout. You build each variant once, save it as an InDesign snippet, and a column of the spreadsheet says which one each record uses.

Setting it up

  1. Build one variant in InDesign with its placeholders in it.
  2. Select it and choose File › Export › InDesign Snippet. Name the file after the value you will write in the spreadsheet: big.idms, small.idms.
  3. Add a column to the spreadsheet — say Layout — holding big or small for each record.
  4. Map › Different layout per record: set Column deciding the layout to Layout and Folder with the snippets to the folder with the .idms files.
  5. Merge as usual, with Multiple records per page.

What the panel does

  • Each record is given the snippet its cell names, placed into its slot and filled from that row — placeholders, pictures, QR codes and conditions all work inside a snippet.
  • Every layout in play is measured first, and the grid slot is made as big as the biggest of them, so a big record cannot reach into its neighbour.
  • A record whose cell is empty uses Snippet for an empty cell, or the template on the first page when that is not set.
  • If no record uses the template, it is taken off the page rather than left lying under the records.
  • A snippet that cannot be found is named in the report.

With no layout column set, everything works exactly as before — one template for every record.

19 · Overviews and checks

Four lists that answer the questions you actually have.

WhereWhat it tells you
⋯ › Check the Template…Everything the panel can find in the document: placeholders, plain column names, marked frames, frames named after a column, conditions. With the page, and in red anything that matches no column. Run it before every merge.
⋯ › Placed Fields Overview…Every value placed in the document, grouped by page, with its state. Click a line to jump to it. The answer to "where is this price actually used?"
⋯ › Text That Does Not Fit…Every frame with overset text, with its page and the beginning of the text. Click to show it, or copy the whole list for the person who writes the copy.
⋯ › Run Diagnostics…Tries every step of placing a field in this InDesign and reports what works. Send the text with a bug report. See below for what it actually does.

What Run Diagnostics does

A value stays linked by an anchor in the text, and there are four ways of making one — a hyperlink source, an XML element, a note, or a label on the frame. Which of them InDesign allows is not the same everywhere: the same version refuses to write an XML attribute in one document and accepts it in the next. Rather than guess, the panel asks the document.

That is why it wants a text cursor. Click into text, run it, and it writes two characters there, tries each of the four ways on them, reads each one back to see whether the link can be found again, and takes it away. The first way that survived is the one the panel uses from then on, and the report lists all four with what happened to each. The two characters, the links and the XML tag the test made are all removed at the end — you are left with the document as it was.

The tag the test used to leave behind

Trying the XML way tags the text, and InDesign keeps the tag in the Tags panel even after the element using it is gone — so a diagnostics run used to leave zaflo sitting there, and a Root in the Structure pane. It is now taken away again, unless something in the document is really using it.

The document writes down what the panel did

The last forty things the panel did are kept inside the document itself. If an action seems to do nothing, that log says why — and anybody can read it from a script, even with the panel closed. See the next section.

20 · Settings

Everything in the ⚙ button, in order.

SettingWhat it does
Check automaticallyWhether the panel looks at the data files on its own, and how often (ten seconds by default).
Also check the text in InDesignCompares the text on the page with what was placed, which is what finds manual edits (orange). Switch it off in a very large document if the checking feels slow.
Compact rowsShorter rows, more of them on screen.
Ask before Update AllThe confirmation before a bulk update.
Copies of a placed value are updated with itCopy a frame with a placed value and the copy follows the same cell, and Update changes both. Switch it off when copies are made to be changed on their own: they are then left alone.
Give every placeholder a style of its ownMakes and applies a paragraph or object style whenever a placeholder is created. See Styles.
Name in front of the stylesA prefix for those style names, e.g. DM .
Fitting, Center contentHow a picture sits in its frame.
Missing imageKeep what is in the frame, or empty it, when no picture is found.
Cell coloursThe legend, so you can check what each colour means without leaving the dialog.
FormatsThe list of format profiles with a test value at the top. New profiles are made here.

21 · Trial and licence

Fourteen days with everything on, then a key from the purchase. The trial and the full version are the same plugin.

The trial

The trial starts the first time the panel opens and runs for 14 days. Everything works while it runs. The days left are shown at the bottom right of the panel — click there, or choose ⋯ › Licence…, to open the Licence window. Nothing in a document you have already made ever expires: a merged document is an ordinary InDesign file.

After the trial

Keeps workingNeeds a licence
The data, the grid and the coloursPlace, double-click to place, Update and Update All
Import and Re-import, Field MappingPreview and Check and Merge
Check the Template, Placed Fields, Go toInserting placeholders, marking frames
Settings, Diagnostics, About, LicenceStyles for the Placeholders, Show Only When, Fill Frames From This Row

A paid command used after the trial opens the Licence window and says what it needs.

Buying and activating

  1. Open ⋯ › Licence… and press Buy the full version. The Gumroad page opens in your browser.
  2. After paying, the licence key is in the receipt e-mail and on the page Gumroad shows you.
  3. Paste the whole key, dashes and all, into Gumroad key and press Activate. The key is checked with Gumroad there and then, and the window says the result.
SituationWhat happens
Another computerInstall the same plugin and activate the same key. There is nothing else to download.
No internetA licence confirmed once keeps working offline for 30 days from the last successful check. The panel checks with Gumroad about once a day by itself; a few days before the 30 run out, the bottom of the panel says a check is needed.
Take the key off this computerRemoves the activation here. The key is not used up — paste it in again here or on another computer.
RefundA refunded or charged-back purchase is switched off at the next check.
"That key was not accepted"Check that the whole key was pasted and that it is the key of Data Merge Plus — each plugin has its own. If Gumroad could not be reached, try again when you are online; the trial and your documents are not affected.

22 · What is stored in the file

For the curious, and for anyone testing the panel or writing a script beside it.

Everything is inside the .indd. No side-car file, no database. Open the document somewhere else and the links are still there.

zaflo.sources.v1
The data sources: path, sheet, key columns, the mapping of every column, formats, image rules, QR settings, snippet settings.
zaflo.links.v1
The link table: for every placed value a short id and behind it the source, the key of the row, the column and the value as it was written, plus the lock. Entries like item:247 tie a frame to its id, which is how a copied frame is recognised.
zaflo.preview
Which copies the preview laid on the page and which items of the template it hid, so switching it off removes and shows back exactly those.
zaflo.log
The last forty things the panel did, with the time. The lines are held back until the panel writes something else into the document and then go in with it: writing a label is a step back of its own in InDesign, and one thing you did should be one press of Ctrl+Z. The copy on disk is written at once either way.
zaflo.field · zaflo.ph · zaflo.when
Labels on a frame: the id of the value placed in it, the column it is a placeholder of, and the condition under which it belongs to a record.
Why there are no <FEFF> characters

InDesign's own Data Merge leaves invisible characters around the values it writes. Data Merge Plus does not: InDesign drops that character when a script writes it, and a merged document from Data Merge is not linked to its data anyway. Data Merge Plus keeps its links as InDesign objects — a link on the text, or, for a value that is the whole text of its frame, a label on the frame. The frame is the safer of the two: InDesign deletes the link of a text the moment all of the text is typed over, but a frame keeps its label whatever is typed in it, and a copy of the frame carries it along.

A placed piece of text keeps its id in the story itself. Four ways are tried, in this order, and the first the running InDesign accepts is used: a hyperlink text source named ZAFLO:<id>, an XML element, a note, or a label on the frame. The fallback chain exists because notes and XML attributes cannot be written from every build.

The log file

The same lines are written to a plain text file, which can be opened in any editor — including when the panel itself has stopped answering, which is when a log is worth having. It holds every action, every failure, and the version of the panel and of InDesign it is running on. This is the copy to look at when something behind a dialog went wrong, because a modal dialog has nowhere to show a message from.

SystemWhere the file is
Windows%APPDATA%\Adobe\UXP\PluginsStorage\…\com.zalesky.zaflomerge\zaflo-log.txt
macOS~/Library/Application Support/Adobe/UXP/PluginsStorage/…/com.zalesky.zaflomerge/zaflo-log.txt

The exact path is in ⋯ › About Data Merge Plus, and the file says it in its own first line. It keeps the newest 256 kB and drops older lines.

Reading it from a script

var d = app.activeDocument;
$.writeln(d.extractLabel("zaflo.log"));
$.writeln(d.extractLabel("zaflo.links.v1"));
$.writeln(d.extractLabel("zaflo.sources.v1"));

ExtendScript inside doScript has no JSON, so use eval("(" + label + ")") if you want to walk the table.

What the state of a cell is made of

Three things are compared: the value in the data file now, the value stored in the link table when it was written, and the text actually in the document. Same everywhere → green. File differs → red. Document differs → orange. Row gone from the file → purple.

23 · When something goes wrong

Symptom, cause, cure.

What you seeWhat to do
The import will not go onRead the list in the dialog — it names the Excel lines and offers the fix as a button. Most often the key repeats or is empty.
Place says nothing matchesThe frame holds no placeholder the panel can find. Run Check the Template… and look at what it did find; check the spelling between the angle brackets against the Placeholder column in Field Mapping.
A value came out with a dot instead of a commaField Mapping › Numbers → Czech, or give the column a price format. Excel only stores the format code; the comma is drawn by Windows.
A picture does not appearThe file must exist on disk with a name the rules can build. Click the cell and read the line under the grid — it shows the exact path the panel is looking for. Pictures pasted inside the spreadsheet cannot be used.
The QR code is black although a colour was chosenChoose the colour again in Field Mapping and press Update All. The colour is part of the file name, so codes already placed keep the old file until they are updated.
A cell is orange and nobody edited anythingSomething in the document does differ — a character style that changes the case, a space, a manual line break. The line under the grid shows both texts side by side.
Text does not fit after an update⋯ › Text That Does Not Fit… lists every overset frame.
The merged document is empty or wrongRead the report, then the log in the document (see What is stored in the file). It records every stage of the merge.
A placeholder came back broken after PreviewOlder builds wrote the preview into the template itself and sometimes put a placeholder back in the wrong place — PEKÁČ NA H<<pop>>USU or stránka: 232323 is what it looked like. Since 0.9.4 the preview does not write into the template at all. A template damaged by an older build has to be put right by hand once, or reverted (File › Revert).
A tick box does nothingUpdate to 0.9.2 or later. UXP did not always deliver the tick to the panel, so the box looked ticked while nothing happened.
Ctrl+Z does not take back what I didOne action is one step back. If you are on an older build it takes three, because the panel wrote its log and its link table as steps of their own.
The preview in Create Merged Document shows nothingRecords per page must be Multiple records per page — with one record per page there is nothing to lay out. If it still shows nothing, the log file says why; see What is stored in the file.
Copy the value put nothing in the clipboardSome InDesign builds do not let a panel write to the clipboard at all. The panel now notices and hands the value over in a little window instead, to select and copy by hand.
The panel says it is busy, and stays busyA Data Merge Plus window is open behind the panel — InDesign sometimes puts a window there after a file or folder has been picked. Click the panel once more: it says which window is open, and a second click closes it as if Cancel had been pressed. With no window open, the panel frees itself after twenty seconds.
Create does nothing and says Multiple records per page need a one-page templateThe template document has more than one page. Several records on one page are laid out from a single page, so either choose Single record per document page(s) — every record then gets all the pages — or move the block onto a one-page document.
Deleting leaves characters behind, or values do not line up with their linksThe document is also set up in InDesign's own Data Merge. Its invisible markers sit around the same fields. Open Window › Utilities › Data Merge, choose Remove Data Source, and never run both on one document.
The panel does nothing at allClose and reopen it from Window › Extensions. If it still does nothing, ⋯ › Run Diagnostics… and send the text.

24 · Words used here

If you have never done a data merge before, these are the only terms you need.

WordMeaning
Data sourceThe spreadsheet the panel is reading, and its settings.
Record / rowOne line of the spreadsheet. One article, one property, one guest.
KeyThe column whose values never repeat. It is how a value in the document knows which row it came from.
FieldOne value placed in the document and linked back to its row and column.
PlaceholderThe mark in the template that says "a value goes here" — <<Price>>, a marked frame, or a frame named after a column.
TemplateThe document with the placeholders in it. The thing you design once.
Merged documentThe new document the panel builds with the records in it.
SnippetA piece of an InDesign layout saved as an .idms file, used here as a layout variant for a record.
SwatchA named colour in the document. The QR codes are drawn in one.
Spot inkA colour printed with its own ink rather than mixed from CMYK, such as a Pantone.
OversetText that does not fit in its frame. InDesign shows a red plus on the frame.
Quiet zoneThe empty margin a QR code needs around it so a phone can find it.