Automating Qlik Cloud Report Distribution at Scale: Dynamic Recipients and Filters with Load Script Tags and Qlik Automation
- Mark Costa
- 19 hours ago
- 7 min read
Introduction
When Alane Miguelis approached me with the challenge of managing hundreds of report recipients dynamically in Qlik Cloud, it immediately highlighted a critical scalability issue: manual filter maintenance simply doesn't work at enterprise scale.
The problem was clear: as organizations grow, maintaining individual report filters for each recipient becomes a bottleneck. Adding new users, updating access rights, or removing departed employees requires manual intervention in the reporting system - a process that's time-consuming, error-prone, and completely unsustainable when dealing with hundreds or thousands of recipients.
This article presents a fully automated solution that eliminates manual filter management by leveraging load script tags and Qlik Automation. By treating your recipient configuration as data and synchronizing it automatically with Qlik Cloud reporting filters, you can achieve true dynamic report distribution that scales effortlessly.
Prerequisites
A Qlik Cloud Tenant
Understanding of Qlik Load Script
Understanding of Qlik Automation
Basic REST API / JSON knowledge
The Business Challenge
In this scenario, we're working with Microsoft SQL Server AdventureWorksDW2022 Database to distribute sales reports to multiple resellers. Each reseller needs access to their own sales data by Sales Territory Group delivered daily through Qlik Cloud's reporting capabilities.
Without automation, setting up report distribution for this scenario would require:
Manual Recipient Creation:Â Individually configuring each employee/reseller as a recipient in the Qlik Cloud Reporting interface
Filter Configuration:Â Manually creating and assigning filters to restrict each recipient to their specific Sales Territory Group
Ongoing Maintenance:Â Updating recipient lists whenever:
New sales employees are onboarded in the source system
Existing employees change territories or are deactivated
The employee dimension data changes during the nightly ETL process
Error-Prone Process:Â Ensuring filter accuracy across potentially hundreds of recipients -a single misconfiguration could expose sensitive competitive sales data to the wrong employee
Scalability Limitations:Â The DimEmployee table contains multiple employees across various territories. As the sales organization grows, the administrative burden becomes unsustainable
For organizations managing dozens or hundreds of sales employees, this manual approach is not just inefficient - it's a compliance and data security risk. The AdventureWorksDW2022 scenario demonstrates this at scale: with employees across different regions, territories, and departments, maintaining accurate, secure report distribution manually would require dedicated administrative resources and would still be prone to human error. The automation solution solves this by treating the recipient configuration as data - stored, managed, and synchronized automatically with each app reload.
Solution Overview
Our solution consists of three key components working in concert:
1. L1 AdventureWorksDW2022 Parquet Builder (Data Preparation App)
Purpose:Â Store AdventureWorksDW2022 Tables as Parquet Files
Function:Â Connects to a local SQL Server AdventureWorksDW2022 database (via Direct Access Data Gateway), extracts dimension and fact tables (DimEmployee, DimSalesTerritory, FactResellerSales, etc.), and load them into optimized Parquet files (brotli compression)
Benefit:Â Provides a performant, cloud-native data foundation that decouples source systems from analytics applications
2. Reseller Sales Report - Adventure Works DW 2022Â (Analytics App)
Function:Â Consumes the Parquet files from the data preparation layer and builds a comprehensive data model. Create the Reporting Recipients (with their respective Filters and Groups) and Groups during the load process.
Content:Â Contains sheets, charts, and visualizations specifically designed for reseller sales analysis
Reporting Foundation:Â Serves as the source application for automated report distribution to individual resellers
3. Reseller Sales Report Automation (Qlik Automation)
Function:Â Orchestrates the entire dynamic Report Filter management process
Key Capabilities:
Reads recipient configuration from a designated sheet and chart within the Analytics app
Dynamically manages Report Filters based on Employee Email Address and Sales Territory Group
Automatically syncs Report Filters when the app reloads with updated data
Removes obsolete Report Filters when resellers are deactivated
Creates new Report Filters as filters are added to the system
Integration:Â Uses Qlik Cloud REST API (through Qlik Automation Blocks) to manage Report Filter objects programmatically
Automating Report Distribution in Qlik Cloud - Technical Implementation
L1 AdventureWorksDW2022 Parquet Builder (Data Preparation App)
This is an almost common Data Preparation Builder Application that connects to the Data Source, Extract Data Source Table records and Load as Parquet files. Maybe the only unusual part of the Load Script for Qlik Developers is the Store as Parquet file with brotli compression statement.
// Store table as compressed Parquet file
STORE [$(vTableName)] INTO [$(vTargetLibrary)$(vTableName).parquet](parquet, compression is brotli);If you are not using Parquet files yet, you are missing a quite light and fast Data File Format, incredibly optimized for Qlik Cloud Platform. Read more at Parquet vs QVD: A Performance and Size Comparison for Qlik Developers
You can download a copy of the L1 AdventureWorksDW2022 Parquet BuilderQVF file here:
Reseller Sales Report - Adventure Works DW 2022Â (Analytics App)
This Qlik Analytics Application contains a very special feature. During the load process we can tag any loaded field with reserved tags: the distribution list tags.
Below the list of distribution list tags and their meaning. The full reference can be found here: https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Reporting/cloud-in-app-reports-distribution.htm#anchor-6

