Introduction
When reviewing conversion and exposure data across Piano's reporting tools — Composer Experience Reports, VX Conversion Reports, and Subscription Logs — it is common to encounter discrepancies between totals. These differences are usually not errors. Instead, they reflect the fact that each report is designed to answer a different business question.
This guide walks you through the key differences between each reporting surface, explains why numbers may diverge, and provides a step-by-step troubleshooting checklist to help you reconcile your data confidently.
Understanding these distinctions is essential before drawing conclusions from any single report. Always confirm which report best matches the question you are trying to answer.
Which Report Should I Use?
The first step in any reconciliation effort is selecting the correct report for your business question. Each report captures conversion and exposure data from a different vantage point.
Composer Experience Reports
Best for: Evaluating the performance of a specific experience (or experience version) and understanding where users entered a journey.
-
Reports on conversions, flows, and exposures tied to individual experiences.
-
Attributes outcomes to the experience where the user initiated the flow.
-
Useful for A/B testing experience variants and measuring engagement with specific paywalls or templates.
VX Conversion Report
Best for: Viewing aggregated conversion outcomes across the application, typically focused on the checkout flow and payment-related conversions (depending on term type and context).
-
Provides a consolidated view of conversions across experiences.
-
Generally focuses on conversions that occur through the onsite flow.
-
May exclude conversions logged externally or manually.
VX Subscription / Subscription Logs
Best for: The authoritative record of what subscription or conversion actually occurred and where it completed — including conversion types that Composer reports may not show, such as upgrades.
-
Records the experience where the user actually converted (completion point).
-
Includes a broader range of conversion types (upgrades, gift redemptions, etc.).
-
Serves as the definitive source of truth for subscription and conversion records.
Summary Table:
|
Report |
Primary Use Case |
Attribution Point |
Includes Upgrades? |
Includes External Conversions? |
|---|---|---|---|---|
|
Composer Experience Reports |
Experience-level performance |
Where user started the flow |
No |
Generally No |
|
VX Conversion Report |
Aggregated checkout/payment conversions |
Start-page URL (typically) |
Varies |
Generally No |
|
VX Subscription / Subscription Logs |
Authoritative subscription records |
Where user completed conversion |
Yes |
Yes |
Why Conversions Don't Match Between Composer and VX Reports
There are several well-understood reasons why conversion totals differ across Composer and VX reporting surfaces. The sections below detail each cause and provide actionable guidance.
Started in One Experience, Converted in Another
Composer Flow and Conversion reporting attributes outcomes to the experience where the user initiated the flow. The Subscription log, on the other hand, records where the user actually converted.
If a user starts checkout (or an offer interaction) in Experience A but completes payment or registration in Experience B, you will see:
-
Composer reports crediting Experience A (the start point).
-
Subscription logs reflecting Experience B (the completion point).
What to do:
-
When reconciling, check both the starting experience (Composer Flow/Conversion context) and the conversion/completion experience (Subscription log).
-
Accept that a one-to-one match between these reports is not expected when users traverse multiple experiences.
Composer "Conversions" May Include Non-Payment Interactions
Depending on configuration and report context, Composer experience reporting can count interactions such as:
-
showTemplate -
showOffer -
showFormloads
These are meaningful experience conversions (engagement with the paywall or UX), but they may not represent completed payments.
What to do:
-
When comparing to VX or revenue/payment-driven reporting, confirm you are comparing equivalent definitions (engagement vs. payment completion).
-
Review your Composer experience configuration to understand which interactions are counted as "conversions."
External/Manual Conversions May Be Excluded from the VX Conversion Report
The VX Conversion report generally focuses on conversions that occur through the onsite flow and may exclude conversions logged externally or manually. Examples include:
-
Registrations created through management workflows.
-
Conversions created via endpoints such as
/publisher/conversion/registration/create.
External conversions may still appear in Subscription reporting/logs.
What to do:
-
If you rely on external conversions, validate where those conversions are expected to appear (Subscription reporting vs. VX Conversion report).
-
Confirm whether external conversions have the necessary attribution data (see Why URLs Don't Match).
Some Conversion Types Are Not Included in Composer Experience Reports
Composer experience reports may not include upgrade conversion metrics even when upgrades are successfully processed.
What to use instead: Use the VX Subscription visual report (or Subscription logs) for a complete view that includes upgrades.
Term Types and Term Settings Can Change What "Conversion" Means
Differences can occur when one view includes redemption-like outcomes and another includes only paid outcomes. For example:
-
Term-level counters may include paid conversions and gift redemptions.
-
Some VX conversion views are interpreted primarily as paid conversions only.
Additionally, some reports include only certain term types:
|
Term Type |
Typically in VX Conversion Report? |
In Subscription Logs? |
Notes |
|---|---|---|---|
|
Registration |
Yes |
Yes |
Standard conversion type |
|
Payment |
Yes |
Yes |
Standard conversion type |
|
Gift |
Yes |
Yes |
Standard conversion type |
|
External |
Yes |
Yes |
Standard conversion type |
|
Custom Terms |
No |
No |
Does not generate subscriptions in the standard way |
|
Granted Access |
No |
No |
Does not generate subscriptions in the standard way |
What to do:
-
Confirm which term types are included in the report you are using.
-
Determine whether you are counting paid conversions, redemptions, registrations, or a mix.
Why URLs Don't Match (Start URL vs. Completion URL)
It is normal to see different URLs across reports because they may intentionally capture different funnel moments:
-
VX Conversion report URL: Often reflects the start-page URL where the user first interacted with the template/offer or began the flow.
-
Subscription logs URL: Commonly reflects the completion URL where the conversion finalized.
This becomes especially visible when:
-
Checkout involves redirects.
-
The user moves across pages during the flow.
-
App environments rewrite or abstract URLs.
Recommendation: When validating totals, compare over a larger date range and align on the same event type, rather than expecting URL-by-URL parity across tools.
Common Filtering Pitfalls That Create "Missing Conversions"
Many apparent discrepancies are caused by filtering issues rather than actual data problems. Review the following common pitfalls during reconciliation.
N/A Rows Hidden in Queries
If you segment conversions by a property (device, browser, URL, etc.) and some events don't have that property populated, those rows can be hidden unless you enable "show N/A rows" (or the equivalent option in your analysis).
Recommendation: Enable N/A rows during reconciliation to ensure you are not accidentally dropping unattributed events.
URL Formatting Differences
When filtering on URL-related fields, be consistent about:
-
Whether you filter on Page vs. URL Event (depending on your data model).
-
Whether URLs include a trailing slash.
-
Whether redirects are producing multiple distinct URLs.
Recommendation: Standardize your URL filtering approach and document which URL field you use for each report.
Exposure Discrepancies
Some implementations may log multiple exposure records tied to the same underlying page view (for example, the same pageviewID with different timestamps or session identifiers). This can inflate exposure counts in VX conversion-style reporting.
Recommendation: For paywall exposure accuracy, cross-verify VX reports after confirming the exposure logging pattern in your implementation. Investigate whether duplicate exposure records are being generated for single page views and address the root cause in your implementation if needed.
Attribution Model Differences
Different attribution models can legitimately produce different "credited conversions" by campaign or source — even if total conversions are similar.
-
VX reports may use linear attribution in some contexts.
-
Other reporting tools may default to last-touch attribution (with flexibility to change attribution settings).
When comparing campaign-level conversion totals across reports, always confirm which attribution model each report uses. Different models will distribute credit differently across touchpoints, making direct comparisons misleading without this context.
External Conversion Tracking: Required Fields
If you send conversions via API (external conversions), ensure the payload supports proper ingestion and attribution. Key requirements include:
-
Include a valid
browser_idin the payload. -
Verify that any custom implementation hooks (for example,
onLinkedTermSelected) match recommended patterns.
If browser_id is missing, the conversion may not be linkable or processable across reporting surfaces, leading to mismatches between Composer/VX logs and other reports.
Custom implementations can cause conversions to be captured inconsistently across reporting surfaces. Always validate that your external conversion implementation follows Piano's recommended integration patterns.
External Conversion Requirements Checklist:
|
Requirement |
Details |
Impact if Missing |
|---|---|---|
|
|
Must be a valid browser identifier included in the API payload |
Conversion may not be linkable across reports |
|
Custom hook validation |
Ensure hooks like |
Inconsistent conversion capture across surfaces |
|
Attribution data |
Include start URL and experience context where applicable |
Conversion may appear in logs but lack attribution |
Troubleshooting Checklist
Use this checklist in the recommended order when investigating conversion or exposure discrepancies across reports.
-
Align definitions first
-
Are you comparing engagement (
showOffer/showTemplate) or completed payment/registration? -
Are you including offsite/external conversions?
-
-
Validate term types included
-
Payment vs. Registration vs. Gift vs. External.
-
Whether Custom Terms / Granted Access apply to your use case.
-
-
Check attribution expectations
-
Start URL (VX Conversion report) vs. completion URL (Subscription logs).
-
Confirm which attribution model each report uses.
-
-
Review filters
-
URL formatting and the correct URL field.
-
Enable "show N/A rows" when segmenting.
-
-
Confirm external conversion implementation
-
Include a valid
browser_id. -
Validate custom hooks match recommended patterns.
-
-
Account for processing delays
-
Data may land on different days between systems due to processing/forwarding timing.
-
Compare over broader date ranges to account for lag.
-
-
If data looks "stuck" or historically incorrect
-
Some discrepancies can be due to reporting lags or backend aggregation issues.
-
Notes on Templates and Attribution Edge Cases
Be aware of the following edge cases when analyzing conversion attribution:
-
Dismissible Banner templates do not inherently "register" a conversion by themselves. If you need attribution, ensure there is a tracked action (for example, a registration form submission or another explicit conversion event).
-
External registration sources (registrations occurring outside the site flow) may not be reflected in onsite-only experience registration metrics. These conversions will typically only appear in Subscription logs.
Recommendation: When designing experiences that use dismissible banners or rely on external registration flows, plan your conversion tracking strategy in advance to ensure all desired conversion events are captured in the appropriate reporting surfaces.