After you have integrated the Singular SDK/S2S into your app, it's important to make sure it works correctly before you go live with the new version of the app.
- Have the Singular SDK or S2S implemented for an app.
- To use the Testing Console, you will need a mobile device to test with.
Singular offers three main tools for testing your integration:
- the Testing Console, which allows you to manually test different features as you implement them in real-time,
- the Export Logs, which allow you to download user-level data after a delay,
- the Audit Report, which automatically identifies any issues in your integration.
Using the Testing Console
Add a test device
To add a device to the console:
- In the Singular platform, go to Developer Tools > Testing Console.
Click Add Device.
- Provide your Device Type. For Android, when available, we recommend Google Advertising ID (GAID/aifa), AppSetID (asid) or AndroidID (andi) in that order. For iOS devices, we recommend using the IDFV when available. You can use the IDFA, but you won't be able to make the console "forget" your device's data.
Provide your Device ID.
Capturing the device ID
For Android, we advise using the Google Advertising ID (GAID/aifa). The Singular Device Assist app (Android) can help you find it.
The aifa is also found in the Android LogCat when logging for the Singular config is enabled.
SingularConfig config = new SingularConfig(SdkKey, SdkSecret)
Sample LogCat output:
2023-06-01 15:48:32.224 27442-27560/com.singular.test D/Singular: DeviceInfo [worker] - andi : 8868adc2f7ffffff
2023-06-01 15:48:32.224 27442-27560/com.singular.test D/Singular: DeviceInfo [worker] - asid : 12dc3652-5e46-f2bb-a93a-b3c092ffffff
2023-06-01 15:48:32.224 27442-27560/com.singular.test D/Singular: DeviceInfo [worker] - aifa : 3bbc76b0-cebb-4a9f-b6ec-10ca1affffff
For iOS, you can use IDFA when the ATT framework is in place and tracking is permitted. Ensure that the Wait For Tracking Authorization With Timeout Interval is also implemented. For all other instances, use IDFV.
IDFA can be captured using one of the methods listed below:
- Use the Singular Device Assist app (iOS) from the App Store. Make sure to give permission for tracking.
- Logging the IDFA in the debug console of Xcode
//Example in Swift
//Example in Objective-C
NSString *IDFA = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
NSLog(@"IDFA: %@", IDFA);
IDFV can be captured in the debug console of Xcode.
//Example in Swift
//Example in Objective-C
NSString *IDFV = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
NSLog(@"IDFV: %@", IDFV);
Add a distinct Device Name and click Save Device.
The first thing to test is whether your SDK integration is initialized successfully and is able to send information to Singular. This allows Singular to start tracking attribution for this app!
To test initialization:
In the Events Log, select your device name from the Devices dropdown. Look for the 🟢 Live indicator.
- Initialize the app from your testing platform / open the app.
When you see a session event, you've successfully initialized the Singular SDK.
How do I read the Events Log?
After you've registered a device and sent some events, the events start appearing in the event log on the Testing Console page.
Click on a row to show the full details of the event as sent from the app.
Why are no events showing up in the Events Log?
If you have registered a test device and are following the guide to test your SDK integration, but no rows are showing up in the Events Log, double-check the following:
- Make sure you opened the app on the test device (to see a user session).
- Make sure you created some in-app events (if you want to test your events).
- The Testing Console only shows events live, i.e. when you are on the page with a selected device and the 🟢 Live indicator. It does not look for historical events from the device.
- Make sure you've selected your device from the dropdown:
Why is the _InstallReferrer event missing when testing an app with Singular SDK 12.0.0 and above?
Starting from Singular SDK 12.0.0, you don't need to test the _InstallReferrer event. Once your app is pushed to the store, our SDK will place the _InstallReferrer data in the first session. You only need to see if the session appears in the Testing Console.
If you are using older versions of the Android SDK, you will still need to check the _InstallReferrer event in the Testing Console.
How do I reset a device and clear its attribution information so I can use it to test install attribution again?
If you want to re-test your SDK integration again with the same device, you have to remove all locally cached data from the device, in addition to clearing the device's attribution in the Singular platform.
Steps for Android Devices
- Close the app and confirm that it is not running (use Force Stop from the Settings menu if you have the option).
- Go to the Settings menu by tapping the wheel icon in your notification window or in the Apps menu.
- Go to Apps, select the app you are testing, long press on the app and select App Info.
- Select Storage and then select Clear Cache and Clear Data.
In the Singular Testing Console, select the device from the dropdown and click the Edit (Pencil) icon. On the shelf that opens, click Delete Device to have our system delete this device attribution.
Tip: Google Play offers apps that perform this function for you (see example).
Steps for iOS Devices
- Close the app and then uninstall.
Open the Testing Console, find your device in the dropdown, and click the Edit icon. On the shelf that opens, click Delete Device to have our system delete this device attribution.
Tip: Testing With Re-engagement Inactivity Windows
The inactivity window is a setting that determines how long the user has to be inactive before they are eligible for re-engagement attribution. If you are testing re-engagement attribution prior to launching campaigns, an inactivity window would make it harder for you. This is why test devices (devices that have been added to the Testing Console and have the eye icon enabled) are exempted from the inactivity window.
Test specific features
[iOS] Test Apple iAd Referrer
On iOS devices, Singular should be receiving the iAd Attribution data. To validate it, after having added a device to the console and installed the app on it, check the Testing Console and confirm that "__iAd_Attribution__" event shows up.
- This event shows up only when the app is installed. If the app has been installed for a while, follow the instructions to reset the device. Then re-add the device to the console and reinstall the app on it.
- If the event does not show up, it is possible the app was opened before the device was completely registered in the Testing Console. If you integrated the Singular static library, make sure you are importing iAD.framework. If you are using CocoaPods, it is already included.
Test Custom User ID
If your SDK integration sends a custom user ID to Singular, here's how to test it.
- Register the device in the Testing Console.
- Open the app.
- If needed, in your app, trigger an action that sends the user ID (such as logging in). The nature of the action depends on your implementation.
In the next event sent to Singular, expand the event details in the Testing Console and check that the details include a value for "custom_user_id".
If the user ID does not show up:
- Check that the method that sets the user ID is actually being called in your app when you want it to be.
- You may want to add a Singular SDK event and call it "setting custom user id" so that the event shows up in the Testing Console.
If you've implemented event tracking or revenue tracking in your SDK integration, follow the instructions below to test them.
For more about events, see:
For every event you've implemented in your SDK integration:
Trigger the event from the app and check that it appears in the event log with the name you gave the event.
If you are sending any additional data with the event, click the event's row in the Testing Console to expand the event details, and ensure the data is included in "event_data".
If the event does not show up, it is possible the app was opened before the device was completely registered in the Testing Console. Check the attribution logs for the event.
For each type of revenue event you've implemented in your SDK integration:
- Trigger the revenue event in the app and check the events log. A row should appear with the event name.
Note: If you didn't give the event a custom name, it receives the default name for revenue events, "__iap__".
Click the row to expand it and make sure the currency ("pcc"), amount ("r"), and any other details of the event have been received.
Test Deep Linking
If you've implemented deep linking in your SDK integration, follow the instructions below to test your deep linking functionality.
1. Set Up a Test Destination
In the Singular platform, go to Settings > Apps, find the app, and add a deep link destination.
The destination should be one of the deep link destinations that the handler code in your SDK integration can recognize and handle.
2. Create a Link to Test
Now that you have a destination to link to, you can create a deep link.
- Go to Attribution > Manage Links and select the app from the sidebar.
- Click Create Link.
- Under Link Type, select "Custom Source", and under Source Name, select "Email".
- Give the link a name.
- Click the Link Settings and Redirects section to expand it.
- Select the destination you just created in the Deep Link dropdown list.
- In the Fallback Destination for Other Platforms text box, enter a website URL.
Click Generate and copy the link from the Click-Through Tracking Link field.
3. Test the Link
To test the link:
- Make sure the app is installed on your test device.
- Email the copied link to your test device.
- From the device, open the email and click the link. The app should open and display the intended page or content.
Alternative way to test the link (Android only):
Open a command-line terminal on your computer to trigger a deep link:
"When my app is already running, a deep link opens a new instance of the app instead of switching to the existing one." To avoid this, edit your manifest file and add the following to your activity:
See Google's <activity> documentation for more information about launchMode options.
Test Deferred Deep Linking
To confirm that deferred deep linking is enabled:
Check the session event in the Testing Console.
- Set up a test destination and a link as explained above in Test Deep Linking.
- Uninstall the app from your test device.
Email the deep link to the device and open it from the device. The link should take you to the app store. After you install the app and open it, you should see the desired page or content.
Test Uninstall Tracking
If you've implemented uninstall tracking in your SDK integration, follow the instructions below to test it.
Testing uninstall tracking is more complicated than testing other SDK functions, because Singular depends on Google/iOS services to report the uninstall, and the process takes some time. You can't see the uninstall event in the Singular platform in real time, and you can't use the Testing Console for it.
Before you test, make sure that you are sending your FCM/APNS token to Singular (see Android SDK: Tracking Uninstalls and iOS SDK: Tracking Uninstalls).
Also, double-check that you have entered your FCM Server Key (for Android) or your iOS Push Certificate in the App Configuration page.
To test uninstall tracking:
- Using a real device (not an emulator), install the app on the device.
- Open the app so that the install is registered.
- Uninstall the app.
To check if Singular has received the uninstall event, you have several options:
- Export the attribution logs (event logs) and find the uninstall event. It may take a couple of days for it to show up in the logs.
- If you have set up postbacks to be sent to your internal BI system, you can receive a postback about the uninstall.
- You can contact Singular support or your Customer Success Manager to help you validate uninstall tracking.
Note: While you are waiting to validate the uninstall event, don't reset the device ID and don't reinstall the app.
Note: The testing console doesn't support iOS TestFlight apps. A TestFlight build resets the IDFV on every app launch and live events cannot be captured.
Using the Export Logs
You can also use the Attribution > Export Logs to verify test results with a delay. The Export Logs feature allows you to manually download user-level data such as Conversions (installs), Events, etc.
- Before obtaining the data, double-check that the Date, App, and site are selected appropriately.
- Data in the export logs is ~3 hours behind.
- For more help, see this FAQ.
Running an SDK Audit
Singular offers an SDK audit report that tests your SDK and S2S integrations to see if they are correctly implemented. The audit outputs a list of all the issues that it finds, with tips for how to solve them. To use the SDK audit report:
Run an SDK audit report
Go to Developer Tools > Testing Console and click Run Audit in the top right corner.
Download the report and fix the relevant issues
Once the report finishes running, you can download it in CSV format.
The report is a list of issues found in your SDK and S2S integrations. Not all issues are critical or relevant, depending on which features you've implemented.
Go over the issues in the report and fix them according to the tips in the Error Description field.
For warning/info type issues: Check the Validation Name and see whether this is an optional SDK feature that you have chosen not to implement, such as deferred deep linking (DDL). If so, you can ignore the error message.
How does the SDK audit work and what data does it run on?
The SDK audit looks at data received from your apps in the last 3 days. It checks whether the data looks as expected, e.g.:
- Whether the app is reporting user sessions (this is the most basic functionality of an SDK/S2S integration and is what enables Singular to track attribution)
- Whether the app is reporting in-app events and revenue
- Whether revenue is reported using best practices
- Whether deferred deep linking is enabled
How do I read the SDK audit report?
The report is a list of issues that have been found in your SDK and S2S integrations.
||The name of the app as configured in Singular.
||The app bundle as configured in Singular, e.g., com.example.appname.
||iOS, Android, or Amazon.
||The app version number, if any.
||The area of the integration in which an issue has been found, e.g., "Custom user ID" or "Revenue events".
The severity of the issue:
- Error: This issue prevents the integration from working and you have to fix it before you go live with the app. For example, Singular is not receiving user sessions from the app. Without user sessions, we can't perform attribution.
- Warning: The integration can work without this but you should fix it if you want to follow best practices and get the most from the Singular attribution tracker. For example, your app is not sending a custom user ID. The custom user ID is an optional feature but highly recommended.
- Info: This issue concerns optional functionality that you may have chosen not to implement in your integration. For example, deferred deep linking (DDL) is not enabled in your app. DDL may simply not be relevant to your marketing strategy.
||More information about the issue and how you can fix it.