Flexera Software Community Knowledge Base

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Knowledge Base Categories
The Usage Intelligence SDK version 5 was released on July 3, 2017. This release contains various enhancements and new functionality. If you are planning to upgrade to SDK V5, please note that API calls have changed and this is not a simple drop in replacement. This article is intended to give developers an overview of the changes. For full details please review the SDK V5 documentation from here. Upgrading from version 3 to version 4 and 5 Change from singleton to dynamic classes. This requires you to create an instance of the class instead of making use of static functions. To create and destroy an instance: V4 -  tbCreateInstance()  and  tbDestroyInstance() V5 -  ruiCreateInstance()  and  ruiDestroyInstance() Setting the path where the Usage Intelligence SDK files will be saved is compulsory. In V4 this is set by calling  tbSetFilePath()  and in V5 set by  ruiCreateConfig(). Key check/change and message check always allocate memory,  tbFree()  in V4 and  ruiFree()  in V5 must be called on the message or license array to free memory. The following functions have been deprecated: tbVersionCheck() tbSetPrivacyMode() Upgrading from version 3 and 4 to version 5 The naming convention has changed from tb to rui prefix for all SDK functions, e.g.  tbCreateConfig()  is now  ruiCreateConfig() . This change was done to reflect the new company branding that was changed from Trackerbird to Revulytics in 2016. ruiCreateInstance()  accepts a boolean parameter to specify if the default ReachOut™ handler should be registered. If set to true, the SDK will handle the display of the window when an automatic ReachOut™ is delivered. If set to false, you will need to use  ruiSetReachOutHandler()  to specify custom functions which will be called to display and close ReachOut™ windows. The default ReachOut™ handler is available for the Windows and Mac SDK. For Linux, a custom handler must be set to display automatic ReachOut™ messages. Refer to the documentation for more information on  ruiSetReachOutHander() : Windows: C/C++ | .NET Mac: C/C++ | Objective-C Linux: C/C++ V5 does not save product and licensing info in the config file anymore and it is recommended to set all known info before every start. This includes product edition, language, version, build, custom properties, and license key type and flags (activated, expired, blacklisted, whitelisted) when licensing is client managed. If these settings are only set once and the SDK is not able to callhome during that application runtime, the settings will be lost. tbSetFilePath()  and  tbCreateConfig()  have been consolidated to  ruiCreateConfig() , which now accepts the file path as the first parameter. ruiCreateConfig()  parameters have changed, the following are now required: configFilePath – The path where the Usage Intelligence files will be saved, in previous versions this used to be set by  tbSetFilePath() productID – The ID of your product, retrieved from the Usage Intelligence Dashboard > Administration page appName – A name for the application, it cannot contain spaces. If multiple applications in the same product suite are tracked under the same product ID they should have different app names serverURL – The callhome URL for your product, retrieved from the Usage Intelligence Dashboard > Administration page protocol – The protocol used when communicating with the server: 1 - HTTP with AES-128 encrypted payload 2 - HTTPS with fall back to HTTP with AES-128 encrypted payload 3 - HTTPS only (with no fallback) aesKeyHex – AES key retrieved from the Usage Intelligence Dashboard > Administration page to be used for HTTP with AES-128 encryption communication. Must be empty if HTTPS only is used multiSessionEnabled – true/false whether sessions are managed by the application reachOutOnAutoSync – true/false whether the SDK should check for available automatic ReachOut™ campaigns when it automatically syncs with the server Setting product version and build is no longer done when creating config. To set product details in V5: ruiSetProductData()  accepts parameters for product edition, language, version and build Functions to set individual product details still remain,  ruiSetProductEdition() ,  ruiSetProductVersion()  etc.. tbStartAutoSync()  and  tbStopAutoSync()  are no longer available. The SDK now automatically syncs with the server every 20 minutes by default. This setting cannot be changed or switched off. Function names to set license properties and check / track license changes have changed: tbSetLicense()  is now  ruiSetLicenseData() tbKeyCheck()  is now  ruiCheckLicenseKey() tbKeyChanged()  is now  ruiSetLicenseKey() ruiSetLicenseData()  now accepts a session ID parameter, which can be specified when running in multi session mode or left empty. The order of the license array values when using  ruiCheckLicenseKey()  and  ruiSetLicenseKey()  has changed. The new order is: RUI_LICENSE_ARRAY_INDEX_KEY_TYPE (0) RUI_LICENSE_ARRAY_INDEX_KEY_EXPIRED (1) RUI_LICENSE_ARRAY_INDEX_KEY_ACTIVE (2) RUI_LICENSE_ARRAY_INDEX_KEY_BLACKLISTED (3) RUI_LICENSE_ARRAY_INDEX_KEY_WHITELISTED (4) Function names to check for manual ReachOut™ messages have changed: tbMessageCheck()  is now  ruiCheckForReachOut() tbMessageCheckWithMessageType()  is now  ruiCheckForReachOutOfType() In V5 there are different ways to track events with custom data: Same functionality of  tbEventTrackTxt()  is available in  ruiTrackEventText() New function  ruiTrackEventCustom()  accepts an array of key/value pairs and will be saved in the format (Key1, Value1)&&(Key2,Value2). Refer to the documentation for more info: Windows: C/C++ | .NET Mac: C/C++ | Objective-C Linux: C/C++ ruiTrackException()  accepts a struct with exception details instead of individual parameters. Refer to the documentation for more info: Windows: C/C++ | .NET Mac: C/C++ | Objective-C Linux: C/C++ The Mac and Linux SDK now support setting proxy settings through  ruiSetProxy() . This functionality was previously only available for Windows. Function return values have changed: “OK” value has been changed from 1 in V3 and V4 to 0 in V5, i.e. TB_OK (1) is now RUI_OK (0) In general, a negative return value now means an error occurred, while positive values are info Check respective function documentation for new return values If you require further technical assistance during the upgrade/migration process, please contact support.
View full article
The Usage Intelligence SDK allows you to check for messages and retrieve content from your ReachOut™ campaign as plain text or HTML. This gives you the option to display the message in any way you like within the UI, or if your product does not have an active User Interface, you can deliver the message content to the user via any communications channel that your product has access to, such as an email or a balloon notification. When you’re creating your ReachOut™ campaign from the Usage Intelligence Dashboard, click the button to create a Manual Campaign and enter your message as plain text or else in the form of a URL. To see examples on how to set up your campaign in the Dashboard, you can check out the blog post In-App Messaging using Usage Intelligence ReachOut™. More specifically at the section Building your first ReachOut™ Campaign > Example 3. More information on how to implement the manual ReachOut™ retrieval in your application can also be found in the respective documentation for your preferred platform: Windows: C/C++ | .NET Mac: C++ | Objective-C Linux: C/C++
View full article
The Revulytics Usage Intelligence SDK is designed to be developer friendly and easy to integrate. Once you have read this getting started guide, basic integration will typically take you less than 30 minutes. The Basics Create an Account: If you are not already an existing user, please start by creating a free account on the website. Register a Product: After creating your account login to the Dashboard and from the Home page click on the Register Free Product button. Fill in the product name, confirm your user details and click on Submit to create your free product. Every user is allowed 1 FREE product and an unlimited number of premium products. Retrieve your Product ID and URL: Make sure that your new product is selected in the product selector on the top left of the Dashboard and then go to the Administration page. Here you will find a unique Call Home URL and Product ID which will be required later when integrating the Usage Intelligence SDK. Download the SDK: Download the latest SDK for your preferred platform from the here and extract the archive contents to your project location. Integrate the SDK into your Application: Follow the implementation instructions as outlined in the documentation according to your platform: Windows: C/C++ | .NET Mac: C/C++ | Objective-C Linux: C/C++ Generic: Java Testing Basic Integration Once you complete the above steps, your application is Usage Intelligence enabled and every time a user runs your application, it will be tracked. You can test this basic integration by compiling and running your application. Given your application has access to the internet, you can view the results in real-time by logging in to the Usage Intelligence Dashboard. Note that the Usage Intelligence SDK uses a caching mechanism, so in order to test real-time reporting you might need to close and re-open your application in order to force the SDK to sync with the Usage Intelligence server. Advanced Features Once you have implemented the basics you are ready to make use of a number of advanced features which are made available by the Usage Intelligence SDK. Please check out the Usage Intelligence SDK documentation for instructions on how to: Track Events and Feature Usage Track Custom Properties Track License Conversions Validate License Keys Send ReachOut™ in-app messaging and marketing campaigns You can also view this video for a full example integration walk through.
View full article
Automatic ReachOut™ campaigns allow you to send in-app messages to your users while they are engaged with your application. On most platforms the Usage Intelligence SDK provides a default handler to display the message as a popup window with no additional code changes required in your application. The following is a list of supported platforms / SDK versions for displaying automatic ReachOut™ campaigns: SDK Version Windows  C/C++/.NET Mac C/C++/Obj-C Linux C/C++ Java V3 ✔ ✔ N/A N/A V4 ✔ ✖ ✖ N/A V5 ✔ ✔ ✱ ✱ ✔ Automatic ReachOut supported and includes default handler ✖ Automatic ReachOut not supported ✱ Automatic ReachOut supported but requires the application to specify a ReachOut handler. Further details can be found in the documentation: Linux: C/C++ Generic: Java More Information: When are automatic ReachOut™ campaigns delivered to my users? In-App Messaging and In-App Marketing using ReachOut™
View full article
The Usage Intelligence SDK can check for automatic ReachOut™ campaigns when it calls home to the server. This can happen during an automatic or manual sync and in both cases you control whether it should check for available automatic ReachOut™ campaigns. Automatic Sync The Usage Intelligence SDK performs an automatic sync when  ruiStartSDK()  is called, and every 20 minutes after that while the application is running. If ReachOut on auto sync is enabled when creating the configuration through  ruiCreateConfig() , it will check for automatic ReachOut™ campaigns every time it performs an automatic sync. More information about creating config can be found in the documentation: Windows: C/C++ | .NET Mac: C/C++ | Objective-C Linux: C/C++ Generic: Java Manual Sync Your application can instruct the Usage Intelligence SDK to call home to the server by calling  ruiSync() . This function accepts a Boolean parameter to specify whether it should check for automatic ReachOut™ campaigns during the sync. More information on manual sync can be found in the documentation: Windows: C/C++ | .NET Mac: C/C++ | Objective-C Linux: C/C++ Generic: Java Note that the Usage Intelligence SDK never checks for automatic ReachOut™ campaigns when the sync is done as part of the  ruiStopSDK()  function. More Information: Automatic ReachOut™ Supported Platforms In-App Messaging and In-App Marketing using ReachOut™
View full article
Although sometimes there may be valid reasons where you might consider tracking only a sample of your user base, keep in mind that this may not give you a real picture of your product usage trends and will limit your ability to use ReachOut in-app messaging with users that are not tracked. For this reason we always recommend to avoid this practice and track your entire user base. However if for some reason, such as a limited budget, you need to track only a sub-set of your users, care should be taken to choose your sample diligently and ensure that you always track the same installations so that your metrics are reliable and you do not end up with gaps in usage data. If you simply allow the number of installations to exceed your monthly quota available with your subscription, you do not have a guarantee that the same users are tracked each month. As a result, the data will be skewed and your reports will be inaccurate. More information about the implications of running over quota can be found in this KBase article. The following are some implementation options that you can consider when you need to track a sample of your users: Track a pre-selected group of users based on geography, product edition, marketing campaign or similar by providing a tracked build and a non-tracked build of your software to different user groups. This can be easier to implement, but statistics might still be skewed since the sample of users you’re tracking is very specific and you could potentially miss out on usage patterns from other user profiles. Randomize the sample across your entire user base. This is recommended since you will get a totally random sample across all user profiles and thus have a more statistically accurate view of reality. One of the easiest methods to achieve this is to implement the following logic which is executed the first time a user runs your application: if (random_number modulo 5 == 0) //Flag user as tracked else //Flag user as not tracked This logic will statistically flag 1 in 5 users (20%) as tracked. The flag should be saved in a product config file and every time the application is launched the value is checked to decide whether to start the Usage Intelligence tracking or not. In this case once a user is flagged as tracked, they will always remain tracked until they stop using your product. On the other hand if a new installation does not make it inside the tracked pool, then you will not even know that installation exists. Track everyone by default and implement mechanism to turn off tracking at a later stage by using ReachOut. This is useful if you want to be able to switch off tracking for a specific user group in the future. By using ReachOut filter criteria you will be able to choose which installations to stop tracking after they have started getting tracked. For example you might want to turn off tracking for very old build numbers or stop tracking freeware users if they have not converted after 6 months. If using this method you will need to: Check for manual ReachOut messages at the start of your application as described in the documentation: Windows: C/C++ | .NET Mac: C/C++ | Objective-C Linux: C/C++ Generic: Java Implement code in your application to process the ReachOut message and disable tracking accordingly Create a manual ReachOut campaign with the appropriate filtering to be sent to the installations you want to permanently disable. This campaign can be enabled/disabled at any time from the dashboard. For more information on ReachOut visit this blog post: In-App Messaging and In-App Marketing using ReachOut. IMPORTANT NOTES To make sure that you do not end up with skewed and/or missing gaps in data, whichever method you choose to implement must make sure that if an installation is not tracked it remains so for its lifetime. If you choose to initially track all installations and then switch off tracking for specific user groups, it is recommended that you make use of a custom property to tag those installations as "switched off users". This will give you the ability to filter out such installations from reporting, otherwise you will see an inflated number of lost users which does not reflect the number of users which were truly lost. More information on custom properties can be found in this KBase article. Should you wish to discuss your specific use-case, please reach out to your account manager or to our support who can guide you on the best implementation method to meet your requirements.
View full article
Spyware is unsolicited software which aims to obtain private information from a user's computer without their knowledge and where such information may be sent to third parties without the user’s consent. Spyware is usually installed secretly on a system and spyware vendors go to great lengths to prevent the software from being detected or uninstalled. Usage Intelligence on the other hand does not collect any private data from users’ machines and the data collected and provided by Usage Intelligence is intended to be used solely by vendors of legitimate software. All the information collected by the Usage Intelligence SDK is completely anonymous and none of the data collected can be used to identify individual users. The Usage Intelligence SDK runs in the same process space of the software in which it is embedded, so the usage information gathered by the SDK is limited to the activities of the software in which it is embedded (i.e. it does not track any other user activity on their machines). This information helps vendors keep track of their software usage to provide a better service to their customers without breaching on user privacy. Privacy laws in the jurisdiction(s) where you operate may require you to inform your customers about the data you’re collecting as well as having a Privacy Policy in place. You can read more in this blog post: Staying compliant with privacy laws. Flexera employs a very strict and intolerant policy when it comes to malware. Every vendor who signs up to use our service is required to agree to the following: The Usage Intelligence SDK shall not be implemented in any form of adware, spyware, or malware software Vendors must inform their users about any custom information they are collecting Vendors must have a Privacy Policy in place that defines the obligations and responsibilities to their customers Should Flexera receive reports that identify that a vendor has breached this agreement, we reserve the right to immediately terminate their account in order to protect the legitimacy of our service and our customer base.
View full article
Product Usage Filters are filtering options available in reports and ReachOut™ campaigns that allow you to create filters based on usage properties, i.e. how users have used your product. Usage properties represent the entire lifetime of the user since the first time that they installed your software and made the initial call home to the server. This means that as long as the same data path has been used when calling  ruiCreateConfig() , the values carry over when your software is upgraded or re-installed. For example if after 30 days the user uninstalls the product and re-installs it again the next day, the server will recognize that this is a known user and continue to count the usage statistics from his previous installation. For more information on how Usage Intelligence tracks unique user installations visit this KBase article. Available Product Usage Properties Days Since Installation This is the number of days that have passed since the user installed your application for the first time. Therefore if your software was installed on January 1 and today is January 15, this property would be translated to 15 days. This property is only available for filtering in ReachOut™ campaigns. Date of Installation A user's date of installation is the date when your application made the first call home to the server for this user. You can filter by this property to see activity for users that were new in a particular date range. This property is only available for filtering reports. Date Last Seen The date last seen of a user is the date when your application last called home to the server for this user, i.e. when the user last ran your application. This property is only available for filtering reports. Lifetime Runtime Minutes This is the number of minutes that the user has run your software for. In single-session installations it is calculated according to when  ruiStartSDK()  and  ruiStopSDK()  have been called in your application. In environments where multi-session mode is being used, this value will be calculated according to when  ruiStartSession()  and  ruiStopSession()  are called. Lifetime Number of Sessions The number of sessions represents the amount of times that the user has opened your application. In single-session mode this means the amount of times that  ruiStartSDK()  has been called, while in multi-session mode this means the number of times  ruiStartSession()  has been called. More information on single-session and multi-session modes can be found in this KBase article. Lifetime Event Usage Event usage filters allow you to filter your users based on how many times they generated an event since the application was installed. This can be a single event, or a combination of events which when added together amount to the specified number. For example I can create an event usage filter which includes eventA, eventB and eventC, and specify 10 as the minimum value. This means that the filter will apply to users who in their lifetimes have generated those events combined for at least 10 times, i.e. eventA could have been generated for 5 times, eventB for 8 times and eventC never generated at all. More information on event tracking is available in this KBase article.
View full article
Whenever you run a tracked application, the tracking results should show up on the dashboard in real-time. Therefore if after running (and exiting) your application, that particular installations is not shown among the list of active users, then it probably means the data was not sent by the client to the server. By default, the Usage Intelligence SDK calls home to the server at least once per runtime session when calling  ruiStartSDK()  and then every 20 minutes of runtime after that. Typically another sync occurs when  ruiStopSDK()  is called just before the runtime session terminates. At this point the client will attempt to sync with the server and send any cached data for that session. Whenever an internet connection is not available or the server for some reason rejects the call from the client, the data remains cached on the client until the next sync. You may programmatically force a sync by calling  ruiSync() , however this is not necessary and also not recommended unless you need to cater for some specific usage scenario. Troubleshooting If you have followed the integration instructions and still cannot get data to show up in the reports, please go through this check list: Make sure you are using the correct callhome URL and product ID for that particular product. Every product has its own unique URL and the server will reject any calls from that product unless they match the designated URL. If you have changed the product ID or callhome URL at any point (such as if you previously tried tracking using a test account) then you must delete the Usage Intelligence log and config files before your client will be able to sync with the server. The files are located here. Confirm that the Usage Intelligence SDK has write access to the folder you have set when calling  ruiCreateConfig() . On calling  ruiStartSDK()  the Usage Intelligence SDK should create the following files:   ruiconfig.cfg ruilog.log  More info on using the  ruiCreateConfig()  function can be found here. Check whether the Usage Intelligence SDK has a valid internet connection to reach the server. Programmatically you can check whether the SDK has connectivity to the server by using the  ruiTestConnection()  API call. More info on using the  ruiTestConnection()  function can be found here. Please note that connection to the server may be blocked due to proxy authentication or gateway firewall. You may use  ruiSetProxy()  to cater for proxy server authentication. For more info please check out the related KBase article on How to use Usage Intelligence in proxy and firewall environments. If you go through the above check list and all seems in order, then please open a support ticket here and send the 2 config/log files created by the Usage Intelligence SDK, so that we can help to identify the problem. If your query is related to EVENT / FEATURE tracking data, then please check out this KBase article.
View full article
Firewalls and Web Filters Users having a regular desktop firewall with default security settings should not encounter problems calling home to the servers. However in stricter security environments such as corporate firewalls with more advanced firewall policies or web filtering software that blocks HTTP(S) access to unknown sites, your application could be blocked from connecting to the internet altogether. In such cases your software may be blocked from connecting with the server, so these clients will not be tracked. The Usage Intelligence SDK is designed to fail silently whenever it is not able to communicate with the server, so your application and user experience should not be affected in any way if you follow our implementation guidelines as specified in the documentation. Proxy Environments In environments where a proxy is present, the Usage Intelligence SDK can be configured to use proxy settings to communicate with the server. Specifying Proxy Settings Manually ruiSetProxy Use this method to specify proxy settings which will be used to submit callhome data to the Revulytics servers. Example usage: ruiSetProxy(myRuiInstance, "192.168.1.250", 8080, "MyUser", "MyPassword"); Testing Connectivity ruiTestConnection Use this method to confirm that your application can callhome to the servers. This is typically used in conjunction with  ruiSetProxy() . Example usage: ruiTestConnection(myRuiInstance); This method will return one of the following status constants: RUI_OK (0) RUI_NETWORK_COMMUNICATION_ERROR (-400) RUI_NETWORK_SERVER_ERROR (-401) RUI_NETWORK_RESPONSE_INVALID (-402) RUI_TEST_CONNECTION_INVALID_PRODUCT_ID (-420) RUI_TEST_CONNECTION_MISMATCH (-421) More information on setting proxy settings can be found in the respective SDK documentation: Windows: C/C++ | .NET Mac: C/C++ | Objective-C Linux: C/C++ Generic: Java
View full article
During your first stages of evaluating Software Usage Analytics solutions you might be wondering what are the advantages of using Usage Intelligence over a web analytics solution such as Google Analytics. Below we have outlined a number of points that you should keep in mind when comparing Usage Intelligence to Google Analytics or any other web analytics solutions. First of all, as their name implies, web analytics solutions were designed to track user engagement with your website and are not well suited to track desktop applications. The way users engage with a website or SaaS application running in a browser is very different than the way they engage with a desktop application. This means that you cannot simply use the same tracking metrics for websites and desktop applications alike. Google Analytics does a good job at tracking website browsing sessions, however a number of deficiencies arise when trying to adapt browsing session metrics to track desktop applications. Software Usage Analytics on the other hand was designed specifically for tracking how users engage with a Desktop Application so the metrics used can provide you with true actionable intelligence reports. Below we mention just a few of these differences: Always-on requirement: To track any event with web-analytics, you will have to make a web request. This means you will be adding a requirement that your software must always have a live internet connection. Usage Intelligence uses an intelligent caching system so that the logs are only sent at the appropriate time without interfering with user experience. Web Traffic: Every tracked feature, button click, program start, etc. will generate an individual web request which means your software will be constantly generating internet traffic, which in extreme cases can slow down your application. With Usage Intelligence everything is logged in memory and/or to file and logs are compressed before sent to the server. If a user goes offline, the logs are sent the next time a connection is available. This caching mechanism will cut down hundreds of web requests to an average of 2 calls every 20 minutes of application runtime. Protocol Security & Reliability: With web analytics, a single 'malicious' user can simply sniff the connection (e.g. using Wireshark) to copy your callhome URL and use this in a script to skew all your reporting data. The Usage Intelligence callhome protocol on the other hand implements various security checks to make it more difficult for a malicious user to use your callhome URL and skew data on the server. This includes encryption with a choice of using HTTPS or HTTP with AES-128 encrypted payload, fingerprinting, and every message sent to the server is hashed using SHA-256. Every product also has its own product ID which is checked by the server on every callhome and needs to correspond to the correct URL. Ability to Track Unique users and not single sessions: Web analytics solutions are designed to track individual browsing SESSIONS (usually through cookies) and NOT users/installations. Therefore you have no idea if a user launches your application 5 times a day or whether it was 5 separate users launching it once. This limits all reporting by session rather than by user. Usage Intelligence on the other hand tracks a user story from the day they install your application until they 'die'. This means by using Usage Intelligence you can benefit from detailed conversion funnel and sales cycle analysis reports so you know the amount of time users spent in evaluation before buying/dumping your software. This information is not available with web analytics solutions that rely on single session tracking. Usage Patterns over time: Using Google Analytics it is impossible to report on usage patterns for a particular user group over time because Google cannot identify a user from day1 to day2. Thus you cannot know if users are using your application 5 times a week or 5 times a month. You can only tell that a session belonged to either a new or a returning user. Real-time Filtering criteria: Usage Intelligence reports offer you the ability to drill down (using real-time filtering) so you can focus on a particular country,version, build number, edition, OS, license type, etc or any combination of those. Data is NOT pre-computed and presented as static numbers but we allow you to investigate any Product Management/Development question that may come up. This of course means you can check if any UI updates in a particular versions/build effects usage patterns for that feature and also tell between usage patterns of trial users or those who purchased a license. Google Analytics filtering on the other hand is designed for web applications so you can only effectively filter by country/language. Direct-to-Desktop messaging: Usage Intelligence's ReachOut™ direct-to-desktop messaging framework is a unique and very powerful marketing tool which can help you increase conversions and collect user feedback through ReachOut™ Surveys. It is like strapping a rocket to your conversion rate! Google Analytics for Desktop apps Please visit this blog post for a more detailed discussion on The Pros and Cons of Tracking Desktop Applications with Google Analytics.
View full article
By using the Reporting API, Usage Intelligence enables you to export a copy of your data for archiving purposes. The export must be carried out before you terminate your account, since after this point the data will no longer remain available.
View full article
By default Usage Intelligence does not collect personally identifiable data. The software vendor may extend the default data being collected by Flexera, but they have full control of what is collected and how this data is used. Read More
View full article
Usage Intelligence data is stored on third party server locations in the United States and Europe. For more information please contact support.
View full article
Usage Intelligence runs as part of the same process space as your application, when your app truly crashes we cannot track that in real-time. We can track exceptions. if your application has a built-in logging capability, like a crash log, we can track crashlog data via custom event tracking.
View full article
The default maximum file size for the log file is 1MB. This can be changed by contacting support.
View full article
At this time Flexera does not provide out of the box integrations with third party applications, but there is an open reporting API that you can use to query and pull data into other systems.
View full article
Non-EU customers If your billing address is registered outside of the EU, then your account will automatically be set as VAT exempt and you will NOT be charged any VAT. EU customers If your business (billing address) is registered in one of the EU member states and you have a valid VAT number, then you can set your account as VAT Exempt by ticking the VAT Exempt checkbox inside the Billing Details page and entering your Business VAT number. According to Malta/EU law this will be classified as an intra-community supply and thus any invoices issued on your account will not be charged VAT. If your billing address is registered in one of the EU member states but you do NOT have a valid VAT number, then according to the Malta/EU VAT law you will be charged 18% VAT on all invoices issued to your account. Validating your VAT number A valid VAT number must be in this format as defined by the country of registration. The billing system will automatically validate your VAT number using this online form. Validation will take place whenever you mark your account as VAT EXEMPT. Once verified, your invoices will be issued as exempt from VAT according to the EU VAT regulations for intra-community supplies. If for any reason your VAT number is not being validated correctly, please report this problem by opening a support ticket. Claiming back VAT If you have been issued an invoice which includes VAT, and your business is eligible for VAT exempt EU purchases, then you can claim back this VAT directly from the Maltese tax authorities by filling up a VAT claim form and submitting it to the Malta VAT department as instructed. Other information and declaration forms can be obtained from the Malta VAT department: http://vat.gov.mt/downloads.aspx
View full article
If your business is registered in the EU and you have a valid VAT ID issued in your country of registration, then you should qualify for a VAT exempt account. If your VAT ID is being rejected by the billing system please go through the following checklist: Make sure you are typing the VAT ID in the correct format, including the 2 character country code. The only characters allowed are letters, numbers and spaces. Check that your VAT number is valid and verifiable on the EU website. If your VAT number is not verifiable on this website, then you must report this issue to the tax authorities in the country where you are registered. Please also check this KBase article: Does my account qualify as VAT Exempt? If you're still having trouble verifying your VAT ID with Revulytics, please contact our support.
View full article
When using the Usage Intelligence SDK in your application, you can collect information related to your download sources and marketing campaigns in the form of Custom Properties. The information you collect can be used in report filtering and segmentation, as well as ReachOut™ filters and variables. This will help you to: Measure the effectiveness and ROI of your marketing campaigns Perform conversion and churn analysis for specific campaigns Compare churn and feature usage for users who come from a particular campaign More information about Custom Properties can be found in this KBase article. How do I collect campaign information? The way you collect marketing campaign details will depend on how you distribute your application installer and the kind of campaigns that you make use of. Below are some ideas to get you started: The easiest option is to generate a different build and/or landing page for each campaign or referral download site that you want to track. Each build will contain a specific campaign ID embedded in it (such as inside a configuration file or separate text file). This Campaign ID is read from this file after installation and passed as a Custom Property. Another option is to change the installer filename based on the download source, so instead of your users downloading MyApp-Setup.exe they would download MyApp-Setup-G123.exe, where G123 would refer to a campaign ID that you want to track. The installer can read the filename and save this value in a configuration file which is then passed as a Custom Property. If you choose to go for this option, remember that the user can rename the file or the file might be saved with a different name if the download location already contains a file with the same name, so your application must cater for this. Alternatively you can distribute your installer as part of an archive which would also contain a file with the campaign details of where the archive was downloaded from, such as the campaign ID and/or name. The installer can copy this file with the rest of the application files and once the application is run it can pass the campaign details from this file as Custom Properties. How can I use the campaign details I collect? Reporting The marketing campaign ID or other details you collect in Custom Properties can be used in reports to filter and segment data by a specific campaign and connect your web analytics with your Usage Intelligence statistics. This will help you gauge how effective your marketing campaigns are and determine out of the number of users that downloaded the installer how many of them actually went through with the installation, how long they used the product for, and which events they generated. You can also use filters or segmentation by campaign or download source in order to run specific Churn analysis reports to determine Churn rates and usage patterns for each source. ReachOut™ In-App Messaging and Marketing The data you collect in Custom Properties can be used in ReachOut™ campaigns to filter your user base and can also be combined with other filtering properties, such as targeting users that came from particular campaign(s) and that have used the product for a specific number of days or less. Additionally, custom properties can be used in the content of ReachOut™ messages. This can be useful when you went to send your customers a URL which takes them to a landing page or shopping cart, and which includes the marketing campaign ID as a URL parameter. For more information about using ReachOut™ Variables visit this KBase article.
View full article