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

analytics-kpi-definition

Use this skill to define, document, and validate KPI metrics for CRM Analytics — covering metric formula design, dimension selection, target-dataset modeling, benchmark setting, and the KPI register that must exist before any dashboard or lens is built. Trigger keywords: KPI definition CRM Analytics, analytics metric design, analytics target attainment, CRM Analytics measures vs dimensions, analytics benchmark. NOT for laying out the dashboard or lens itself — use admin/analytics-dashboard-design. NOT for scoping data sources, audiences, and drill-down paths — use admin/analytics-requirements-gathering.

インストール方法を見る

含まれるファイル(7)

  • SKILL.md13.0 KB
  • references/examples.md8.6 KB
  • references/gotchas.md9.1 KB
  • references/llm-anti-patterns.md6.4 KB
  • references/well-architected.md4.8 KB
  • scripts/check_analytics_kpi_definition.py3.4 KB
  • templates/analytics-kpi-definition-template.md2.4 KB

SKILL.md(原文)

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

Analytics KPI Definition

This skill activates when a practitioner needs to define, document, and validate KPIs for CRM Analytics before any lens or dashboard is built. It produces a KPI register — the canonical artifact that specifies metric formulas, dimension groupings, target attainment models, and benchmark values — that the dashboard builder uses as the single source of truth.


Before Starting

Gather this context before working on anything in this domain:

  • KPI definition must happen before dashboard design. Building a lens before the KPI formula is agreed upon leads to re-work when stakeholders dispute the calculation method.
  • CRM Analytics distinguishes measures from dimensions at the dataset level. A measure is a numeric field used in aggregation; a dimension is a categorical field used in grouping. This distinction is set when the dataset is configured and affects what aggregation functions are valid.
  • The most common wrong assumption: practitioners conflate KPI definition (agreeing on the formula and target) with dashboard wiring (configuring the tile type and chart). These are separate activities — KPI definition is a pre-build requirements task.
  • Target attainment in CRM Analytics is modeled by loading a separate targets dataset and joining it at query time via SAQL or recipe — it cannot be done by editing the source dataset in place.

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
"What exactly counts, what is excluded, and is it a row count or a distinct count?"A count on a dimension is a unique count, and dimensions cannot be summed (Gotcha 2)Inclusion and exclusion rules and an explicit count() or unique()Every dashboard computes the same number for the same KPI
"Which groups must appear even with no activity: territories with no wins, reps with no deals?"An inner cogroup drops unmatched groups (Gotcha 4)The population stream and a left outer join with coalesce()Zero results show as zero instead of disappearing
"At what grain are targets set, who maintains them, and in what key format?"Targets join by exact, case-sensitive keys (Gotchas 1, 3)A targets dataset schema, an owner, and the key formatAttainment never goes blank because of a spelling difference
"Does a blank value mean zero or unknown for each measure?"Null measure handling decides how blanks aggregate (Gotcha 5)A null rule per measure and an explicit population filterAverages are not dragged down by records that should not count
"Which currency and which fiscal calendar does each KPI use?"No currency conversion, and custom fiscal years must be imported (Gotcha 6)A currency rule, a converted field, and the fiscal settingFiscal-quarter KPIs agree with Salesforce reports
"How far back must the KPI trend, and is that history in the source data?"Snapshot trending has row and dataset caps (Gotcha 7)A history source per KPI and a snapshot volume estimateMulti-year trends are promised only where the platform can hold them

What proper configuration adds over "just building the lens": a signed register whose formulas say how to count, which groups to keep, how blanks behave, and which currency and calendar apply, so every dashboard built from it agrees.

Core Concepts

Measures vs Dimensions

CRM Analytics datasets have two field types that affect KPI modeling:

  • Measures — numeric fields (Amount, Quantity, Revenue). Aggregation functions (sum, avg, count, max, min) apply. Used in KPI formulas.
  • Dimensions — string/categorical fields (Stage, Owner, Region). Used in GROUP BY expressions. Cannot be summed or averaged.

A KPI formula must correctly identify which fields are measures (to aggregate) and which are dimensions (to group by). Using a dimension in a SUM() function produces a SAQL error.

KPI Target Attainment Pattern

CRM Analytics does not support inline target values in a dataset. The canonical pattern:

  1. Create a separate targets dataset with columns matching the KPI's dimension groupings (e.g., Owner, Region, Quarter) plus a Target value measure
  2. Join the targets dataset to the actuals dataset at query time using a SAQL left outer cogroup from the targets side (or a recipe join), with coalesce() for groups that have no actuals
  3. Compute attainment as actual / target * 100

Target datasets must be updated on the same cadence as the reporting period (quarterly targets loaded quarterly). The join key between actuals and targets must be an exact string match — case differences cause nulls.

Leakage and Proxy Field Risk

