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

cpq-guided-selling

Use this skill when configuring or troubleshooting the Salesforce CPQ Guided Selling wizard: Quote Process records, ProcessInput questions that filter products by field value, mapping answers to Product2 classification fields, and search type choice (Standard, Enhanced, Custom). Trigger keywords: CPQ guided selling, quote process wizard, product selection wizard, SBQQ__QuoteProcess__c, SBQQ__ProcessInput__c, guided product selection, auto select product, product search plugin. NOT for bundles, product options, or product rules — use admin/cpq-product-catalog-setup. NOT for writing a custom ProductSearchPlugin in Apex — use apex/cpq-apex-plugins.

インストール方法を見る

含まれるファイル(8)

  • SKILL.md16.8 KB
  • references/examples.md7.6 KB
  • references/gotchas.md7.6 KB
  • references/llm-anti-patterns.md9.8 KB
  • references/metadata-examples.md12.8 KB
  • references/well-architected.md7.9 KB
  • scripts/check_cpq_guided_selling.py15.0 KB
  • templates/cpq-guided-selling-template.md4.3 KB

SKILL.md(原文)

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

CPQ Guided Selling

Use this skill when configuring or troubleshooting the Salesforce CPQ Guided Selling wizard. Reps answer a structured set of questions, and CPQ filters the catalog to products that match. This skill covers Quote Process and Process Input setup, classification field mirroring, the Enhanced and Custom plugin modes, Auto Select Product behavior, and common filtering failures. It does not cover OmniStudio product selection, standard product browsing, bundle setup, or pricing rules.

