Download PDF
Download page Dynamically show content with TableStart/TableEnd and Rowburner.
Dynamically show content with TableStart/TableEnd and Rowburner
TableStart (TS)/TableEnd(TE) tags and Rowburner only work with Word Templates and do not work with Excel, PowerPoint, or PDF templates.
Overview
TS/TE tags and Rowburner are Composer features that remove the content in a document or a row in a table when no data is returned by a query.
Benefits of using these features include:
- Dynamically showing a table row based on conditional criteria
- Using a Word table with no borders to remove sections of content
- Removing sections of content based on business rules
To use Rowburner, create a Conga Query that returns no data when your row or content should be hidden.
Opportunity Rowburner Example
As a Rowburner example, let us use an Opportunity with three Opportunity Line Items (OLIs). Each OLI is a product that belongs to a different product family: apps, services, and training.
We want to display a row corresponding to each product on the Conga Template that we use with this Opportunity, but only if that product is present on the OLIs.
First, we write three Conga Queries, each with a filter for a different product family:
Apps Product Family Query
SELECT Id, Name, Quantity, UnitPrice, TotalPrice
FROM OpportunityLineItem
WHERE Id = ‘{pv0}’ AND Product_Family__c = ‘Apps’
Services Product Family Query
SELECT Id, Name, Quantity, UnitPrice, TotalPrice
FROM OpportunityLineItem
WHERE Id = ‘{pv0}’ AND Product_Family__c = ‘Services’
Training Product Family Query
SELECT Id, Name, Quantity, UnitPrice, TotalPrice
FROM OpportunityLineItem
WHERE Id = ‘{pv0}’ AND Product_Family__c = ‘Training’
When Opportunity has products in all three families, all row(s) are displayed. Each query returns OLIs based on the product family.
Example Template
Example Output
However, if products are removed so that one of the queries returns no data (i.e., no products in a particular product family), rows are automatically removed:
Let us now extend our example to include sections of content rather than just table rows. Placing any content (text, merge fields, tables, images, pages, etc.) between your TS/TE tags will either display or hide the content.
For example, let us revisit our earlier template, this time with more content, and then remove the Services product from our Opportunity.
Example Template
Example Output
For Rowburner to work, a table row must have at least two columns.
Use Cases
Using TS/TE tags and Rowburner, you can easily show/hide content dynamically. Consider the following use cases for meeting business requirements around dynamic content:
Conditional Contractual Language
If you are not using the Conga Contracts for Salesforce Clause Library, Rowburner is an excellent feature for displaying or hiding terms and conditions, additional provisions specific to a product, or any kind of contractual language that may conditionally apply to a particular transaction. Queries can be used in multiple places in a template (like the OLI example above) to burn a table row and/or additional language according to a particular product.
Here is an example using a Rowburner in a table with borders removed:
Granular Control over Line-Item Placement
If you are merging in related lists of records and need specific control over the order of line items that cannot be set in Salesforce, you can use specific queries with Rowburner. This allows you to dictate which types of records are merged into which rows by using different filters on the associated SOQL queries, and Rowburner will remove any rows that do not apply to a particular merge.
In this example, we merge all Recurring products first, followed by all One-Time products:
Conditional Content
If you have any form of conditional content - excess usage charges, regional taxes, product-dependent clauses, number of signers that change based on deal size, etc., you can use TS/TE tags and/or Rowburner to show/hide any of that content.
For example, let us say you need two internal countersignatures for a deal with an ACV >= 100k:
- Create two queries that return data only if ACV < 100k or ACV >= 100k, respectively
- Add TS/TE tags to your template, with one set surrounding a signature block that includes 2 signers and then another set around a signature block that includes 3 signers: