Overview
Agency Reports turn the financial and operating data for one or more client shops into a client-facing web report and PDF. You can add your agency logo and accent color, choose the metrics and sections, create a secure share link, send the report by email, or generate a new report automatically each week, month, or quarter.
The report uses Dashboardly's canonical financial metrics—the same formulas used by the main P&L and Dashboard for the same shops, dates, timezone, and reporting basis. Dashboardly does not maintain a separate set of “agency report” profit formulas.
Create a Report
Open Agency > Reports, then select Create report.
- Choose the client, shops, report type, period, comparison, and report timezone.
- Choose the KPI tiles and report sections. Required sections for the selected report type stay enabled.
- Add or replace your agency logo, choose an accent tone, and write any cover note, findings, next steps, or scope notes.
- Choose one or more delivery channels: PDF, secure web link, or email.
- Generate the report immediately, or choose Weekly, Monthly, or Quarterly and set the first run date.
The Last 7 days, Last 30 days, and Last 90 days presets include today and contain exactly 7, 30, or 90 calendar days in the report timezone. Scheduled reports use the last fully closed calendar week, month, or quarter and create a separate occurrence for every run.
Report copy is currently generated in English. Money remains in each shop's native currency; Agency Reports do not perform foreign-exchange conversion.
Saving a draft does not email or share the report. It does preserve the selected period and report configuration so you can finish it later.
Branding and Logo Safety
Your agency logo appears on the report cover, public web report, and generated PDF. Upload a PNG or JPEG no larger than 2 MB. Dashboardly verifies the file type, fully decodes the image with a pixel-safety limit, strips embedded metadata, and stores a normalized raster no larger than 800 × 800 pixels; SVG files are not accepted.
Replacing a logo or changing report-facing content invalidates the saved PDF revision. The next PDF request renders the current report instead of serving a previous logo, client, period, or metric snapshot. Changing the report's client, shops, dates, configuration, or other client-facing content also disables its existing public URL, so the old audience cannot see the edited financial snapshot.
The surrounding service email remains Dashboardly branded, while its sender name identifies the agency and its links open the agency-branded report.
Delivery Options
Choose Download PDF from the report preview. Dashboardly renders the same content shown in the web report. The first render can take several seconds. If the report content, data, and branding have not changed, later downloads reuse the same verified PDF instead of generating another copy. A changed revision always creates a fresh PDF.
PDF output is sized to the printable A4 page so the complete selected date range remains visible in charts. Interactive application controls, chat, and optional-analytics consent are excluded from the client-facing file.
Secure Share Link
A share link is a high-entropy public URL. Anyone who has the link can view the report without signing in. You can set it to never expire or expire after 7, 30, or 90 days, regenerate it, or disable it. Selecting a different expiry does not change the live link until you choose Save expiry.
Regenerating rotates the token and immediately invalidates the previous URL without changing its existing expiry. An expired link is shown as inactive and must be recreated before it can be shared again. Before email delivery, Dashboardly renews an expired or nearly expired time-limited link with a bounded expiry window instead of sending a dead URL or silently turning the link into a permanent URL. Password-protected report links are not currently supported.
Dashboardly checks that the complete report can be loaded before enabling a real public link. A report with a disconnected shop or an incomplete financial data response is not published as a plausible-looking partial report.
Email delivery sends a branded-report message with buttons for the live web report and PDF. A manual send also checks report completeness before creating or rotating the public link or contacting the email provider.
You can send a report to between 1 and 25 valid email addresses. Separate multiple addresses with commas.
Each manual send uses a retry-safe request key. If Dashboardly cannot confirm whether the provider accepted a message, the UI marks that recipient for reconciliation and warns you not to start a new send. Retry from the same open send window so Dashboardly can reuse the original request.
Recurring Delivery
Weekly, Monthly, and Quarterly automations create an immutable report occurrence for the last fully closed period. Every selected channel is prepared on each run:
- PDF renders the occurrence PDF.
- Share link creates a valid public URL.
- Email sends the occurrence to the configured recipients and includes web/PDF links.
Open Agency > Reports > Automations to view and manage recurring delivery. This is a tab inside Reports, not a separate sidebar page. The next and previous run times are displayed in the report's timezone, with the timezone shown beneath each timestamp.
You can pause, resume, or remove an automation. Removing it keeps the reports already generated. Due / retrying means that the next-run time has arrived and Dashboardly is preparing the run or retrying an output that could not complete. Needs attention means that a valid next-run time is missing. Scheduled delivery stops and remains retryable if any selected shop, comparison period, customer section, or inventory section fails to load completely. Output channels are attempted independently: for example, a temporary PDF failure does not suppress an email that is otherwise ready, but the schedule advances only after every selected output succeeds. Retry-safe delivery records prevent that successful email from being sent twice while the failed output is repaired.
Financial Metric Definitions
Agency Reports use the standard order-date accounting path and include settlement-backed values when available. Recent orders can remain provisional until TikTok publishes statements and transaction adjustments; the report marks that state instead of presenting every order as final.
Key formulas and labels are:
| Report metric | Definition |
|---|---|
| Gross Sales | Product sales subtotal for included non-cancelled orders. |
| GMV | Customer-paid value, including customer-paid shipping. |
| Net Sales | Canonical product revenue after seller and TikTok product discounts. Refunds are reported separately and are not subtracted a second time in this label. |
| AOV | Net Sales ÷ included unique orders. |
| Gross Profit | Net Sales − COGS. |
| Operating Profit | Settlement-aware operating result after COGS and operating costs, before Net Ad Spend. |
| Net Profit | Operating Profit − Net Ad Spend. |
| Gross Margin | Gross Profit ÷ Net Sales × 100. |
| ROI | Operating Profit ÷ COGS × 100. ROI is a percentage, not an ad-spend multiplier. |
| Total Fees & Taxes | The authoritative signed settlement parent for platform fees and taxes; report cost tiles display the expense magnitude. |
| Shipping Expense | The expense magnitude from the canonical shipping-cost field. The appendix also shows the signed Net Shipping Impact. |
| Net Ad Spend | Gross ad spend after TikTok ad credits. |
| Blended ROAS | Gross Sales ÷ Net Ad Spend. |
| TACoS | Net Ad Spend ÷ Gross Sales × 100. |
For example, if a report shows 10,000 Net Sales, 4,000 COGS, 2,500 Operating Profit, and 1,000 Net Ad Spend, it shows 6,000 Gross Profit, 60% Gross Margin, 1,500 Net Profit, and 62.5% ROI. If Gross Sales for the same period is $12,000, Blended ROAS is 12.0× and TACoS is 8.3%.
Ratios are calculated from the summed numerator and denominator. Dashboardly does not add daily percentages together. Missing calendar days are represented as zero for additive money/count metrics so current and comparison periods align by day position. Missing percentages, multipliers, and AOV—and ratio days whose denominator is zero—are shown as unavailable rather than as a fabricated zero.
Why a Report May Differ From the P&L You Are Viewing
The formulas do not differ, but the active scope can. Before comparing values, match all of the following:
- the same client shops;
- the same inclusive calendar dates and timezone;
- the same order-date versus payout/statement-date view;
- the same accounting and sales basis;
- the same product/SKU filters and sample-cost settings;
- the same settlement/provisional-data state at the time of refresh.
Agency Reports currently use the standard order-date accounting path. A P&L opened with a different date basis, accounting basis, or product scope is expected to show different totals even though both surfaces use the same canonical formulas.
Dashboardly never adds money from different native currencies. If a report contains, for example, USD and GBP shops, it suppresses consolidated money KPIs and shows separate per-shop rows in each native currency.
Snapshot and Verification Boundaries
Some optional sections are snapshots rather than period metrics:
- Customers shows the current lifetime customer-segment and LTV snapshot. It is not “customers acquired during the report period.”
- Inventory shows stock when the report is generated. Days of cover equals total current stock divided by total 30-day daily unit velocity. Stock turns (run-rate) equals units sold in the last 30 days × 12 ÷ current stock; it is a snapshot estimate, not accounting inventory turnover.
- Data quality verification checks Dashboardly completeness and the provisional/finalized order state. It does not compare uploaded Seller Center exports or bank deposits and does not assign external match/fail tolerances.
Troubleshooting
The report will not share, email, or render as PDF
Open the report preview and check the error. Dashboardly fails closed when a selected shop is inactive, disconnected, inaccessible, or cannot provide complete current/comparison data. Restore the shop connection or wait for the unavailable data source, then retry.
A link in an old email has expired
Open the report's Share dialog and create or regenerate the link. Sending the report again also rotates an expired link after the report passes its completeness check.
The chart skipped a day or the period moved by one day
Refresh the report. Report periods and chart keys are calendar dates in the configured report timezone, including scheduled month-end boundaries and daylight-saving changes.
A multi-shop total is missing
Check the currency badges. Consolidated money totals are intentionally hidden when the selected shops use different native currencies; use the per-shop breakdown instead.