Skip to main content

#CRM Analytics12 人がディスカッション中

Pardot Engagement History give me opens and clicks, but I cannot find a way to also get 'sent' data into CRM analytics, so that I can build a complete funnel and interrogate performance retrospectively against segments in my data. Is there a way to bring in this data? 

 

#Trailhead  #CRM Analytics

1 件の回答
  1. 10月28日 16:21

    Hi Neil, have you checked the List Email and Email Send data in MCAE? Engagement History mainly covers interactions, so sent data may need to be pulled separately.

    I'd look at exporting it through the Pardot API and bringing it into CRM Analytics as a separate dataset. You could then join it with your engagement data to build the full funnel. 

Hi! I’m trying to embed a Tableau Cloud dashboard in Salesforce so that users can view the dashboard without having to authenticate separately with Tableau. 

 

From what I understand, using Tableau Embedding + Tableau View requires SSO configuration with a dedicated user account, which I don’t currently have available. 

 

Is there a way to configure authentication using an external application or Tableau Connected App so that users can access the embedded Tableau dashboard without having to reauthenticate with Tableau Cloud? 

 

Any guidance on the recommended approach would be greatly appreciated. Thank you!  

 

#CRM Analytics #Tableau Cloud #Salesforce Admin #Analytics

3 件の回答
  1. 10月8日 14:34

    Diego, that OAuth 2.0 trust connected app is the path I'd point Kathy to for the standard Tableau LWC. Once Tableau Embedding is set up in Salesforce and Enable Single Sign-On is on, the component handles the handshake. She doesn't need a separate token service for that route.

    Kathy, the trusted URL and the site ID get the viz onto the page. Each person still needs their own Tableau Cloud user with access to the workbook. The connected app doesn't create those users.

Hi everyone,

I’m working on a CRMA dashboard and I’m looking for some advice on how to handle multiple Product Families on Opportunities.

An Opportunity can have several Products/Product Families, so our field can contain values like “Nutrition; Health; Botanicals”. This creates messy filter values in the dashboard.

However, I can’t exclude these Opportunities because I need all Opportunities for accurate reporting.

What would be the best approach here? Should I create a separate Opportunity × Product Family dataset, use boolean fields, or is there a better CRMA solution?

Thanks in advance for any advice! 

 

#CRM Analytics  #Salesforce Admin

1 件の回答
  1. 10月6日 5:45

    Yes, splitting it into a separate Opportunity x Product Family dataset is the standard approach here. Use a recipe with the split transform to get one row per family, then faceting on that field gives you clean filter values while your main dataset keeps every Opportunity for accurate totals. Boolean fields work too if you only have a handful of families, but the split dataset scales much better.

Hi everyone,

I am encountering a blocking issue with the Analytics Adoption Metadata managed package (Salesforce Labs) and wanted to report this bug to see if a workaround exists or if a patch is planned.

 

The Error:

 

The asynchronous process fails with an exception indicating that ApexPages.addMessage() is being invoked from a non-Visualforce context.

(Optional: Paste the exact stack trace line here if you have it, e.g., System.HandledException: ApexPages.addMessage can only be called from a Visualforce page context).

Technical Breakdown:

  • Root Cause: The exception is thrown by the WaveMetaDataQueueable job, which executes asynchronously.
  • The Conflict: The code is attempting to use ApexPages.addMessage() to handle an error or status. While this works perfectly during a synchronous Visualforce page request, it is completely detached from a page context when running in a Queueable Apex process.
  • The Result: Salesforce throws a runtime exception because there is no UI page to attach the message to.

The Roadblock:

 

Because this is part of the managed

Analytics Adoption Metadata package, the underlying source code of WaveMetaDataQueueable is hidden. I cannot manually wrap this in a conditional context check (like checking if ApexPages.currentPage() is null) or remove the line myself.

Has anyone else run into this with the latest release, or does anyone know if the Salesforce Labs team is actively tracking a patch for this queueable class? Any advice or temporary workarounds would be greatly appreciated! 

 

#Salesforce Labs  #Adoption App  #CRM Analytics  #Apexexceptionemails

