The table of contents element can be used to list entries that are part of mail merge templates and in particular in dynamic merge blocks that are generated with data from JSON data or business objects. MailMerge Template Consider the following template that contains the title page with a table of contents element that should include all entries with the style name Heading. On the second page, there is a repeating merge block that uses the selected style Heading. For each entry of this merge block in the final document, an entry should be available in the table of contents. Update TOC After the document has been merged using the MailMerge class, the TableOfContents objects must be updated using the Update method. textControl1.Load("block_toc_template.tx", TXTextControl.StreamType.InternalUnicodeFormat); using (TXTextControl.DocumentServer.MailMerge mm = new TXTextControl.DocumentServer.MailMerge()) { mm.TextComponent = textControl1; mm.MergeJsonData(System.IO.File.ReadAllText("data.json")); } foreach (TXTextControl.TableOfContents toc in textControl1.TablesOfContents) { toc.Update(); } After the table of contents have been updated, two entries are shown from the repeated merge blocks on page 2 and 3: Download Samples The templates from this article and the data source can be downloaded for your own tests using TX Text Control. Download Sample Templates For your own tests, you can download a set of sample templates and a JSON data file. sample_templates.zip