Configuring Singular as a Source
In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the Singular option from the list of connectors. Click Next and you’ll be prompted to add your access.1. Add account access
You’ll need a Singular Reporting API key. In Singular, go to Developer Tools > API Keys and copy the reporting API key. The key carries the permissions of the user it belongs to, so use a user that can see all the apps and data you want to extract. The following configurations are available:- API Key: Your Singular Reporting API key.
- Start Date: The first day to extract report data from. If left empty, the last 30 days are extracted on the first run.
- Lookback Window (days): (Default: 7) Days before the last extracted day that are extracted again on every run. Ad networks restate cost for a few days and cohort metrics keep maturing, so Singular recommends 7 days for network data and your longest cohort period (e.g. 30) when you extract cohort metrics.
- Apps: Only extract data for these app names. Leave empty for all apps.
- Sources: Only extract data for these sources (ad networks), e.g.
facebook,adwords. Leave empty for all sources. - Cohort Metrics: Cohort metric names (e.g.
revenue, or the event IDs listed in thecohort_metricstable) added to the Tracker and Combined reports. Their values are stored in theextra_fieldscolumn. - Cohort Periods: Cohort periods for the cohort metrics, e.g.
1d,7d,30d,actual. Defaults to7d,30d, andactual. - SKAdNetwork Date Type: Whether the SKAN reports are based on the postback date (default) or on Singular’s estimated install date.
- Max Concurrent Reports: (Default: 5) How many reports are requested from Singular at the same time. Singular allows up to 100 concurrent reports per account, shared with your other integrations.
2. Select streams
Choose which data streams you want to sync. For faster extractions, select only the streams that are relevant to your analysis.Tip: The stream can be found more easily by typing its name.Select the streams and click Next.
3. Configure data streams
Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table (which will effectively contain the fetched data) and the type of sync.- Layer: choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
- Folder: a folder can be created inside the selected layer to group all tables being created from this new data source.
- Table name: we suggest a name, but feel free to customize it. You have the option to add a prefix to all tables at once and make this process faster!
- Sync Type: you can choose between INCREMENTAL and FULL_TABLE.
- Incremental: every time the extraction happens, we’ll get only the new data - which is good if, for example, you want to keep every record ever fetched.
- Full table: every time the extraction happens, we’ll get the current state of the data - which is good if, for example, you don’t want to have deleted data in your catalog.
4. Configure data source
Describe your data source for easy identification within your organization, not exceeding 140 characters. To define your Trigger, consider how often you want data to be extracted from this source. Singular refreshes most data once a day, so a daily extraction is usually enough. Optionally, you can define some additional settings:- Configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource here.
- Determine when to execute an Additional Full Sync. This will complement the incremental data extractions, ensuring that your data is completely synchronized with your source every once in a while.
5. Check your new source
You can view your new source on the Sources page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.Streams and Fields
Available streams
The table below lists every stream, its slug (the exact identifier to pass when creating the source via API) and a short description.Report streams request one report per day, up to yesterday (UTC). Each row is identified by
report_date and row_id, a hash of the row’s dimension values, so days extracted again by the lookback window update the same rows. Ratio metrics such as CPI, CTR, ROI, and eCPM are not extracted because they are not meaningful once aggregated: calculate them from the underlying cost, install, and revenue columns.The SKAN and Ad Monetization streams depend on Singular products that not every account has. When the account does not have them, the stream is skipped with a warning in the run log and its table is not updated.
Fields by stream
Network Report
Network Report
Daily campaign statistics pulled from your ad networks: cost, impressions, clicks and installs, by app, source, OS, country, account, campaign, sub-campaign and data connector.Primary key:
report_date, row_idreport_date- Day the aggregated row refers to, used as the incremental replication keyrow_id- Deterministic hash of report_date and the row’s dimension values, identifying the rowapp- App name in Singularsource- Ad network or other media source the data comes fromos- Device operating system (e.g. iOS, Android)platform- Device platform (e.g. iPhone, iPad); equals os when the source has no such breakdowncountry_field- Country (ISO 3166 alpha-3 code)adn_account_id- Ad network account identifieradn_account_name- Ad network account nameadn_campaign_id- Campaign identifier as reported by the ad networkadn_campaign_name- Campaign name as reported by the ad networkadn_sub_campaign_id- Sub-campaign (ad set / ad group) identifier as reported by the ad networkadn_sub_campaign_name- Sub-campaign (ad set / ad group) name as reported by the ad networkdata_connector_id- Identifier of the Singular data connector the network data was pulled withdata_connector_source_name- Source name of the data connectordata_connector_username- Account/username used by the data connectoradn_cost- Cost as reported by the ad network, converted to the account currencyadn_original_cost- Cost in the original currency reported by the ad networkadn_original_currency- Original currency of the cost reported by the ad networkadn_impressions- Impressions as reported by the ad networkadn_clicks- Clicks as reported by the ad networkadn_installs- Installs as reported by the ad networkextra_fields- Columns returned by Singular that have no column of their own, such as cohort metrics (JSON object)
Network Creative Report
Network Creative Report
Daily ad network statistics broken down by creative and asset. Singular’s alignment rows (“Missing Creative Data”) are excluded.Primary key:
report_date, row_idreport_date- Day the aggregated row refers to, used as the incremental replication keyrow_id- Deterministic hash of report_date and the row’s dimension values, identifying the rowapp- App name in Singularsource- Ad network or other media source the data comes fromos- Device operating system (e.g. iOS, Android)platform- Device platform (e.g. iPhone, iPad); equals os when the source has no such breakdownadn_campaign_id- Campaign identifier as reported by the ad networkadn_campaign_name- Campaign name as reported by the ad networkcreative_type- Creative type (e.g. image, video)adn_creative_id- Creative identifier as reported by the ad networkadn_creative_name- Creative name as reported by the ad networkcreative_url- URL of the creativecreative_image- Image of the creativecreative_text- Text of the creativecreative_width- Width of the creativecreative_height- Height of the creativecreative_is_video- Whether the creative is a videoasset_id- Identifier of the creative assetasset_name- Name of the creative assetadn_cost- Cost as reported by the ad network, converted to the account currencyadn_impressions- Impressions as reported by the ad networkadn_clicks- Clicks as reported by the ad networkadn_installs- Installs as reported by the ad networkextra_fields- Columns returned by Singular that have no column of their own, such as cohort metrics (JSON object)
Network Publisher Report
Network Publisher Report
Daily ad network statistics broken down by publisher, site and keyword.Primary key:
report_date, row_idreport_date- Day the aggregated row refers to, used as the incremental replication keyrow_id- Deterministic hash of report_date and the row’s dimension values, identifying the rowapp- App name in Singularsource- Ad network or other media source the data comes fromos- Device operating system (e.g. iOS, Android)platform- Device platform (e.g. iPhone, iPad); equals os when the source has no such breakdowncountry_field- Country (ISO 3166 alpha-3 code)adn_campaign_id- Campaign identifier as reported by the ad networkadn_campaign_name- Campaign name as reported by the ad networkkeyword_id- Keyword identifier as reported by the ad networkkeyword- Keyword as reported by the ad networkpublisher_id- Publisher identifier as reported by the ad networkpublisher_site_id- Publisher site/app identifier as reported by the ad networkpublisher_site_name- Publisher site/app name as reported by the ad networkadn_cost- Cost as reported by the ad network, converted to the account currencyadn_impressions- Impressions as reported by the ad networkadn_clicks- Clicks as reported by the ad networkadn_installs- Installs as reported by the ad networkextra_fields- Columns returned by Singular that have no column of their own, such as cohort metrics (JSON object)
Tracker Report
Tracker Report
Daily attribution tracker statistics: impressions, clicks, installs, conversions, re-engagements and daily active users, plus the cohort metrics you configure.Primary key:
report_date, row_idreport_date- Day the aggregated row refers to, used as the incremental replication keyrow_id- Deterministic hash of report_date and the row’s dimension values, identifying the rowapp- App name in Singularsource- Ad network or other media source the data comes fromos- Device operating system (e.g. iOS, Android)platform- Device platform (e.g. iPhone, iPad); equals os when the source has no such breakdowncountry_field- Country (ISO 3166 alpha-3 code)tracker_campaign_id- Campaign identifier as reported by the attribution trackertracker_campaign_name- Campaign name as reported by the attribution trackertracker_impressions- Impressions as reported by the attribution trackertracker_clicks- Clicks as reported by the attribution trackertracker_installs- Installs attributed by the attribution trackertracker_conversions- Conversions (installs plus re-engagements) attributed by the trackertracker_reengagements- Re-engagements attributed by the attribution trackerdaily_active_users- Daily active usersextra_fields- Columns returned by Singular that have no column of their own, such as cohort metrics (JSON object)
Combined Report
Combined Report
Daily network and tracker data joined by Singular into the same rows, so cost and performance metrics can be analyzed together, plus the cohort metrics you configure.Primary key:
report_date, row_idreport_date- Day the aggregated row refers to, used as the incremental replication keyrow_id- Deterministic hash of report_date and the row’s dimension values, identifying the rowapp- App name in Singularsource- Ad network or other media source the data comes fromos- Device operating system (e.g. iOS, Android)platform- Device platform (e.g. iPhone, iPad); equals os when the source has no such breakdowncountry_field- Country (ISO 3166 alpha-3 code)adn_account_id- Ad network account identifieradn_account_name- Ad network account nameunified_campaign_id- Campaign identifier after Singular’s joining of network and tracker dataunified_campaign_name- Campaign name after Singular’s joining of network and tracker datasub_campaign_id- Sub-campaign identifier after Singular’s joining of network and tracker datasub_campaign_name- Sub-campaign name after Singular’s joining of network and tracker dataadn_cost- Cost as reported by the ad network, converted to the account currencyadn_original_cost- Cost in the original currency reported by the ad networkadn_original_currency- Original currency of the cost reported by the ad networkcustom_impressions- Impressions from the source Singular considers authoritative (network or tracker)custom_clicks- Clicks from the source Singular considers authoritative (network or tracker)custom_installs- Installs from the source Singular considers authoritative (tracker, or network for self-attributing networks)tracker_conversions- Conversions (installs plus re-engagements) attributed by the trackertracker_reengagements- Re-engagements attributed by the attribution trackerdaily_active_users- Daily active usersextra_fields- Columns returned by Singular that have no column of their own, such as cohort metrics (JSON object)
SKAN Raw Report
SKAN Raw Report
Daily SKAdNetwork installs and postbacks from Apple SKAN postbacks. Available only to Singular attribution customers with SKAN data.Primary key:
report_date, row_idreport_date- Day the aggregated row refers to, used as the incremental replication keyrow_id- Deterministic hash of report_date and the row’s dimension values, identifying the rowapp- App name in Singularsource- Ad network or other media source the data comes fromtracker_campaign_id- Campaign identifier as reported by the attribution trackertracker_campaign_name- Campaign name as reported by the attribution trackercountry_field- Country (ISO 3166 alpha-3 code)skan_app_id- Value of the ‘app-id’ parameter in Apple’s SKAdNetwork postbackskan_network_id- Value of the ‘ad-network-id’ parameter in Apple’s SKAdNetwork postbackskan_campaign_id- SKAdNetwork campaign ID (SKAN 4: the first two digits of the Source ID)skan_publisher_id- Value of the ‘source-app-id’ parameter in Apple’s SKAdNetwork postbackskan_redownloads- Whether the SKAdNetwork install is a redownload (true) or a regular download (false)skan_validated- Whether Singular validated the SKAdNetwork postback with Appleskan_version- SKAdNetwork version as received in the postbackskan_installs- Installs as reported by the SKAdNetwork frameworkskan_conversion_values_count- Number of SKAN installs for which Singular received a conversion valueskan_p2_postbacks- Number of second-window (p2) postbacks reported by SKAdNetworkskan_p3_postbacks- Number of third-window (p3) postbacks reported by SKAdNetworkextra_fields- Columns returned by Singular that have no column of their own, such as cohort metrics (JSON object)
SKAN Report
SKAN Report
Daily SKAdNetwork data merged with network and tracker data by unified campaign. Available only to Singular attribution customers with SKAN data.Primary key:
report_date, row_idreport_date- Day the aggregated row refers to, used as the incremental replication keyrow_id- Deterministic hash of report_date and the row’s dimension values, identifying the rowapp- App name in Singularsource- Ad network or other media source the data comes fromcountry_field- Country (ISO 3166 alpha-3 code)unified_campaign_id- Campaign identifier after Singular’s joining of network and tracker dataunified_campaign_name- Campaign name after Singular’s joining of network and tracker dataskan_redownloads- Whether the SKAdNetwork install is a redownload (true) or a regular download (false)skan_validated- Whether Singular validated the SKAdNetwork postback with Appleadn_cost- Cost as reported by the ad network, converted to the account currencyskan_installs- Installs as reported by the SKAdNetwork frameworkskan_conversion_values_count- Number of SKAN installs for which Singular received a conversion valueskan_revenue- Campaign revenue measured through SKAdNetworkskan_report_network_clicks- Ad clicks as reported by the network, in the SKAdNetwork reportskan_report_network_impressions- Ad impressions as reported by the network, in the SKAdNetwork reporttracker_installs- Installs attributed by the attribution trackerextra_fields- Columns returned by Singular that have no column of their own, such as cohort metrics (JSON object)
Ad Monetization Report
Ad Monetization Report
Daily ad revenue and ad serving statistics pulled from your monetization networks. Available only if ad monetization reporting is set up in Singular.Primary key:
report_date, row_idreport_date- Day the aggregated row refers to, used as the incremental replication keyrow_id- Deterministic hash of report_date and the row’s dimension values, identifying the rowapp- App name in Singularsource- Ad network or other media source the data comes fromos- Device operating system (e.g. iOS, Android)platform- Device platform (e.g. iPhone, iPad); equals os when the source has no such breakdownsite_publid_id- App store identifier of the app (bundle identifier or package name)ad_country- Country in which the ad was servedad_type_id- Identifier of the ad type (ad format or ad unit)ad_type_name- Name of the ad type (ad format or ad unit), e.g. banner or rewarded videoad_placement_id- Identifier of the ad placement within the app, as reported by the networkad_placement_name- Name of the ad placement within the app, as reported by the networkad_requests- Number of ad requests reported by the networkfilled_ad_requests- Number of filled ad requests reported by the network (equals ad_impressions when not reported)ad_impressions- Impressions reported by the ad networkvideo_views- Video views reported by the ad networkcompleted_video_views- Completed video views reported by the ad networkad_clicks- Clicks reported by the ad networkad_revenue- Ad revenue reported by the ad network, converted to USDbid_requests- Number of bid requests to the ad networkbid_responses- Number of bid responses received from the ad networkextra_fields- Columns returned by Singular that have no column of their own, such as cohort metrics (JSON object)
Data Availability
Data Availability
Whether Singular already has data for each data connector on each day, and when it was last refreshed.Primary key:
data_date, data_connector_iddata_date- Day the availability refers to, used as the incremental replication keydata_connector_id- Unique identifier of the data connector; can be used to filter reportsdata_connector_source_name- Name of the source (ad network) the data connector pulls fromdata_connector_username- Account/username the data connector uses to log into the sourcestatus- Status of the data: Data Populated, Data not Populated, Login Error, Setup/Not configured or Disabledis_available- True if there is data from this data connector for the dayis_empty_data- True if data was pulled successfully but is empty (all zeros or N/A); null when data was not pulled yetis_active_last_30_days- True if this data connector had non-empty data at least once in the last 30 dayslast_updated_utc- Last time data for this data connector was saved in the Singular database (UTC)data_connector_timestamp_utc- Date and time data was last pulled from this data connector for the day (UTC)is_all_data_available- True if all data connectors of the account have data for the day
Filters
Filters
Dimensions reports can be filtered by, with their possible values.Primary key:
namename- API name of the dimension that can be used in report filtersdisplay_name- Name of the dimension as shown in the Singular platformvalues- Possible values of the dimension (JSON array of objects with ‘name’, the value to use in filters, and ‘display_name’)
Custom Dimensions
Custom Dimensions
Custom dimensions configured in your Singular account.Primary key:
idid- Identifier of the custom dimension, used to request it in reportsdisplay_name- Name of the custom dimension as shown in the Singular platform
Cohort Metrics
Cohort Metrics
Cohort metrics and in-app events available in your account.Primary key:
namename- Identifier of the cohort metric, used to request it in reportsdisplay_name- Name of the cohort metric as shown in the Singular platform
Cohort Periods
Cohort Periods
Cohort periods supported by your account.Primary key:
periodperiod- Cohort period identifier, used in the cohort_periods report parameter
Conversion Metrics
Conversion Metrics
Conversion events available as report metrics.Primary key:
namename- Auto-generated identifier of the conversion event, used to request it in reportsdisplay_name- Name of the conversion event as configured in the Events page
SKAN Events
SKAN Events
SKAdNetwork events available for SKAN reports.Primary key:
namename- Auto-generated identifier of the SKAN event, used to request it in SKAN reportsdisplay_name- Name of the SKAN event as shown in the Events page
Implementation notes
- Rows are aggregated statistics, not user-level data. User-level data is only available through Singular’s Data Destinations (ETL) product, which this connector does not use.
- Stats reported by an ad network (e.g.
adn_installs) may differ from the ones reported by your attribution tracker (e.g.tracker_installs). Thecustom_*metrics in the Combined report hold the value Singular considers authoritative for each source. - Including
data_connector_idsplits network and tracker data into separate rows, so the data connector fields are only part of the Network report. - If a dimension combination disappears from Singular for a day that is extracted again, the old row is not deleted from your table.