User guide
Reports
Reports combines external marketing data with native Tailwin visibility, crawler, lead, and content facts. The dashboard builder, client view, public share link, scheduled email…
Updated September 28, 2026
On this page
- Connect a source
- Available source types
- Understand the first sync
- Build a dashboard
- Share and deliver
- Media fee overlays
- Data-quality rules
- Troubleshooting
- Test and repair a connection
- Affiliate and revenue connections
- Google Analytics and Search Console setup
- Tracked campaign and affiliate links
- YouTube channel and audience reports
- Conversion destinations and delivery logs
- Saved attribution reports
- Operational logs
- Small-screen layout
Reports combines external marketing data with native Tailwin visibility, crawler, lead, and content facts. The dashboard builder, client view, public share link, scheduled email, and PDF use the same widget layout and data rules.
Connect a source
- Open Agency → Reports.
- Choose Data sources and select a provider.
- Enter the account identifiers and credentials requested for that provider.
- Give the source a name that identifies the client and account.
- Save, then run or wait for the first sync. DataForSEO is the exception: creation stays paused until you confirm the clearly labelled metered sync action.
- Review the source status and last error before adding widgets.
Credentials belong to the organization active when the source is created. A partner operator should switch into the client organization first.
Available source types
Native sources: AI visibility, AI crawlers, leads, and content.
External and import sources: GA4, Google Search Console, Bing Webmaster Tools, DataForSEO, Google Business Profile, CallRail, GoHighLevel, Meta Ads, Mailchimp, Klaviyo, Google Ads, Shopify, LinkedIn Ads, TikTok Ads, Microsoft Ads, Instagram, HubSpot, YouTube, and CSV/manual import.
A registered connector is not proof that a particular customer account is connected. Each source reports its own status.
Understand the first sync
Connectors declare their available backfill window. The first sync asks for that window; later syncs request a rolling window. DataForSEO direct SERP checks have no historical backfill because Tailwin cannot reconstruct a result it did not request.
A source created through the site activation card is excluded from the hourly schedule. A manual sync is the explicit opt-in that enables scheduling. DataForSEO always follows this paused-first rule, including when it is created directly from Reports.
Rows are normalized as day, metric, optional dimension, and value. Re-running a window updates the same source/day/metric/dimension key rather than duplicating it.
Build a dashboard
- Create a blank dashboard or use a template.
- Add a widget.
- Select the source, a metric that source declares, and an available dimension if relevant.
- Select KPI, time series, table, or the compatible widget type.
- Drag and resize it on the 12-column canvas.
- Preview the client view and a narrow viewport.
- Save and repeat.
The selector shows metrics the connector knows about and, when possible, only values present in the connected account. Free text remains an expert escape hatch; it should not be the default.
Share and deliver
- Client assignment: associates a dashboard with a provisioned client organization.
- Public share: creates a revocable tokenized
/d/...view. - PDF: uses the same read-only renderer.
- Schedule: sends the branded report on its configured cadence.
- Duplicate: copies a dashboard and gives widgets fresh IDs for client-specific editing.
Read-only surfaces use CSS grid without the editor’s drag JavaScript, reducing drift between what the agency arranged and what the client receives.
Media fee overlays
Partners can apply a percentage fee to recognized media-spend metrics. Tailwin calculates the fee when reading the report; it never overwrites the vendor’s stored spend.
If the fee is visible, the partner view can itemize vendor spend, fee, and billed amount. If contract terms hide the fee on client surfaces, the client sees a combined Advertising amount, not an inflated value labeled as Meta or Google spend. The default fee is zero and hiding is off.
Monthly commission is a computed rollup. Tailwin does not post accounting entries or move money from this calculation.
Data-quality rules
- Missing data is not zero.
- A source error makes affected reporting stale; after repeated failures owners are notified.
- “Latest” metrics such as rank differ from additive metrics such as clicks.
- A dimension is part of a metric’s identity; removing it can change the meaning.
- Partner, client, share, email, and PDF audiences must be reviewed when fees or private dimensions are present.
Troubleshooting
| Symptom | Action |
|---|---|
| Source says configuration required | Provide the provider credential or required platform environment variable. |
| Source is connected but widget is empty | Confirm the first sync completed, the date range includes rows, and the selected metric/dimension exists. |
| Source has repeated errors | Reauthorize or correct account IDs; review the stored last error in Reports. |
| Client sees the wrong account | Stop sharing, verify the dashboard’s client organization and every widget source, then issue a new link. |
| PDF differs from the editor | Compare against the read-only preview and inspect unsupported overflow; the underlying layout should be the same. |
Test and repair a connection
Every external source has Test connection and Repair setup controls under Reports. Setup fields now cover all registered external providers, including LinkedIn, TikTok, Microsoft Ads, Instagram, HubSpot and YouTube. Secret fields are masked and stored encrypted.
A connection test runs on the worker and shows a dated result: verified, needs configuration, or failed. The scope description says what was exercised; a successful read does not prove access to every optional scope or older history. It discards returned report rows and does not turn on scheduling. DataForSEO uses its free account-credential check and does not test paid product access.
Repair setup lets you replace account fields and credentials without deleting the source or its history. Leave secret fields blank to keep the stored value. Saving pauses scheduled sync and clears the old validation receipt. Test the connection, then choose sync to resume scheduling. DataForSEO still requires its explicit metered confirmation. Validation requests are throttled for two minutes. A queued check needs a running worker; refresh later if the worker has not returned a receipt.
Affiliate and revenue connections
Native tracked links and saved attribution reports are implemented locally as described below. Production rollout and authenticated processor intake remain unverified. The optional Dub adapter does not require a hosted Dub workspace for native tracking. Attribution credit remains separate from affiliate commission eligibility.
Google Analytics and Search Console setup
Each Google source needs its own credentials. In Repair setup, enter a dedicated service-account JSON with access to the client's property, or choose oauth and enter its OAuth client ID, client secret and refresh token. Use service_account for the JSON method. Save setup before choosing Find properties using saved credentials. Select the property, save again, and choose Test connection, then sync.
GA4 property discovery also requires Analytics Admin API access. If discovery is unavailable, enter the exact numeric property ID and test reporting access. Search Console requires the exact URL or sc-domain: property identifier. Blank credential fields keep stored values; use the credential type field to switch methods. Repair pauses scheduling until you sync again.
Older sources that used platform credentials must be reconnected. A source is live only after a successful reporting read, not merely because Google APIs are enabled.
Tracked campaign and affiliate links
In Reports, enter a destination URL on a site in your workspace and select Create tracked link. Expand Campaign and affiliate details to attach a channel, campaign or affiliate reference. Copy the link for a campaign or partner. Owners and admins can pause and resume it; a paused link returns a not-found response.
Redirects count recorded requests, including automated requests. Matched clicks count distinct link clicks seen in consented pixel activity on the destination site. They are not unique people, confirmed sales or affiliate commissions. Install the pixel and connect your consent manager to observe those matches. Recent redirect events show timestamps, event IDs and link references for troubleshooting. The view currently shows up to 200 links and the latest 100 redirect events. Native links require no Dub account.
YouTube channel and audience reports
Add a YouTube source and authorize the channel owner's Analytics read access. For ongoing access, provide the OAuth client ID, client secret and refresh token in Repair setup. A temporary access token can be used when refresh credentials are absent. Enable the connection only after its check succeeds.
The YouTube analytics section offers daily activity, top videos, traffic sources, countries, age/gender, devices and single-video retention. Choose a source, report type and dates, then Run YouTube report. Retention requires the 11-character video ID. Identical requests reuse a receipt from the last 15 minutes. Members can inspect saved reports; owners/admins can run queries.
Each result shows its channel, requested dates, fetched time, coverage and report ID. Open Report run log to revisit the latest 50 attempts, including failures. Tables label minutes, seconds, percentages and ratios separately. These reports are owner analytics, not public search positions or verified sales. Audience groups do not identify individual viewers.
Empty results may reflect absent activity, delayed data or withheld low-volume data. Missing rows are not zero. Top-video reports cover up to 200 videos; other reports stop at 1,000 rows. A partial result is labeled. Fetched time records when Tailwin queried; only daily reports can show the latest returned data day. When authorization fails, repair the source and retry.
Conversion destinations and delivery logs
The Conversion delivery section configures Meta Conversions API, GA4 Measurement Protocol and Google Ads conversions through Google Data Manager. Live event intake currently requires an authenticated business adapter. Connecting a destination does not install a purchase tag or establish a processor feed.
Owners and admins can add a destination, choose its site and enter credentials. New destinations are paused. Queue test, then refresh after the worker runs. The test uses synthetic data and the platform's validation mode. A rejected Google test click may require a controlled real-data validation during setup. GA4 debug checks the event schema; it does not prove API-secret access or report visibility. Enable live delivery only after completing the account-specific installation and verification.
Delivery history shows test/live mode, outcome, send attempts and diagnostic reason. Filter by destination or status and load older records. View attempts shows start/finish times and sanitized outcomes without exposing credentials or event payloads. Members can read these logs but cannot change destinations or send tests.
Received means an endpoint acknowledged a request. Accepted and processed describe later provider stages where available. None proves that a platform attributed a sale. Unknown means delivery could have happened and is not automatically replayed. Repair credentials pauses the destination and requires a new test. Retry after repair only accepts eligible known rejections and preserves the earlier history. Cancel event delivery stops future sends for that event; already dispatched requests can finish.
Purchases must match verified processor records, and each destination requires the relevant consent. Existing browser tags must share canonical IDs with the server integration to avoid duplicate conversions. Your installation must establish that alignment; Tailwin does not assume it exists.
Saved attribution reports, audience analysis and operational logs are implemented locally; production rollout and live processor intake remain unverified. Historical page activity without an exact consent record will be excluded or marked incomplete. A newer consented visit does not verify older visits. Allocation models distinguish observed marketing credit from affiliate commissions and causal revenue impact. Delivery logs record destination handling separately from attribution reports.
Purchase delivery also requires a backend-confirmed relationship between the sale, site and visitor. Withdrawing that relationship stops future queued sends. Matching emails or affiliate clicks do not create a verified relationship, and the Reports interface cannot assert one on a customer's behalf.
Saved attribution reports
Owners and admins select a site, UTC date range, first/last/linear model and lookback window, then create a saved report. Reports show the cutoff, model version, coverage exclusions and currency-specific totals. Workspace revenue without a verified site is separate from site revenue. An empty ledger does not establish zero business revenue.
Channel, campaign, content and affiliate filters select attribution credit without redistributing credit from other sources. CSV exports preserve the selected filters and one row per sale. Members can read and export existing reports. Saved results retain their original cutoff; create another report to include later adjustments. Relationship withdrawal or erasure makes dependent results unavailable. Reports expire after 90 days. Observed attribution credit is not affiliate commission or proof of causal impact.
Select Compare previous equal-length period to include the preceding UTC period using the same snapshot cutoff and policy. A report ending today contains a partial current day. Previous totals remain currency-separated and do not establish business revenue completeness.
The observed audience funnel counts visitors with consented page views, then subsequent engagement, intent signals and verified purchases in that order. A form signal is intent, not a confirmed lead. Daily cohorts start with each visitor's first observed view inside the selected period, not lifetime acquisition. Filters apply to every event before the sequence is calculated; Unknown / unassigned selects missing dimension values. YouTube audiences remain aggregate owner reports and never identify these visitors.
Source freshness and metric definitions show the source, grain, denominator, time basis, currency and snapshot cutoff. A successful source sync does not prove that payment intake is complete. Saved history loads 50 reports at a time. Expired or corrupted snapshots become unavailable; the worker clears expired content without waiting for a reader.
Operational logs
Search the workspace's ingestion, sync, conversion and report receipts by time, category, source, internal correlation UUID and status. Results are paginated and bounded to a 90-day query window. The default is seven days. Retry state and processing lag describe delivery handling, not proof that an ad platform attributed a sale. Logs contain sanitized outcomes rather than raw event bodies or credentials. Ingestion and source-sync history starts when this release is installed; earlier decisions cannot be reconstructed.
Small-screen layout
On small screens, the dashboard name, Create button and template action stack vertically. Source fields stay within the screen width; wide comparison tables can be scrolled horizontally inside their own panel.