Understanding Singular Reporting Data

Learn where the data in Singular reports comes from, how it differs from the original source data, and what processes Singular uses to enrich and improve your reporting.



What's Our Goal?

Singular's goal is to get your marketing data from your ad networks, attribution tracker, and other sources, and merge it into one report where:

  • Stats from the network side (such as campaign cost) and stats from the tracker side (such as install and revenue) appear in the same row so you can calculate your ROI and other KPIs.
  • Data from different platforms is standardized where needed to help you compare data across ad networks.
  • Data is shown in the highest possible granularity.

Singular runs a number of processes on the data to achieve these goals. The sections below describe the main steps.

Standardizing Data

Field Mapping

One of the challenges of comparing marketing data across platforms is that similar data is given different names. Singular maps fields from all sources into a single set of dimensions and metrics. For example, Facebook's "ad set" and Google's "ad group", both representing a grouping of ads within a campaign, are mapped into Singular as the "sub-campaign". 

For full details of which ad network fields are mapped into which Singular fields you can check out the Data Connectors in Detail section.

Dimensions with Standardized Values

Different networks and MMPs may save app names, countries, and other dimensions in slightly different ways. For example, an app name may appear as "Jewel Rush II" in one platform and "Jewel Rush - 2" in another. Countries may occur as the full country name or as a two-letter code.

Singular standardizes important dimensions to make it possible to analyze and compare data from different origins.

Standardized dimensions include:

Dimension Notes

Has to match one of the app names configured in the Apps page in the Singular web app. 

When Singular ingests campaign data, it tries to match it to a known app name in several ways:

  • If the network provides the Site Public ID, Singular can use that to parse both the App and the Platform.
  • If the network provides an app name field, or the app name is included in the campaign name, Singular uses intelligent text processing to match it to one of the known apps even if it's written slightly differently ("III" instead of "3", etc.)

For more information, see the Unmapped Data FAQ.

Source Has to match one of Singular's integrated partners.
Sub Ad Network For relevant networks, has to match one of the channels known to Singular. For example, for Facebook, the sub ad network can be Facebook, Facebook Audience Network, or Instagram.
OS, Platform See App.
Country Standardized to Singular's list of countries.
Original Currency Standardized to the three-letter ISO 4217 currency code, e.g., “USD”, “EUR”, “INR”.
Standardized Bid Type and some other campaign properties Some campaign properties, such as Bid Type, are provided in a standardized form to make it possible to compare campaigns from different networks. Singular also provides the original, pre-standardization dimension (see the Campaign Properties FAQ).

Joining Network and Tracker Data

Singular pulls many dimensions from both the network side and the tracker side. For example, the campaign name and ID, sub-campaign (ad group/ad set) name and ID, country, OS, and more.

If the dimension values on the tracker side match the values on the network side, Singular can easily join together network and tracker metrics in the same row for your report.


The dimension values often match when:

  • The campaign is from a self-attributing network (SAN) such as Facebook, Google Ads, or Twitter.
  • The customer uses Singular's attribution service (rather than a third-party MMP). With Singular's tracker and tracking links (see Singular Links), Singular can make sure that the information passed through the links into the tracker is as accurate as possible, with dimension values that match the network data.

However, any mismatch between the dimension values will "break" the row. For example, if you include a field that doesn't have the same exact value in the tracker and in the network for any reason, the data will appear in separate rows.


Also, if you run a report that includes a network-only dimension (such as City), the data will appear in separate rows.


Which dimensions prevent Singular from joining the data?

Any dimension can cause "broken rows" (network data and tracker data in separate rows) if the value on the tracker side doesn't match the value on the network side.

However, some dimensions will always break the rows:

    1. Network-only dimensions: These dimensions are only provided by (some) ad networks, never by the tracker.

      • DMA
      • City
      • Region
    2. Tracker-only dimensions: These dimensions are only provided by trackers.

      • Conversion Type
    3. Source-specific dimensions: Contain values that come either from the tracker or from the network, by definition. Singular provides these dimensions to help you troubleshoot issues such as discrepancies between tracker data and network data. They are not meant to be included in reports where you want to see joined data.

      • Tracker Campaign Name
      • Tracker Campaign ID
      • Network Campaign Name
      • Network Campaign ID
      • Tracker Sub Campaign Name
      • Tracker Sub Campaign ID
      • Network Sub Campaign Name
      • Network Sub Campaign ID
      • Tracker Source Name

FAQ: When I see a dimension value in a report, how can I know where the value was taken from?

A row in a report can be either network data, tracker data, or mixed (joined).

To tell them apart, you can hover over the metrics to use the transparency feature, which tells you where each metric was taken from.

If all the metrics are tracker metrics, the dimension is also from the tracker side. If they're all network metrics, the dimension is from the network. In a mixed row, the dimension values you see (such as Campaign Name) are from the network.

The Singular Combiner

In some cases, Singular applies additional logic behind the scenes to make it possible to join together tracker and network data despite some mismatches between dimension values in the original data.

For example, the Campaign Name dimension, a free text field, is often a bit different on the network and on the tracker side, while the Campaign ID is the same. In these cases, Singular applies the Campaign Name from the network onto the tracker data so that when you run a report, campaign data from both sides can appear in the same row.


This process is called campaign-level combining. Similar combining processes are run on the sub-campaign level, creative level, and publisher level.


  • Singular takes the ad network data as the source of truth for this process. For example, if it's the Campaign Name field that's different on the network side and on the tracker side, Singular takes the network campaign name.
  • Combining is only provided for customers of Singular's attribution service.
  • If you only use Singular for analytics, Singular will only run the combining process on campaigns from self-attributed networks (SANs) such as Twitter, Google Ads, and Apple Search Ads.

Data Interpolation (Estimated Metrics)

The Singular combiner relies on network data and tracker data having the same granularity. If the network and tracker have the same number of rows for a certain campaign (or sub-campaign, or creative, etc.), but one of them provides more columns with additional data, these rows can be combined to show you all the available data when you run a report.

But what happens if one side has a higher granularity? For example, often the network may not provide any country information, while the tracker data for a campaign is broken down into several countries.

Estimated metrics are added when the data Singular pulls from ad networks is not available in the same granularity as data from the attribution provider (tracker). In order to help you optimize your campaigns, Singular interpolates numbers for the ad network metrics in the finer granularity. 

In the example below, Singular calculates an estimated cost per publisher by dividing the overall cost between the publishers in the same proportions as the installs.


For more information, see Estimated Metrics FAQ and Troubleshooting.


Was this article helpful?