Product status: the Salesforce CPQ Developer Guide (Summer '26) states that the Salesforce CPQ managed package "continues to be available for existing customers, however, there is no longer any new feature development", and recommends Revenue Cloud for new implementations. Use this skill for orgs already on CPQ.

Field-name caution: the CPQ object reference is published only on help.salesforce.com, which did not fetch for this pass. UNVERIFIED (2026-10-03): the field API names below for SBQQ__QuoteProcess__c and SBQQ__ProcessInput__c (SBQQ__GuidedProductSelection__c, SBQQ__SearchType__c, SBQQ__AutoSelectProduct__c, SBQQ__SearchField__c, SBQQ__Operator__c, SBQQ__InputType__c, SBQQ__Label__c, SBQQ__Active__c, SBQQ__Required__c, SBQQ__Order__c) and Pricebook2.SBQQ__GuidedSelling__c come from earlier versions of this skill and are not in the CPQ Developer Guide or the CPQ Plugins Guide. Confirm each in Object Manager before writing data loads or automation. The documented names are SBQQ__Quote__c.SBQQ__QuoteProcessId__c and SBQQ__Quote__c.SBQQ__Pricebook__c, and the quote process's Product Search Executor and Product Configuration Initializer fields (labels).


Before Starting

  • Confirm the CPQ managed package (SBQQ__) is installed and the Quote Process and Process Input objects exist.
  • Identify every Product2 field the wizard filters on. For custom fields, plan a field with the same API name on the Process Input object (see Core Concepts).
  • Decide whether plain guided selling is enough, or whether the product search plugin is needed: Enhanced mode (the plugin appends a WHERE clause) or Custom mode (the plugin builds the whole query).
  • Decide how the Quote Process is chosen: the org default, or set per quote (SBQQ__Quote__c.SBQQ__QuoteProcessId__c).
  • Decide whether Auto Select Product should add the single match automatically.

Questions to Ask Before Configuring

Ask these before creating a Quote Process. Each one traces to a gotcha in references/gotchas.md.

QuestionWhy it mattersWhat a good answer addsWhat proper configuration adds over just doing it
"Is this org staying on CPQ, or moving to Revenue Cloud?"The CPQ package has no new feature development (gotcha 1)A decision on how much to invest in custom plugin codeEffort spent where the platform is still developed
"Which Product2 fields do the questions filter on, and are any custom?"Custom fields need a same-name field on Process Input (gotcha 2)A field list with types, mirrored where customAnswers that actually filter instead of returning the whole catalog
"Can every answer be expressed as a simple field filter, or is extra logic needed (inventory, region, ranking)?"Extra logic means the product search plugin, in Enhanced or Custom mode (gotcha 3)The plugin mode, or a decision not to use oneNo Apex where configuration was enough, and correct Apex where it was not
"Which quote fields would plugin logic need?"Plugins see only a subset of quote fields by default; others need SOQL (gotcha 4)The quote fields the plugin must queryPlugin logic that works on the first quote
"Should a bundle be pre-configured from the answers?"The configuration initializer works only for standard product option fields (gotcha 6)Which option fields the answers setNo initializer built for fields it cannot set
"Do all possible single matches have a price book entry in every price book used?"Auto Select can fail on a missing entry (gotcha 7)A price book coverage checkAuto Select that adds a line instead of raising an error

What a proper configuration adds over "just turning on the wizard": every answer narrows the catalog as intended, plugin code exists only where configuration cannot express the rule, and reps never see an unexplained empty or unfiltered result.


Core Concepts

Quote Process and the Guided Selling Wizard

A Quote Process record (SBQQ__QuoteProcess__c) holds the wizard configuration; its Process Input records (SBQQ__ProcessInput__c) are the questions. A quote records the quote process it uses in SBQQ__QuoteProcessId__c (CPQ Developer Guide, quote model JSON). The quote process can also name a Product Search Executor (a Visualforce page that further filters guided selling results) and a Product Configuration Initializer (a Visualforce page that preselects bundle options from the answers); both are entered as c__ followed by the page name.

UNVERIFIED (2026-10-03): earlier versions of this skill said the wizard activates only when SBQQ__GuidedProductSelection__c is true, that the org default is set in CPQ Settings, and that a price book can carry its own quote process in Pricebook2.SBQQ__GuidedSelling__c. These are help-only claims; confirm the field and setting names in the org.

Process Input Questions and Field Mapping

Each Process Input defines one question: its label, order, whether it is active and required, how the rep answers, the Product2 field it filters, and the operator. The plugin guide confirms the runtime shape: the answers reach the plugin as a map whose "key is a Product2 API name and the value is the desired search value". UNVERIFIED (2026-10-03): the field-level detail of how CPQ stores each answer on the Process Input record is help-only.

Custom Classification Field Mirroring

When a question filters on a custom Product2 field (for example Deployment_Model__c), earlier versions of this skill state that a field with the identical API name and a compatible type must exist on SBQQ__ProcessInput__c, and that without it the question silently applies no filter. UNVERIFIED (2026-10-03): this mechanism is help-only. It is the first thing to check when answers return the whole catalog, and the mirror field is deployable metadata (see references/metadata-examples.md).

Standard, Enhanced, and Custom Search

ModeWhat runsGrounding
StandardCPQ's own filter from the Process Input answers, no pluginUNVERIFIED (2026-10-03): help-only
EnhancedCPQ's query plus a WHERE fragment returned by getAdditionalSuggestFilters(quote, fieldValuesMap)CPQ Plugins Guide: isSuggestCustom returning false selects Enhanced searching
CustomThe plugin's suggest(quote, fieldValuesMap) builds and runs the whole query and returns List<PricebookEntry>CPQ Plugins Guide: isSuggestCustom returning true selects Custom searching

The guided selling interface of SBQQ.ProductSearchPlugin has five methods: isInputHidden(quote, fieldName), getInputDefaultValue(quote, fieldName), isSuggestCustom(quote, fieldValuesMap), suggest(quote, fieldValuesMap), and getAdditionalSuggestFilters(quote, fieldValuesMap). CPQ calls isInputHidden and getInputDefaultValue for each input, then isSuggestCustom, then either suggest or getAdditionalSuggestFilters. Earlier versions of this skill described a search(SBQQ.ProductSearchContext ctx) method returning List<Id>; that signature is not in the guide. UNVERIFIED (2026-10-03): the claim that Enhanced mode renders multi-select questions with OR matching is help-only.

Auto Select Product

When Auto Select is on and the answers return exactly one product, CPQ adds it to the quote without showing the results list. With zero matches the wizard shows an empty result; with two or more it shows the results grid. UNVERIFIED (2026-10-03): this behavior and the field name SBQQ__AutoSelectProduct__c are help-only.


Common Patterns

Pattern: Guided Selling with Custom Classification Fields

When to use: The catalog has custom classification fields (industry, deployment model, service tier) and reps should narrow it with dropdown questions.

How it works:

  1. Create the custom fields on Product2.
  2. Create same-name, same-type fields on SBQQ__ProcessInput__c (deployable, see references/metadata-examples.md).
  3. Populate the classification fields on every product that should appear.
  4. Create the Quote Process for guided selling.
  5. Create one Process Input per question, pointing at the Product2 field API name.
  6. Make the Quote Process the default or assign it to the quotes that need it.
  7. Test from a quote with Add Products, answering every question.

Pattern: Enhanced Mode for a Business Rule the Questions Cannot Express

When to use: Reps answer the questions, but the results must also respect a rule they do not control, such as "urgent shipments only show products with inventory above 3".

How it works: Implement SBQQ.ProductSearchPlugin with isSuggestCustom returning false, and return an extra WHERE fragment from getAdditionalSuggestFilters (the guide's own example returns AND Product2.Inventory_Level__c > 3 when the "Urgent Shipment" input is "Yes"). Register the class on the Plugins tab of the CPQ package settings. UNVERIFIED (2026-10-03): the guide describes that tab for the quote calculator and recommended products plugins but does not name the product search plugin field. The full class, test, and manifest are in references/metadata-examples.md.


Decision Guidance

SituationRecommended ApproachReason
Filter on standard Product2 fieldsPoint the question at the standard field API nameNo mirror field needed
Filter on a custom Product2 fieldMirror field with the same API name on Process InputRequired for the answer to filter (help-only mechanism)
Extra rule the rep does not controlPlugin in Enhanced mode (getAdditionalSuggestFilters)CPQ keeps its query; the plugin appends a WHERE fragment
Results need external data or rankingPlugin in Custom mode (suggest)The plugin owns the whole query and returns price book entries
Results need a post-filter the rep cannot overrideProduct Search Executor on the quote processA Visualforce page that filters guided selling results
Answers should preselect bundle optionsProduct Configuration InitializerWorks only for standard product option fields
New implementation, no CPQ yetEvaluate Revenue CloudThe CPQ package has no new feature development

Recommended Workflow

  1. Confirm the platform and fields. CPQ installed and staying in use; every filter field listed; custom fields flagged for mirroring; every CPQ field API name confirmed in Object Manager.
  2. Deploy the mirror fields. Create the same-name fields on SBQQ__ProcessInput__c from metadata, with field-level security for the users who run the wizard.
  3. Populate classification data. Every product that should appear has values on the filter fields; null values never match an equals filter.
  4. Create the Quote Process and Process Inputs. One input per question, pointing at Product2 field API names.
  5. Add plugin logic only if needed. Enhanced mode for appended filters, Custom mode for full control. Use bind variables, query any quote fields the plugin needs, and register the class on the Plugins tab of the CPQ package settings.
  6. Activate and test. Make the Quote Process the default or assign it, then test every question with matching, non-matching, and blank answers, and test Auto Select against every price book.

Review Checklist

  • CPQ field API names confirmed in Object Manager (help-only names flagged in this skill)
  • Every custom Product2 filter field has a same-name field on SBQQ__ProcessInput__c, with field-level security granted
  • Filter fields populated on every product that should appear
  • Plugin used only where questions cannot express the rule; mode (Enhanced or Custom) documented
  • Plugin SOQL uses bind variables, not string concatenation
  • Quote fields the plugin needs are queried explicitly
  • Quote Process activated (default or assigned)
  • Auto Select tested against every price book in use
  • End-to-end wizard test completed in a sandbox

Salesforce-Specific Gotchas

The deep versions, with sources, live in references/gotchas.md.

#GotchaOne-line consequence
1CPQ package has no new feature developmentLarge new investments may be stranded
2Missing mirror field returns the whole catalogNo error, just unfiltered results
3Enhanced and Custom are plugin modes chosen by isSuggestCustomWrong method gets ignored
4Plugins see only some quote fieldsLogic fails on null quote values
5The guide's sample plugin concatenates strings into SOQLCopying it invites SOQL injection
6Initializer sets only standard product option fieldsCustom option fields stay unset
7Auto Select needs a price book entry for the single matchRep sees an error instead of a line
8Null classification values never match equals filtersValid products disappear

Output Artifacts

ArtifactDescription
Quote Process recordGuided selling configuration, with executor and initializer if used
Process Input recordsOne per question; label, field, operator, order, required
Mirror custom fields on Process InputDeployable CustomField metadata matching Product2 API names
Product search plugin (if needed)Apex class implementing SBQQ.ProductSearchPlugin, with test
Guided selling configuration checklistSetup decisions and test results

Related Skills

  • admin/cpq-product-catalog-setup: Product2 catalog and bundles before guided selling
  • admin/products-and-pricebooks: standard Product2 and price book setup that guided selling filters
  • admin/cpq-pricing-rules: price rules and discount schedules applied after selection
  • admin/quote-to-cash-requirements: whether guided selling is the right selection mechanism
  • apex/cpq-apex-plugins: deeper plugin development beyond the guided selling interface

レビュー

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

同じリポジトリのスキル

概要と使いどころ

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

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