Customer statements at scale¶
One template, one run, thousands of PDFs — each one holding a single customer's data and delivered to that customer.
What it produces¶
A separate document per customer, generated in one job and emailed to each recipient's own address, or written to cloud storage under a per-customer path.
How you build it¶
- Build the statement once, as an ordinary report
- Create a Report Generation Job and add your customer data source
- Turn on the data source's Repeating flag — the job then produces one entry per row
- Add the statement template to the job
- Add an Email delivery and bind the recipient to the row's address
- Set a schedule, or trigger runs through the API
What makes it tricky¶
- The Repeating toggle is the whole mechanism. Without it the job produces one document containing every customer, which is rarely what anyone wants.
- Inside a repeating job, the current row is
{$record.…}.{$data.…}reaches the whole set. Getting this backwards is the most common cause of every statement showing the same customer. - One SMTP server can send from several addresses. Define a From address per brand or department, and let each job choose — see SMTP Settings.
- Turn on hold-for-review for the first runs. Deliveries wait until someone approves them, which is worth doing before a thousand emails leave the building.