本文へ移動
cccskills
無料GitHub で公開

crm-analytics-app-creation

Use when creating or configuring a CRM Analytics (Einstein Analytics) app — including app containers, lenses, datasets, data source connections, app sharing, and the row-level security that gates whether users see any data. NOT for choosing Reports vs CRM Analytics vs Tableau — use admin/einstein-analytics-basics. NOT for security predicate syntax, sharing inheritance or Analytics license assignment — use admin/analytics-permission-and-sharing.

インストール方法を見る

含まれるファイル(7)

  • SKILL.md14.7 KB
  • references/examples.md8.4 KB
  • references/gotchas.md9.8 KB
  • references/llm-anti-patterns.md6.2 KB
  • references/well-architected.md5.2 KB
  • scripts/check_crm_analytics_app_creation.py14.6 KB
  • templates/crm-analytics-app-creation-template.md1.8 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

CRM Analytics App Creation

This skill activates when a practitioner needs to create a CRM Analytics (formerly Einstein Analytics) application — setting up the app container, connecting data sources, creating lenses and dashboards, and configuring app sharing and row-level security. It covers the foundational creation workflow and the critical security gap between permission set assignment and actual data access.


Before Starting

Gather this context before working on anything in this domain:

  • License is required: CRM Analytics features require a CRM Analytics Growth, Plus, or Einstein Analytics license assigned to the user. Confirm the license is provisioned before attempting to access Analytics Studio.
  • Most common wrong assumption: Assigning a CRM Analytics permission set is not sufficient to give users access to data. Users also need explicit Viewer, Editor, or Manager access on the specific app AND row-level security must be configured independently of Salesforce object-level sharing (OWD, role hierarchy, sharing rules). All three layers must be configured.
  • Data is not queried live: CRM Analytics datasets are materialized copies of Salesforce data. Data must be refreshed via a scheduled dataflow or recipe run. Practitioners expecting real-time data will see stale results until the next scheduled run.

Questions to Ask Before Configuring

Each question traces to a gotcha in references/gotchas.md.

QuestionWhy it mattersWhat a good answer addsWhat proper configuration adds over just doing it
"Which groups need to open the app, and which need to edit or manage it?"A permission set opens Analytics Studio; app sharing opens the app (Gotcha 1)A sharing table: group, access level (View, EditAllContents, Manage)Users see the dashboards on day one, and only a few can change them
"Which rows may each audience see, and does Salesforce sharing already express it?"No row-level security shows every row; inheritance is slower and needs a backup predicate (Gotchas 5, 8)A predicate or inheritance-plus-backup per datasetThe app never shows more than Salesforce would
"How fresh must each dataset be, and how many other recipes already run?"Runs share a 60-per-day budget and low concurrency (Gotcha 2)A refresh cadence per dataset inside the org's run budgetSchedules never block each other or lock out data sync
"Must widgets on different datasets filter each other?"Faceting crosses datasets only through connected data sources or bindings (Gotcha 3)The shared fields to link, or a binding designClick-to-filter works across the whole dashboard
"Will this start from a template, and how far will it be extended?"Sales and Service Analytics templates cap custom objects at 10 by contract (Gotcha 7)A template or blank-app decision with the extension planThe app does not hit a contractual wall mid-project
"How will the app move between orgs?"Hand-edited .wdash files fail, datasets deploy without rows, and recipe wildcards miss dataflows (Gotcha 6)A retrieve-and-deploy manifest and a post-deploy run listPromotion is repeatable and the target app has data before users arrive

What proper configuration adds over "just creating an app": access at three layers (permission set, app share, row-level security) that match the audience, refresh schedules that fit the org's budget, and a deployment path that carries the app intact.

Core Concepts

App Structure: Apps, Lenses, and Dashboards

A CRM Analytics app is a named container created in Analytics Studio. It holds:

  • Datasets: Materialized tabular data structures loaded from Salesforce objects, CSV files, or external connectors. Datasets are versioned — lenses and dashboards query a specific dataset version.
  • Lenses: A saved single-dataset exploration. A lens is a query with groupings, measures, and chart type selected. Lenses are used as the building blocks of dashboard steps.
  • Dashboards: Multi-lens views that assemble multiple lenses/steps with filters, faceting, and cross-widget interactions. Dashboards support user-controlled filtering and are the primary end-user interface.

Lenses query exactly one dataset. Dashboards can reference steps from multiple datasets. Faceting filters steps on the same dataset by default; across datasets it needs connected data sources (dataSourceLinks) or bindings. (Corrected: the earlier text said faceting only works within one dataset.)

Data Ingestion: Dataflows and Recipes

Data flows into CRM Analytics datasets through:

  • Dataflows: JSON-defined ETL pipelines. More powerful but more complex. The primary mechanism for joining multiple Salesforce objects into a single dataset.
  • Recipes (Data Prep): Visual node-based transformation canvas. Easier for admins; supports join, filter, bucket, and aggregate operations. The recommended starting point for most admin-authored datasets.