1 件の回答
  1. 9月25日 10:20

    Hi there, 

     

    There is a tracked issue on

    issues.salesforce.com

    : "Einstein Analytics - Adoption App - Apex Error Argument cannot be null," which describes the same WaveMetaDataQueueable class failing after installing the Analytics Adoption Metadata package. The exact error text differs slightly from yours (Argument cannot be null vs. the ApexPages.addMessage context error), but it's the same failing queueable class in the same managed package — worth checking that issue thread for current status/comments, since it confirms this isn't isolated to your org. 

     

    Since the package is managed and WaveMetaDataQueueable's source is hidden, you're right that you can't patch around it directly. Practical options in the meantime: 

     

    1. Disable the Adoption Metadata dataflow trigger. In Setup → Analytics Settings (or via the AnalyticsSettings metadata, analyticsAdoptionMetadata flag), you can turn off automatic Adoption Analytics metadata collection so the queueable stops firing and throwing the exception on schedule. 

     

    2. Check/upvote the existing issue on

    issues.salesforce.com

    rather than filing a duplicate — that's the channel Salesforce Labs teams actually monitor for prioritization, and comments/votes there carry more weight toward getting a fix scheduled than a community thread. 

     

    3. If this isn't business-critical for you right now, uninstalling the package until a patch lands is the cleanest way to stop the recurring failed async job/error emails. 

     

    Since it's a Salesforce Labs (not core platform) managed package, there's no formal SLA on a fix — the

    issues.salesforce.com thread is genuinely your best channel to track and push for resolution.

We're configuring a connection to our data in Google BigQuery for a client, and have discovered something odd; when we configure with the "Google BigQuery Connector", we're unable to see views as objects.  When we use the Google BigQuery Direct Connector" (Live), we're able to see views as objects to be selected.

 

Is this a known limitation of the "Google BigQuery Connector" vs. the "Direct Connector"? I can't find a reference to it in the documentation, but it's always possible it's something I missed.

3 件の回答
  1. 9月13日 13:48

    In our case, we didn’t want to depend on what the native connector exposed, so we used Skyvia to move the BigQuery data into a database first and worked from there. Different setup, but it avoided the connector limitation completely. Just sharing my solution, maybe useful for someone - https://skyvia.com/connectors/google-bigquery

Hi,  

Does anyone know how to get around this error message, to complete the challenge 

Quick Start: CRM Analytics > Apply Conditional Formatting and Annotate a Saved Dashboard View

I did anotate but I cannot share it and I get this error message by  

Step not yet complete in Explore with CRM Analytics

"We can't find an annotated Chatter post on the dashboard. Be sure to follow the instructions for creating an annotated post on Chatter."

Thanks in advance for your help !

Error parsing CSS component value, unexpected EOF

 

 

 

#Trailhead Challenges  #CRM Analytics

2 件の回答
  1. 9月5日 17:28

    @Murielle Majesté

    Good news - that 'unexpected EOF' message is not a problem with your dashboard. It is a known html2canvas CSS-parsing error, thrown when CRM Analytics tries to snapshot your annotated chart into the image it posts to Chatter. It usually fires because a browser extension (ad blocker, dark mode, Grammarly, etc.) injects CSS the snapshot cannot parse, so the annotated post is never created - which is exactly why the grader says it cannot find the annotated Chatter post. 

     

    Fix: 

    1. Open your Trailhead Playground in a clean Chrome window - Incognito, or with every extension disabled. 

    2. Re-open the dashboard, annotate the chart, and use Post to Feed to share it to Chatter. With nothing injecting CSS the snapshot renders and the post lands on the dashboard Chatter feed. 

    3. Re-run Check Challenge. 

     

    if this helps, please mark it as the Best Answer so it helps the next person - thanks 🙂

Hi everyone,

I have a requirement to implement Row-Level Security (RLS) in a CRM Analytics (CRMA) dashboard for three different types of users: Branch Users, Corporate Users, and Legal Users.

