Salesforce Guide9 min read
How to Turn Salesforce Cases and Opportunity Notes into Product Insights
Last updated: ยท By Matt Teixeira, Founder and CEO
On this page
To analyze customer feedback in Salesforce for product insights, export the free text from Cases, case comments, opportunity notes, and closed-lost comments, and group it into recurring problems. Tag each problem with its Account ID and Opportunity ID, then rank by how many accounts raise it and how much ARR and open pipeline sit behind it, not by how often it comes up. Salesforce reports only count what someone already labeled. Finding what nobody labeled takes an export plus an AI model, or a feedback tool.
Key Takeaways
- Cases show what hurts customers, and opportunities show what not fixing it costs. Join them on the Account ID.
- Salesforce's AI labels and summarizes records but doesn't discover new themes. Case Classification picks from values you already wrote (Trailhead).
- Lightning notes are the hardest data to export: ContentNote records with a base64-encoded body (Salesforce Developers).
- Report ARR at risk, open pipeline, and verified closed-lost revenue as three separate numbers.
- A closed-lost reason is a lead, not evidence, until the buyer's own words confirm it.
- Deck's Salesforce integration adds read-only Account and Contact context on the Business plan. It doesn't import Case or note text.
What Customer Feedback Lives in Salesforce?
Salesforce feedback sits in five places across service and sales. Cases carry the volume; opportunities carry the dollars.
| Where it lives | What product teams find there | How to get it out |
|---|---|---|
| Cases | Bugs, confusion, and workarounds in Subject and Description, plus Case Reason and Type labels | Cases report, exported to CSV |
| Case comments and emails | The full back-and-forth, in the customer's own words | Data Loader on CaseComment and EmailMessage |
| Opportunity notes | Objections, demo reactions, and "they'd sign if we had X" | ContentDocumentLink by opportunity, then ContentNote |
| Closed-lost fields and Competitors | The gap that killed the deal, usually a custom picklist plus a comment, and Strengths and Weaknesses text for each rival (source) | Opportunities report |
| Call recordings | Product, pricing, and competitor mentions from sales calls | Conversation Intelligence reports, or your call recorder |
Pick your first slice by where growth is stuck. For churn, pull Cases from accounts renewing in the next two quarters. For win rate, pull the last two quarters of closed-lost and closed-won deals and look for what winners had that losers lacked.
What Can Salesforce Do with Feedback on Its Own?
Salesforce counts labeled records well, and its AI labels or summarizes one record at a time. Short of a custom build, nothing native groups free text into themes you haven't defined.
- Reports: Count Cases by Case Reason and sum closed-lost Amount by loss reason. Fast, but only for feedback someone already labeled.
- Case Classification and work summaries: Classification predicts values "like priority, reason, or type" from a case's text, and work summaries draft "a summary, issue, and resolution" from a chat (Trailhead). Neither creates a new category.
- Conversation Intelligence: Flags competitor, product, and custom keywords you set on sales calls, with reports such as Opportunities with Competitor Keywords (Trailhead).
- Data 360 and Agentforce: Data 360 indexes case notes and transcripts so agents can ground answers in them (Trailhead). A theme report on top is yours to build.
Split your catch-all Case Reason. A value like "Feature Request" becomes a junk drawer for every idea customers send, which is exactly the list product needs broken apart. Rule of thumb: once one value holds more than about 10% of cases, read 50 of them and split it with a feedback taxonomy.
How Do You Export Salesforce Cases and Opportunity Notes?
Use reports for fields, and Data Loader or the Salesforce CLI for related objects. Comments, emails, and Lightning notes don't come out in a report export.
- Cases: Report on Case ID, Subject, Description, Case Reason, Created Date, Account ID, and Contact Email, minus password resets and spam. Add CaseComment and EmailMessage bodies only if most Descriptions are thin.
- Opportunities: Report on Opportunity ID, Account ID, Stage, Amount, Close Date, loss-reason fields, and Description. Include closed-won deals for comparison.
- Notes: Query ContentDocumentLink by LinkedEntityId with your opportunity IDs, since that object must be filtered by an ID (Salesforce Developers). Then pull the matching ContentNote records and decode the body.
- Clean the file: One row per piece of feedback, with text, date, source, contact email, Account ID, and Opportunity ID. Drop signatures, auto-replies, and logistics like "sent the order form."
One quarter of Cases and two quarters of opportunities is enough for a first pass. Budget half a day with an admin, most of it on notes.
How Do You Link Salesforce Opportunity Revenue to Feature Requests?
Give every request an Account ID and, when it came from a deal, an Opportunity ID. Then roll revenue up per request, counting each account once. Two Salesforce patterns make this repeatable.
- A Product Gap object: A custom object with lookups to Opportunity and Account and a single-select Product Area picklist. Reps log one record per gap; a report sums Amount by area. Skip multi-select picklists, which reports show as one semicolon-separated value and can't cleanly group by.
- Account roll-up fields: A roll-up summary field on the Account can sum its Opportunities, as Savio's guide shows (Savio). Build Open Pipeline or Lost to Product Gap, and any tool that reads Account fields can use them.
Keep three numbers apart; each answers a different question.
| Number | What it tells you | How to count it |
|---|---|---|
| ARR at risk | What the paying customers who raised it are worth | ARR on the Account, each account once |
| Open pipeline | Deals that say they need it to sign | Amount on open deals past qualification; earlier amounts are often placeholders |
| Closed-lost revenue | Deals that cited it when they died | Amount on lost deals where the buyer's own words confirm it |
Never add them. ARR is a fact, pipeline is a forecast, and closed-lost revenue is a story about the past. Don't total a column across themes either: a deal citing three gaps counts in full under each.
Verify every closed-lost reason. "Missing feature" is the least awkward reason a rep can pick. Before a lost deal counts, find the buyer saying it in a note, email, or call.
A worked example (illustrative numbers). Two themes top a team's first pass.
| Theme | ARR at risk | Open pipeline | Closed-lost, by picklist | Closed-lost, verified |
|---|---|---|---|---|
| Audit log export | $410,000 across 6 accounts, 2 renewing within 90 days | $180,000 across 3 deals | $95,000 across 2 deals | $95,000; 2 of 2 confirmed |
| Custom report builder | $60,000 across 2 accounts | $40,000 across 1 deal | $520,000 across 9 deals | $150,000; 3 of 9 confirmed |
By the picklist, the report builder looks five times bigger. The notes show only 3 of those 9 buyers asked for it. Audit log export is the stronger bet: three times the paying accounts, two renewals inside 90 days, and evidence you can name.
To compare tools that total revenue per request, see the best tools to prioritize feature requests by revenue. For why raw request counts mislead, see why feature voting fails.
How Does the Deck Salesforce Integration Work?
Deck uses Salesforce as account context, not as a feedback source. Deck turns support tickets, sales calls, interviews, surveys, and Slack into Themes and a ranked Opportunity Backlog; Salesforce tells it which account said what, and what that account is worth.
What it syncs (Deck Salesforce docs):
- Access: Read-only. Deck never writes to Salesforce and stores only customer and account IDs.
- Fields: The Account and Contact fields you choose, such as ARR, Industry, or Customer Tier. You can map a custom field like
arr__cto one Deck property called ARR. - Refresh: Deck reads the selected fields from Salesforce live when you filter, so there's no sync schedule to wait on.
- Matching: Feedback links to its Salesforce record by email or platform ID, including Salesforce contact IDs, and its insights inherit your fields (Deck Contacts docs).
How to connect it:
- Go to Settings โ Integrations โ Salesforce and authorize Deck with OAuth.
- Select your Account and Contact fields, including any roll-up fields you built for pipeline.
- Filter Themes and insights by those fields, or save a segment with a CRM field rule (Deck segment docs), as the define segments playbook shows.
Limitations:
- Plan: The CRM integration needs Business, at $249 a month or $199 a month billed annually.
- No Case or note import: Upload them as a CS Ticket or Feedback CSV of up to 10 MB, with the requester email mapped (Deck CSV import docs). At Deck's planning estimate of about 3 credits per row, 1,500 Cases use roughly 4,500 of Business's 7,500 monthly credits. If support runs in Zendesk or Intercom, or calls in Gong, connect those natively.
- Filters, not dollar totals: Deck filters Themes by Account and Contact fields only, not Opportunity fields, and doesn't sum ARR or pipeline per Theme. Roll opportunity amounts up to an Account field to filter by them, then total the dollars from your export.
Which Other Tools Work with Salesforce Feedback?
Choose by who does the work. If reps will log requests in Salesforce, pick a tool with a widget on the record. If requests are buried in text nobody tags, pick one that reads the text.
| Tool | What it does with Salesforce | Plan needed (USD) |
|---|---|---|
| Productboard | Imports opportunities as notes, with an Aggregated Opportunity Value for prioritization | Enterprise (source) |
| Enterpret | Reads free text from Cases, Opportunities, and custom objects; ties capabilities to won and lost deals | Custom; AWS Marketplace lists $120,000 per 12 months for up to 300,000 records (source, pricing) |
| Savio | Syncs Contacts and Accounts; logs feedback from a Chrome extension or a closed-lost Flow | Business, $249 a month paid annually; needs Salesforce API access (source, pricing) |
| Canny | Widget on Salesforce records; posts sort by opportunity value, which passes only from Opportunity pages | Business, custom pricing; Salesforce Enterprise required (source, pricing) |
| Deck | Read-only Account and Contact context for feedback from other sources; Themes filtered by those fields | Business, $249 a month or $199 a month billed annually |
Productboard, Savio, and Canny are only as good as your reps' logging. Enterpret reads Salesforce text directly, at enterprise contract sizes. Deck fits a small team whose evidence lives in support, calls, and Slack; start on the Free plan and move to Business when you connect Salesforce.
Frequently Asked Questions
Sources
- Trailhead: Deliver Smarter Service with Artificial Intelligence
- Trailhead: Set Up Conversation Intelligence
- Trailhead: Process Content for Use with AI
- Salesforce Developers: ContentNote
- Salesforce Developers: ContentDocumentLink
- Salesforce Developers: OpportunityCompetitor
- Savio: Track Salesforce Expansion Revenue for Feature Requests
- Savio: Salesforce Integration Setup
- Savio Pricing
- Productboard Support: Import Salesforce Opportunities as Notes
- Enterpret: Salesforce Integration
- AWS Marketplace: Enterpret
- Canny Help: Salesforce Integration
- Canny Pricing
- Deck Docs: Salesforce
- Deck Docs: Contacts
- Deck Docs: CSV Import
- Deck Docs: Define Segments Workflow
- Deck Pricing
Sources checked November 2, 2026.