Both require Data Sync (connected objects) to replicate Salesforce object data into the CRM Analytics staging layer first. Connected objects "can't be visualized directly, but are used like a cache" (REST Guide), so they must feed a dataflow or recipe first. UNVERIFIED (2026-10-03): the earlier statement that connected objects do not count against dataset row limits was not confirmed.

Three-Layer Security Architecture

CRM Analytics security is independent of Salesforce object-level security and has three distinct layers:

  1. Permission Set / License: The user must have a CRM Analytics permission set assigned (e.g., CRM Analytics Plus User).
  2. App Access: The user must have Viewer, Editor, or Manager access on the specific app. Assigned in Analytics Studio > App > Share.
  3. Row-Level Security: If the dataset contains data the user should not see all of, a security predicate (SAQL filter string) or sharing inheritance must be configured on the dataset.

None of these layers inherit from Salesforce OWD or role hierarchy automatically. All three must be explicitly configured.


Common Patterns

Creating a Sales Pipeline Dashboard

When to use: Building a pipeline visibility dashboard for sales managers using Opportunity, Account, and User data from Salesforce.

How it works:

  1. In Analytics Studio, select Create > App > Blank App. Name the app and save.
  2. Enable Data Sync for Opportunity, Account, and User objects (Data Manager > Connected Objects).
  3. Create a recipe (Data Prep) that loads the Opportunity connected object, joins Account on AccountId, and outputs to a registered dataset named "SalesPipeline."
  4. Schedule the recipe to run daily after data sync.
  5. Create a lens: open the SalesPipeline dataset, group by StageName, measure SUM(Amount), select bar chart, save as a lens.
  6. Create a dashboard: add a step linked to the lens, add a date filter widget, configure faceting for the StageName chart, save.
  7. Configure sharing: App > Share, add the sales manager group as Viewer.

Why not standard reports: Standard Salesforce reports cannot perform multi-source joins or the kind of cross-object aggregations CRM Analytics datasets support at millions of records.

Template App Creation

When to use: Creating a standardized app for a common use case (Sales Cloud, Service Cloud) rather than building from scratch.

How it works:

  1. In Analytics Studio, select Create > App > Use a Template.
  2. Choose the appropriate template (e.g., Sales Analytics, Service Analytics).
  3. Walk through the configuration wizard: select Salesforce objects, configure field mapping, set refresh schedule.
  4. Template apps auto-create connected objects, recipes/dataflows, datasets, and pre-built dashboards.
  5. After creation, customize dashboards and configure app sharing.

Template apps reduce initial setup time significantly but may include unused assets. Prune unused datasets and dashboards to reduce dataflow runtime and storage consumption.


Decision Guidance

SituationRecommended ApproachReason
First CRM Analytics app for a teamTemplate App (if available for use case)Pre-built dataflows, datasets, and dashboards reduce setup time
Custom multi-object datasetData Prep Recipe (admin) or Dataflow (developer)Recipe is admin-friendly; Dataflow handles complex joins
Users see app but no dataCheck app sharing + row-level securityPermission set alone does not grant row access
Real-time data requirementNot natively supported — use Direct Data for specific casesDatasets refresh on schedule, not on query
Data restricted by userAdd security predicate to datasetWithout predicate, Viewers see all dataset rows regardless of Salesforce sharing
Cross-dataset dashboard filteringConnected data sources for faceting on a shared field; bindings otherwiseDefault faceting stays within one dataset (Gotcha 3)

Recommended Workflow

Step-by-step instructions for an AI agent or practitioner working on this task:

  1. Verify license and permission — Confirm the admin user has CRM Analytics Plus User or equivalent permission set. Navigate to Analytics Studio to confirm access. If inaccessible, the license may not be provisioned.
  2. Create the app container — In Analytics Studio, select Create > App. Choose Blank App for custom builds or Use a Template for standard use cases. Assign an app name and save.
  3. Enable Data Sync for required objects — In Analytics Studio > Data Manager > Connected Objects, enable sync for each Salesforce object needed. Schedule sync to run before the dataflow/recipe.
  4. Build the dataset via recipe or dataflow — Create a Data Prep Recipe or Dataflow that loads connected objects, applies joins and transformations, and outputs to a registered dataset. Schedule to run after each data sync.
  5. Create a lens — Open the dataset, select groupings and measures, apply a chart type, and save as a lens within the app.
  6. Build the dashboard: Create a new dashboard in the app. Add steps referencing lenses or write inline SAQL. Add filter widgets and configure faceting for same-dataset interactions. Use connected data sources or bindings for cross-dataset filtering.
  7. Configure app sharing and row-level security, then make it deployable: In App Settings > Share, assign Viewer/Editor/Manager to target users or groups. Separately, configure a security predicate on the dataset if users should see only a restricted subset of rows. Retrieve the app's metadata with the manifest in references/examples.md, Example 3.

Review Checklist

Run through these before marking work in this area complete:

  • CRM Analytics license confirmed for all target users
  • Permission set (CRM Analytics Plus User or equivalent) assigned to target users
  • App sharing configured: target users have Viewer or higher access on the app
  • Dataset created and scheduled to refresh on appropriate cadence
  • Row-level security predicate or sharing inheritance configured if users should see restricted data
  • Dashboard filters and faceting tested with a non-admin test user
  • Connected objects not referenced directly in dashboards (only registered datasets)

