Explore AppExchange App Analytics
Learning Objectives
After completing this unit, you’ll be able to:
- List AppExchange App Analytics data types.
- Recognize business use cases for package log file, package usage summary, and subscriber snapshot data types.
What Is AppExchange App Analytics?
Now that Robert has data on how potential customers interact with his AppExchange listing, he needs data on how subscribers use the Cloudy Health solution and its contents.
App Analytics provides usage data about how subscribers interact with AppExchange solutions. Use these details to:
- Identify attrition risks.
- Inform feature development decisions.
- Improve your subscribers’ experience.
Common Use Cases
Leung and Robert know that App Analytics will help inform their business decisions during their app 3.0 development phase. But can App Analytics help their other colleagues, too? Absolutely. App Analytics supports a wide variety of use cases.
Partner User | Goals | How App Analytics Helps |
---|---|---|
Presales engineer or account executive |
|
|
Customer success representative |
|
|
Product manager |
|
|
Software engineer |
|
|
How Does App Analytics Work?
Once you have clear App Analytics objectives similar to the goals above, you need your subscriber data to get into App Analytics. Here’s a Cloudy Health example to give you an idea of how that works.
- A Cloudy Health subscriber creates a reminder to get their annual physical.
- This interaction—creating an object—is stored in Salesforce as a line of data in a log file.
- Salesforce code stores, tidies up, and makes log lines available for retrieval.
- Robert creates an App Analytics query request and retrieves his requested data in his desired format.
App Analytics is available for packages that have passed security review and are registered to a License Management Application (LMA). To visualize your data, use CRM Analytics or any third-party analytics tool.
App Analytics includes three data types: point-in-time snapshot, monthly summary, or time series data. Each data type offers some CRUD (create, read, update, delete) activity and other data, such as counts of custom object records by subscriber.
Data Type | Description | What’s Included and Excluded |
---|---|---|
Subscriber Snapshot |
Small file containing a point-in-time look at your solution’s subscriber account activity Doesn’t contain user-specific activity |
Included: Object record counts from production and trial org events Excluded: Sandbox and scratch org events |
Package Usage Summary |
Medium-size file providing summarized, high-level metrics by calendar month |
Included: Production org events Excluded: Sandbox, scratch org, and trial org events |
Package Log File |
Large file containing all available data: UI, API-based, Lightning-based, and Apex operations CRUD operations are logged per package for all components and custom objects in the package |
Included: Production, sandbox, and trial org events Excluded: Scratch org events |
Need more App Analytics inspiration? Read App Analytics Use Cases in the Second-Generation Managed Packaging Developer Guide. As Salesforce evolves, so do App Analytics data types. Periodically check Salesforce release notes and the Get Started with AppExchange App Analytics info in the Second-Generation Managed Packaging Developer Guide for updates.
The next step for Robert is to study each data type’s dimensions (the data columns used to filter and summarize on) and measures (the metric values used to create KPIs). You can review a complete list of dimensions and measures in package usage summary, package log file, and subscriber snapshot data types in the Second-Generation Managed Packaging Developer Guide.
Package Usage Summary
Package usage summaries include data related to the UI, the API, Lightning, and Apex operations. Summaries become available at the beginning of the next month. For example, you can get the usage summary for March at the beginning of April.
Both partners and subscribers can access package usage data. Partners request summaries using the AppAnalyticsQueryRequest object in the SOAP API from the LMA org that owns their package. Subscribers download usage summaries from their org’s Package Usage page for any security-reviewed package that they’ve installed.
Key dimensions:
-
managed_package_namespace
identifies your solution. -
custom_entity_type
signifies the type of custom object or component, such as Lightning component. -
custom_entity
identifies the component or custom object a subscriber accessed. -
month
represents the month of the usage summary. -
organization_id
is the 15-character ID of the subscriber org. -
user_id_token
is the anonymized ID of the user who accessed the package. The token persists over time, even if a user’s details change. -
user_type
identifies the user license category of the user accessing Salesforce services through the UI or API.
These measures count different types of actions on specific types of code.
Measure | Type of Code |
---|---|
|
Apex executions, CRUD activity |
|
Custom objects |
|
Lightning components, custom Visualforce code |
Subscriber Snapshot
A subscriber snapshot is a point-in-time look at custom entity, package, and org data. Request a date range and receive one snapshot per valid date in that range. For example, StartTime=2023-01-18T00:00:00Z EndTime=2023-01-21T00:00:00Z returns three snapshots, one for each complete day: January 18, January 19, and January 20.
Package Log File
Package log files list subscriber activity during a 24–hour period, between 12:00 AM and 12:00 AM UTC time. Your managed package contains packaged components, and each package usage log line describes an interaction that a user has with one of your packaged components.
To understand that interaction, analyze each log line—or record—and focus on:
- What packaged component was accessed
- Who interacted with that packaged component
- How that packaged component interaction occurred
Finally, analyze the specific interaction data. Use this table to determine the key log data elements for your analysis.
What Packaged Component Was Accessed | Who Interacted with the Component | How the User Interacted with the Component |
---|---|---|
To identify each packaged component uniquely, combine these fields.
|
Identify the subscriber org using Use the |
Identify how the user interacted with your packaged component with Other common fields associated with each interaction are:
|
For complete details on the contents of package usage logs and how to analyze all available data elements, check out How to Read App Analytics Package Usage Log Data in the Second-Generation Managed Packaging Developer Guide.
After you determine what, who, and how, next analyze your specific interaction data.
Custom and External Object Interaction Data
When a log record in your package usage log has custom_entity_type
equal to CustomObject
or ExternalObject
, it means that a user performed an action that resulted in a create, read, update, or delete (CRUD) interaction on your object.
To determine the type and amount of CRUD that occurred on your packaged component, focus on:
operation_type
operation_count
Many user operations result in CRUD, like Apex REST API requests, SOAP API requests, scheduled job executions, and queueable Apex executions. Full detail on standard and supplemental data available by operation is available in Custom and External Object Interactions in the Second-Generation Managed Packaging Developer Guide
Lightning Interaction Data
Each record in your package usage log that has a custom_entity_type
of LightningComponent or LightningPage describes an interaction with your packaged Lightning component or page.
When a user interacts with your LightningPage or LightningComponent packaged component, a log_record_type
of LightningInteraction is created. When a user views your Lightning page, a log_record_type
of LightningPageView is created.
Apex Interaction Data
Each record in your package usage log that has a custom_entity_type
of ApexClass or ApexTrigger describes an interaction with your packaged Apex class or trigger.Visualforce Interaction Data.
Each record in your package usage log that has a custom_entity_type
of VisualforcePage describes an interaction with your packaged Visualforce pages.
CRM Analytics Asset Interaction Data
Each record in your package usage log that has a custom_entity_type
of AnalyticsDashboard, AnalyticsLens, or AnalyticsRecipe describes an interaction with your packaged CRM Analytics assets.
In this unit, you learned about the three AppExchange App Analytics data types and discovered some use cases for each data type. You also learned what the data represents. Continue to the next unit as Robert and Leung retrieve App Analytics and automate data requests.