The expected access is:

  1. Branch Users – should only be able to see data belonging to their respective branch. 
  2. Corporate Users – should be able to see data across all branches. 
  3. Legal Users – should only be able to see the records/data relevant to Legal. 

The same CRMA dashboard will be used by all three types of users, but the data displayed should be restricted based on the logged-in user's access. 

I'm considering using

Security Predicates for this requirement, potentially using Salesforce User attributes such as User Type and Branch.

My questions are:

  •  What would be the recommended approach for implementing this type of RLS in CRMA? 
  •  Should this be handled using Security Predicates, Sharing Inheritance, or a combination of both? 
  •  What is the recommended way to map the Salesforce User attributes (User Type, Branch, etc.) to the CRMA dataset? 
  •  Can a single Security Predicate handle all three scenarios? 
  •  Are there any best practices or considerations when implementing this for a production dashboard? 

If anyone has implemented a similar Branch / Corporate / Legal user access model in CRMA, I would really appreciate an example or guidance on the architecture and Security Predicate approach.

Thanks! 

 

#CRM Analytics

2 件の回答
  1. 8月31日 19:45

    Hi @SIVA Kishore

     

     

    There's no native "blocking modal" widget in CRMA dashboards

    nothing in the standard widget palette (chart, list, toggle, date, range, number, text) creates a popup that intercepts interaction on load. What CRMA does give you natively are selection based filter widgets date, list, range, and toggle that let users filter results, and these can trigger selection bindings that dynamically change other query parameters, plus the ability to set initial filter selections that are applied when the dashboard first opens. 

      

    None of that adds up to a true gate, though it pre selects or lets users filter, but users can still interact with every widget before making a choice, which breaks your requirement #6.  

     

    What actually gets you the behavior you described: a custom LWC wrapper, not a dashboard internal component. 

    The key distinction is where the LWC lives. Don't embed it as a widget inside the dashboard canvas embed the dashboard inside

    an LWC on the Lightning App Page instead:  

     

    1. Build an LWC for the App Page that, on connectedCallback, shows a modal (SLDS modal or the native lightning-modal overlay) with a Customer Name picklist/combobox.
    2. Don't render the <lightning-analytics-dashboard> component at all until the user submits a selection - conditionally render it with if:true. This is what actually satisfies "no interaction before selection," since the dashboard genuinely isn't mounted yet, not just visually hidden.
    3. On submit, close the modal and mount the dashboard, passing the chosen customer in as a filter - either via the dashboard component's filter/selection input, or via the query-string filter/selection syntax CRMA supports for embedded dashboards.
    4. This pattern (custom LWC talking to a CRMA dashboard, Apex backed data lookups feeding the picklist) is a standard, well documented approach embedding LWCs into or alongside CRMA dashboards is explicitly supported.

    If you want to avoid a custom component entirely, the closest declarative approximation is: a required Global Filter Panel widget with no default selection, paired with faceting so every other widget shows an empty/prompt state until a Customer is chosen. It's a real CRMA pattern and much less build effort, but it only discourages

    interaction with unfiltered widgets it doesn't block it, so it won't fully satisfy your requirement #6 as written. Worth confirming with whoever owns this requirement whether that softer UX is actually acceptable before committing to the LWC build, since it's a meaningfully smaller lift. 

      

    One thing to flag before you build either way: confirm whether this dashboard is embedded (Lightning App Page / Experience Cloud) or accessed directly in the Analytics Studio tab the LWC wrapper approach only works for the embedded case, since you need a page to host the wrapper component around the dashboard.

Hi everyone,

I have a requirement in a CRM Analytics (CRMA) dashboard where, when the dashboard is opened, I want to display a pop-up/modal asking the user to select a Customer Name.

The expected behavior is:

  1.  User opens the CRMA dashboard. 
  2.  A pop-up/modal appears automatically on the initial load. 
  3.  The user selects a Customer Name from a slicer/filter within the pop-up. 
  4.  Once the customer is selected, the pop-up should close automatically. 
  5.  The dashboard widgets should then display only the information related to the selected customer. 
  6.  Ideally, the user should not be able to interact with the dashboard widgets before selecting a customer. 