Salesforce-Specific Gotchas

The full list with sources is in references/gotchas.md. The ones that most often leave a new app empty:

GotchaConsequence
Permission set is not app access (Gotcha 1)Users open Analytics Studio but see no data until the app is shared
Connected objects are a cache (Gotcha 4)They feed recipes; lenses and dashboards need a registered dataset
Cross-dataset faceting needs connected data sources or bindings (Gotcha 3)Click-to-filter silently stops at the dataset boundary

Output Artifacts

ArtifactDescription
CRM Analytics appNamed container with Viewer/Editor/Manager sharing configuration
DatasetMaterialized data from Salesforce objects, scheduled for refresh
LensSingle-dataset exploration saved as a reusable component
DashboardMulti-lens view with filters, faceting, and user interactions
Row-level security predicateSAQL filter string limiting which rows each user sees

Related Skills

  • analytics-dashboard-design — Deep guidance on dashboard bindings, faceting, and chart configuration
  • analytics-permission-and-sharing — In-depth row-level security predicate design and sharing inheritance

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Use this skill when writing test-first, behavior-driven acceptance criteria in Given/When/Then format for a Salesforce user story. Covers happy path, edge cases, negative paths, permission boundaries, and data-state preconditions so the AC block can drive UAT scripts and Apex test design downstream. Trigger keywords: given when then, gherkin, behavior driven AC, test first acceptance criteria, scenario outline, BDD acceptance criteria. NOT for the user-story format itself (use admin/user-story-writing-for-salesforce). NOT for UAT script writing (use admin/uat-test-case-design). NOT for Apex test method generation (use agents/test-class-generator). NOT for high-level UAT planning (use admin/uat-and-acceptance-criteria). More triggers: acceptance criteria record, ac_id, req_id on a criterion, artefact under test, negative case for a rule-type requirement, no-match fall-through criterion, oracle for a Then clause, test type apex flow manual, criteria linter, check_ac_format.py, --manifest-dir.

日本語の概要は準備中です。原文の説明を表示しています。

PranavNagrecha/AwesomeSalesforceSkills192026年10月4日 更新

Task and Event objects: polymorphic WhatId/WhoId, Activity object model, ActivityHistory vs OpenActivity, activity timeline customization, bulk task creation, Einstein Activity Capture boundaries. NOT for turning on EAC or calendar sync — use admin/einstein-activity-capture-setup. NOT for Email-to-Case — use admin/case-management-setup. Covers ActivitiesSettings metadata, enableActivities, shared Task/Event custom fields and FLS, TaskStatus value sets, Shared Activities and TaskRelation/EventRelation, recurring and child activities, and partial-success bulk DML on Task.

日本語の概要は準備中です。原文の説明を表示しています。

PranavNagrecha/AwesomeSalesforceSkills192026年10月4日 更新

Design Invocable Apex actions that return deterministic, agent-friendly errors instead of surfacing raw exceptions to the LLM. NOT for authoring the action itself — @InvocableMethod schema, labels, security context — use agentforce/custom-agent-actions-apex. NOT for the Apex tests that force each error branch — use agentforce/agent-action-unit-tests.

日本語の概要は準備中です。原文の説明を表示しています。

PranavNagrecha/AwesomeSalesforceSkills192026年10月4日 更新

Use when designing how an Agentforce agent extracts structured input parameters (slots) from a user's natural-language utterance to invoke an action. Triggers: 'agent extract date from user', 'agent action argument extraction', 'agentforce slot filling', 'agent invocable input mapping', 'agent fails to fill required parameter'. NOT for action authoring (use agentforce/agent-actions) or for prompt-template variable binding (use agentforce/prompt-builder-templates).

日本語の概要は準備中です。原文の説明を表示しています。

PranavNagrecha/AwesomeSalesforceSkills192026年10月4日 更新

Apex test patterns for @InvocableMethod agent actions: per-reason-code branch coverage, bulk safety, callout mocking, deterministic assertions. NOT for testing whether the agent routes to the right topic or answers well — use agentforce/agent-testing-and-evaluation. NOT for designing the error envelope the tests assert on — use agentforce/agent-action-error-handling.

日本語の概要は準備中です。原文の説明を表示しています。

PranavNagrecha/AwesomeSalesforceSkills192026年10月4日 更新

Designing or reviewing Agentforce actions: Flow actions, Apex invocable actions, prompt-template actions, action naming, input and output contracts, confirmation requirements, and safe error behavior. Triggers: 'agent actions', 'build an agent that can look up an order', 'make the agent able to check order status', 'give the agent a capability', 'agent that can retrieve a record', 'flow action for agent', 'agent invocable action', 'action schema design'. NOT for writing the Apex class itself — use agentforce/custom-agent-actions-apex. NOT for the reason_code error envelope that stops an agent retry loop — use agentforce/agent-action-error-handling.

日本語の概要は準備中です。原文の説明を表示しています。

PranavNagrecha/AwesomeSalesforceSkills192026年10月4日 更新

PranavNagrecha のスキルをすべて見る

このスキルの問題を報告する