In our Reseller Sales Report, we'll be implementing all these tags as below:
// Tag fields for automatic recipient creation
tag field FullName with 'DL_DISTRIBUTION_SVC__recipientName';
tag field EmailAddress with 'DL_DISTRIBUTION_SVC__recipientEmail';
tag field SalesTerritoryGroup with 'DL_DISTRIBUTION_SVC__recipientFilters';
tag field DepartmentName with 'DL_DISTRIBUTION_SVC__groupsName';
tag field DepartmentName with 'DL_DISTRIBUTION_SVC__groupDescription';
tag field DepartmentEnabled with 'DL_DISTRIBUTION_SVC__groupEnabled';After Loading the application with the tags above, Qlik Cloud will automatically create all the Recipients with their respective Filters and Groups. See below:


Distribution list tags are just amazing! You can maintain all your recipients just tagging loaded fields from any data source, without the need of keeping external Excel Spreadsheet files. This is a very robust way to ensure your recipients are always securely updated in your Qlik Application.
However, this still not enough to create Report Tasks. We are still missing the Filters. Looking at the Filter tab we'll note there is nothing there! It is time for Qlik Automation to shine.

You can download a copy of the Reseller Sales Report - Adventure Works DW 2022 QVF file here:
Reseller Sales Report Automation (Qlik Automation)
These are the Qlik Automation Steps:
Triggers on-demand Reseller Sales Report - Adventure Works DW 2022 reload to ensure latest data
Reads all available Report Filters from the Reporting Config Sheet, List of Filters Chart
Retrieves existing Report Filters via REST API from the Reseller Sales Report - Adventure Works DW 2022 application
Compares current configuration against existing filters
Deletes obsolete Report Filters (filter no longer in configuration)
Creates new filters for added filters
Uses 2-second delays between API calls to prevent rate limiting
This is not a Qlik Automation article however I'll give you a few hints on how to populate the Variable Blocks from the Qlik Automation.
We'll need the following information to correctly get the new list of Report Filters from your Qlik Application:
Application Id: variable reportingAppId
Configuration Sheet Id: variable configSheetId
Chart Configuration Id: variable filterChartId
Filter Field Name: variable filterFieldName (in our example the value is SalesTerritoryGroup)
To get the Chart Id, the easiest way is to enter the following statement at the end of your URL: /options/developer. This will enable the Developer menu in your chart properties. See the images below:


After setting all the variables, run the Qlik Automation and the synchronization will execute. At the end of the Automation process, go back to your Reseller Sales Report - Adventure Works DW 2022 and check the Reporting Filter tab. All filters will be there and in sync with your Analytics data!

Be aware that the Raw API Request 2 Block was designed to create filters with text/string values. For numeric values, a few changes must be made there, in the Json values node in the Body attribute. Example:

You can download a copy of the Reseller Sales Report Automation template file here:
Connecting all dots: Creating Reporting Tasks
Now is time to put all things together in a Reporting Task.
Before creating a Report Task, we need a report template. In this article I have created a HTML Report template that you can download here - or you can create your own:
With the template in hands, go to Reporting > Report tasks tab and click on Create report task button:

Configure your Report Task as follows:


This is the most important step. The automation nature of this whole solution will only be complete if we select a Recipient Group (or groups) instead of a few selected users. Also, select HTML Report and select - again - the HTML Report Template.


Now we can finally test the Report Task. Click on the ellipses menu (...) and select Send now. This will trigger the Report tasks and will send to all users inside the Sales group applying the corresponding recipient filters:

Acknowledgments
Special thanks to Alane Miguelis ([LinkedIn Profile]) for bringing this real-world challenge to me and inspiring this solution. Problems from the field drive the best innovations, and collaboration like this strengthens our Qlik community.
Conclusion
Automating report distribution in Qlik Cloud transforms a traditionally manual, error-prone administrative task into a scalable, data-driven process. By leveraging distribution list tags in the Load Script combined with Qlik Automation's REST API capabilities, organizations can maintain hundreds or thousands of recipients with dynamic filters that automatically synchronize with source system changes.
Key Takeaways:
Scalability: The solution presented handles recipient management as data, eliminating the administrative bottleneck that occurs when report distribution scales beyond dozens of users. Each nightly reload automatically syncs recipients, filters, and group memberships with your authoritative data sources.
Data Security: Programmatic filter management reduces the risk of data exposure by ensuring filters are consistently derived from the same trusted data model that powers your analytics. Manual configuration errors that could expose sensitive competitive data are eliminated.
Maintainability: Changes to organizational structure, territory assignments, or employee status are reflected automatically in report distribution without manual intervention. When an employee leaves or changes roles, their reporting access adjusts immediately on the next reload.
Flexibility: While this article demonstrates reseller sales reporting with territory-based filters, the pattern applies to virtually any reporting scenario: multi-tenant SaaS applications, departmental reporting, customer-specific dashboards, or role-based access across any dimension in your data model.
Next Steps:
Start small by implementing this solution for a single department or report. Once validated, the same pattern scales horizontally across your entire reporting portfolio. The combination of distribution list tags and automation API integration represents a foundational capability for enterprise-grade Qlik Cloud deployments.
The complete solution files (QVF applications and automation JSON template) are available for download throughout this article. Adapt the field names, filter logic, and automation parameters to match your specific data model and reporting requirements.
For organizations managing complex report distribution at scale, this automated approach isn't just a convenience - it's a necessity for maintaining security, accuracy, and operational efficiency as your analytics program grows.
Additional Resources
Documentation:
Questions or Issues? Discuss this solution on the Qlik Community Forum or connect with me on LinkedIn https://www.linkedin.com/in/marksouzacosta/.