Is this possible using the standard CRMA dashboard functionality?

If yes, what would be the recommended approach to implement this? For example, can this be achieved using dashboard interactions, bindings, faceting, a custom Lightning Web Component, or another CRMA feature?

If anyone has implemented a similar initial-load customer selection pop-up/modal in CRMA, I would really appreciate it if you could share the approach or any examples/resources.

Thanks! 

 

#CRM Analytics

1 件の回答
  1. 8月31日 19:40

    Hi Siva, one thing up front: standard CRMA has no true modal pop-up that fires automatically on dashboard load. So you achieve this by gating the dashboard behind a selection rather than an actual modal. Two clean ways: 

     

    1. Selection page (closest to a pop-up). Make page 1 a simple Select a Customer page with just a list or dropdown widget and a heading, and put all your charts on page 2. Add a link or button widget that navigates to page 2. The user lands on the picker first, chooses a customer, then moves to the data. This gives the choose-first, cannot-touch-the-widgets-yet behavior you want. 

     

    2. Gate on a single page. Keep everything on one page but bind every data widget to the customer list selection, and build the steps so they return no rows until a customer is chosen. Add a text widget saying Please select a customer so the empty state is clear. 

     

    Gotcha to avoid: do not rely on Require Selection to leave it blank. If a query requires a selection and you set no initial selection, CRMA auto-selects the first value on open, so it will not sit empty waiting for the user. That is why the selection-page or bound-widget approach is more reliable for a true choose-first experience. 

     

    if this helps, please mark it as the Best Answer so it helps the next person, thanks 🙂

I have several dashboards based on region. I would like to combine them to be one dashboard with the ability to filter by region, object, etc. 

 

I haven't found a way to do this as of yet. I'm in analtyics studio and I'm not sure how to connect the dashboards. 

 

Help please. 

 

#CRM Analytics  #Tableau  #Dataset Recipe

1 件の回答
  1. 8月19日 14:49

    In CRM Analytics you do not actually 'connect' separate dashboards, the pattern is to build ONE dashboard and use Global Filters to slice it by region/object/etc. How you get there depends on whether your regional dashboards sit on the same dataset or different ones: 

     

    If they are all on the same dataset (the easy case): 

    Create a single new dashboard on that dataset, add the charts/widgets you want, then add Global Filters (the filter panel in the dashboard editor) on Region, Object, and any other fields. Widgets built on the same dataset facet together automatically, so one Region selection filters everything at once. That gives you the 'one global dashboard, filter by region' behaviour you are describing. 

     

    If each region is a separate dataset: 

    You first need them in one dataset, otherwise a single Region filter has nothing common to filter on. Use a Recipe (Data Prep) to UNION the regional datasets into one combined dataset, and if a 'Region' column is not already on each, add it in the recipe so every row is tagged with its region. Then build your single dashboard on that combined dataset and add the Global Filters as above. Since you tagged Dataset Recipe, this is likely your path. 

     

    A couple of pointers: 

    - Global Filters live in the dashboard's filter panel and apply to every widget bound to that dataset, pin them so they persist. 

    - If you keep widgets from more than one dataset in the same dashboard they will not auto-facet, you connect them with bindings, or cleaner, unify into one dataset via the recipe so faceting just works. 

     

    Net: do not try to link the existing dashboards, rebuild as one dashboard on a single (recipe-combined, if needed) dataset, then Global Filters give you the region/object slicing. 

     

    If this helps, please mark it as the Best Answer so it helps the next person. Thanks :)

It does not seem to be possible to take the minimum or maximum of a date using the aggregation feature of a recipe.

 

Second question. Filtered aggregates are also not possible it would appear. If I want to know the count of all activities, the count of all emails, and the count of all calls (with email and call being the two options for activity type), it doesn't appear that a recipe can do all three together. It can either do the total, or separate emails and calls by adding a column group, but not all three. (I have found a workaround by creating a transform to add the two together but that isn't the point here)

 

Am I missing something or are these really not possible? Basic features of SQL.

3 件の回答