Einstein Discovery and CRM Analytics KPI definitions share a common pitfall: using fields that are causally downstream of the outcome (leakage) or fields that are proxies for the outcome (e.g., using Opportunity Close Date in a win-rate formula when Close Date is only populated on Closed Won/Lost records):

  • A field filled in only after the outcome is known is a leakage risk for predictive KPIs
  • For descriptive/historical KPIs, this is less of a concern but still affects filter logic

Common Patterns

Pattern: KPI Register

When to use: Before any CRM Analytics lens or dashboard is built — for every KPI stakeholders need.

How it works:

  1. For each KPI: document the metric name, plain-English definition, aggregation formula (SUM/AVG/COUNT/RATIO), dimension(s) to group by, and the dataset + field path
  2. Document target model: fixed value, external targets dataset join, or formula-derived
  3. Document benchmark: industry benchmark, historical baseline, or threshold
  4. Validate: confirm the formula fields are measures in the dataset (not dimensions)

Why not the alternative: Building lenses without a KPI register leads to multiple interpretations of the same metric, inconsistent calculation across dashboards, and rework when stakeholders reject the formula.

Pattern: Target Dataset Schema Design

When to use: When any KPI requires attainment tracking (actual vs target).

How it works:

  1. Define the granularity of targets: by Owner, by Region, by Quarter, or some combination
  2. Create a targets dataset schema with columns: all grouping dimensions + Target_Amount (or equivalent measure)
  3. Define the load schedule: targets are uploaded via CSV or External Data API on the same cadence as reporting periods
  4. Document the SAQL join key: the exact field name and format used to join actuals to targets

Decision Guidance

SituationRecommended ApproachReason
KPI is a simple sum or count from one datasetSAQL measure aggregation in lensStraightforward — no target dataset needed unless attainment tracking required
KPI requires target vs actual comparisonSeparate targets dataset + SAQL cogroupCRM Analytics cannot store targets inline in actuals dataset
KPI grouping field is a string (Region, Owner name)Use as dimension in GROUP BYString fields are dimensions and cannot be aggregated
Stakeholders use different formulas for the same metricKPI register with signed-off definition before buildLocking the formula before build prevents mid-project disputes
KPI involves multiple datasets (e.g., Opp + Account data)Recipe join before dataset publishJoin in recipe so the output dataset has all needed fields before KPI formula is applied

Recommended Workflow

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

  1. Collect all KPIs stakeholders mention — even informally named ones. Document every metric and the person requesting it.
  2. For each KPI: write a plain-English definition that specifies what counts (included criteria), what excludes (excluded criteria), the time period, and the granularity.
  3. Map each KPI to CRM Analytics dataset fields: identify which field is the measure to aggregate, which fields are dimensions for grouping, and confirm field types in the dataset configuration.
  4. Identify KPIs that require target attainment: for these, design the targets dataset schema — dimension columns matching the KPI grouping, Target measure column, join key to actuals.
  5. Document SAQL formula sketch for each KPI: sum(Measure) groupby [DimensionField] with target join pattern if applicable. Use the register format and attainment query in references/examples.md, Example 3.
  6. Get stakeholder sign-off on the KPI register before any lens or dashboard is built — record who approved each formula and target definition.
  7. Hand off the signed KPI register to the dashboard builder as the authoritative specification.

Review Checklist

Run through these before marking work in this area complete:

  • Every KPI has a plain-English definition with inclusion/exclusion criteria
  • Measure vs dimension classification confirmed for each field used in formulas
  • Target attainment model specified (fixed value / targets dataset / formula)
  • Targets dataset schema designed for all KPIs requiring attainment tracking
  • SAQL formula sketch validated against dataset field types
  • Stakeholder sign-off recorded on KPI register
  • No KPI left as "to be confirmed" before dashboard build starts

Salesforce-Specific Gotchas

The full list with sources is in references/gotchas.md. The ones that most often corrupt a KPI:

GotchaConsequence
Case-sensitive join keys (Gotcha 1)Attainment is blank for groups whose key differs only in case
Inner cogroup drops unmatched groups (Gotcha 4)Ratio KPIs lose the groups with zero numerator and look better than they are
Sparse fields and Einstein Discovery (Gotcha 8)The earlier "70% fill rate" rule is UNVERIFIED; record fill rates and check the story's field analysis

Output Artifacts

ArtifactDescription
KPI registerSigned-off table of metric name, plain-English definition, formula, dimensions, target model, and benchmark
Targets dataset schemaColumn definitions for the external targets dataset to support attainment tracking
SAQL formula sketchesPer-KPI SAQL query patterns for developer reference during lens/recipe build

Related Skills

  • admin/analytics-requirements-gathering — upstream skill: gather analytics requirements before defining KPIs
  • admin/saql-query-development — use to implement SAQL formulas from the KPI register
  • admin/marketing-reporting-requirements — companion skill for marketing-specific KPI definition

レビュー

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

同じリポジトリのスキル

概要と使いどころ

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 のスキルをすべて見る

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