Build a CRM Dashboard from Spreadsheet Export
Turn CRM exports into live APIs and generate a working dashboard with customer overview, deal pipeline, and activity feed — using Cursor or Claude Code.
CRM Export
- customers.csv
- deals.csv
- activities.csv
- owners.csv
- notes.csv
API Generated
/v1/apis/customers/v1/apis/deals+ activities, owners, notes
Dashboard
Customer overview, deal pipeline, revenue metrics, and activity feed — powered by live APIs.
Why this matters
- Most CRM data already exists in spreadsheets
- Dashboards need APIs, not CSV files
- AI coding tools can build the UI in minutes
Step 1
See the End Result
Before exporting CSV files, picture the CRM dashboard you are building. Each section maps to one API Butler endpoint — customer table, pipeline board, revenue cards, and activity feed.
- Customer overview with search and industry filters
- Deal pipeline board with stage columns
- Revenue metrics aggregated from deal values
- Recent activity timeline per account
- Customer detail view with notes
- GET /v1/apis/customersCustomer Table
- GET /v1/apis/dealsDeal Pipeline
- GET /v1/apis/dealsRevenue Metrics
- GET /v1/apis/activitiesActivity Feed
- GET /v1/apis/notesCustomer Detail View
Step 2
Design Your Datasets
Create realistic CRM datasets. Use shared IDs — customers.csv is the hub. Deals, activities, and notes join through customer_id; owners link via deals.owner.
Central CRM table — deals, activities, and notes join through customer_id. Owners link via deals.owner.
customers.csv
Core CRM account records — the hub table every other dataset joins to.
idcompany_namecontact_nameemailindustrycreated_at
customers.csv
Core CRM account records — the hub table every other dataset joins to.
id,company_name,contact_name,email,industry,created_at
1,Acme Corp,Sarah Chen,[email protected],saas,2024-01-10
2,Northwind Labs,James Park,[email protected],saas,2024-02-14
3,Blue Ridge Co,Emily Walsh,[email protected],manufacturing,2024-03-22
4,Vertex Systems,Marcus Lee,[email protected],saas,2024-04-05
5,Coastal Analytics,Anna Rivera,[email protected],fintech,2024-05-18
deals.csv
Sales opportunities linked to customers — powers pipeline and revenue metrics.
idcustomer_idtitlevaluestageowner
deals.csv
Sales opportunities linked to customers — powers pipeline and revenue metrics.
id,customer_id,title,value,stage,owner
1,1,Enterprise Renewal,48000,proposal,sarah
2,2,Platform Expansion,125000,negotiation,james
3,3,Starter Upsell,8500,qualified,emily
4,4,Annual Contract,24000,closed_won,marcus
5,5,Analytics Add-on,12000,lead,anna
6,1,Support Package,6000,closed_won,sarah
activities.csv
Calls, emails, and meetings for the activity feed.
idcustomer_idtypedescriptioncreated_at
activities.csv
Calls, emails, and meetings for the activity feed.
id,customer_id,type,description,created_at
1,1,call,Discovery call with Sarah Chen,2026-06-10T10:00:00Z
2,2,email,Sent proposal for Platform Expansion,2026-06-09T14:30:00Z
3,4,meeting,Contract review with Marcus Lee,2026-06-08T16:00:00Z
4,5,note,Follow-up on Analytics Add-on interest,2026-06-07T11:15:00Z
5,1,email,Renewal terms sent,2026-06-06T09:45:00Z
owners.csv
Sales reps and account owners referenced by deals.owner.
idnameemailteam
owners.csv
Sales reps and account owners referenced by deals.owner.
id,name,email,team
1,Sarah Chen,[email protected],enterprise
2,James Park,[email protected],enterprise
3,Emily Walsh,[email protected],smb
4,Marcus Lee,[email protected],mid-market
5,Anna Rivera,[email protected],smb
notes.csv
Account notes for customer detail views.
idcustomer_idcontentauthorcreated_at
notes.csv
Account notes for customer detail views.
id,customer_id,content,author,created_at
1,1,Interested in annual billing discount,sarah,2026-06-01T09:00:00Z
2,2,CTO wants API integration details,james,2026-05-28T14:00:00Z
3,4,Renewed for 2 years — reference account,marcus,2026-05-20T11:30:00Z
4,5,Evaluating competitor pricing,anna,2026-06-05T16:00:00Z
Step 3
Publish Your APIs
Upload CRM exports to API Butler. Each CSV becomes a hosted GET endpoint with filtering, pagination, and JSON responses — ready for your dashboard.
- Export
CRM Export
Export contacts, deals, and activities from HubSpot, Salesforce, or your spreadsheet.
- 2Upload Current
CSV Upload
Upload each CRM dataset to API Butler — customers, deals, activities, owners, notes.
- 3Generate
API Generated
Each CSV becomes a hosted GET endpoint with filtering and pagination.
- 4Connect
Endpoints Available
Copy URLs and wire them into Cursor or Claude Code.
CRM Export
- customers.csv
- deals.csv
- activities.csv
- owners.csv
- notes.csv
API Generated
/v1/apis/customers/v1/apis/deals+ activities, owners, notes
Dashboard
Customer overview, deal pipeline, revenue metrics, and activity feed — powered by live APIs.
Customer records with industry filtering
Pipeline deals with stage, value, and owner
Calls, emails, meetings per customer
Sales reps and team assignments
Account notes for detail views
# List customers with pagination
curl "https://api.getapibutler.com/v1/apis/customers?limit=25"
# Filter by industry
curl "https://api.getapibutler.com/v1/apis/customers?filter[industry]=saas"
# Pipeline deals in proposal stage
curl "https://api.getapibutler.com/v1/apis/deals?filter[stage]=proposal"
# Deals owned by Sarah
curl "https://api.getapibutler.com/v1/apis/deals?filter[owner]=sarah"
Sample response — GET /deals?filter[stage]=proposal
{
"data": [
{
"id": 1,
"customer_id": 1,
"title": "Enterprise Renewal",
"value": 48000,
"stage": "proposal",
"owner": "sarah"
},
{
"id": 2,
"customer_id": 2,
"title": "Platform Expansion",
"value": 125000,
"stage": "negotiation",
"owner": "james"
}
],
"meta": {
"limit": 25,
"offset": 0,
"count": 2,
"total": 24
}
}
Step 4
Map APIs to the Dashboard
Assign each dashboard section to the endpoint that owns its data. Revenue metrics aggregate from the deals API — same endpoint as the pipeline board, filtered and summed differently.
- GET /v1/apis/customersCustomer Table
- GET /v1/apis/dealsDeal Pipeline
- GET /v1/apis/dealsRevenue Metrics
- GET /v1/apis/activitiesActivity Feed
- GET /v1/apis/notesCustomer Detail View
Step 5
Wire Up Frontend & AI
Use Cursor and Claude Code to generate the CRM dashboard. Paste your endpoint URLs into the prompts below to build a customer table, pipeline board, revenue metrics, and activity timeline wired to live data.
customers.csv, deals.csv, activities.csv, owners.csv, notes.csv
Five hosted GET endpoints with filtering and pagination
Paste endpoint URLs — generate types, hooks, and dashboard UI
Customer table, pipeline board, revenue metrics, activity timeline
Prompt for Cursor
Build a modern CRM dashboard that consumes these API Butler REST endpoints.
Endpoints (paste your URLs):
- Customers: [PASTE_CUSTOMERS_ENDPOINT]
- Deals: [PASTE_DEALS_ENDPOINT]
- Activities: [PASTE_ACTIVITIES_ENDPOINT]
- Owners: [PASTE_OWNERS_ENDPOINT]
- Notes: [PASTE_NOTES_ENDPOINT]
Each endpoint returns { data: [], meta: { limit, offset, count, total } }.
Requirements:
1. CRM dashboard overview — total pipeline value, open deals, customer count, recent activity count
2. Customer table — company name, contact, industry, search, and filter by industry with pagination
3. Deal pipeline board — kanban columns by stage (lead, qualified, proposal, negotiation, closed_won)
4. Revenue metrics — aggregate deal values by stage; highlight top deals and won revenue
5. Activity timeline — recent calls, emails, meetings with customer context and relative timestamps
6. Customer detail view — header from customers API + notes list from notes API
7. Reusable API hooks/composables with loading, empty, and error states for each endpoint
8. Responsive layout — pipeline and tables stack on mobile
9. Reuse existing project conventions; do not add new state libraries unless already present
10. Never hardcode mock rows once endpoints are provided
Prompt for Claude Code
Generate a CRM dashboard from these API Butler GET endpoints.
Endpoints (paste your URLs):
- Customers: [PASTE_CUSTOMERS_ENDPOINT]
- Deals: [PASTE_DEALS_ENDPOINT]
- Activities: [PASTE_ACTIVITIES_ENDPOINT]
- Owners: [PASTE_OWNERS_ENDPOINT]
- Notes: [PASTE_NOTES_ENDPOINT]
Phase 1 — Do not write code yet.
Ask me exactly 2–3 focused questions:
- Framework and routing conventions (React, Vue, file structure)
- Which CRM views to prioritize (dashboard, customer detail, pipeline)
- Styling approach and whether customer detail is a modal or separate route
Stop and wait for my answers.
Phase 2 — After I answer:
- Generate TypeScript types from API response shapes
- Create a typed API client with reusable fetch utilities for all five endpoints
- Build hooks/composables with loading, error, and empty states
- Implement customer table with search and industry filtering
- Build pipeline board grouped by deal stage
- Add revenue metrics cards from deals data
- Activity feed with customer names joined from customers API
- Customer detail page with notes panel
- Responsive dashboard shell with navigation
- Keep API keys in env only—never commit secrets
- Do not use placeholder JSON once real endpoints are provided
Step 6
Compare & Ship
A spreadsheet alone cannot power an interactive CRM dashboard. API Butler gives you real export data with production-like APIs — not fake placeholder JSON.
Spreadsheet Only
- — Disconnected from live apps
- — Not interactive for teams
- — Difficult to share securely
JSONPlaceholder
- — Fake generic data
- — Unrealistic CRM structures
- — No customer–deal relationships
API Butler
- Real CRM data from your exports
- Realistic sales workflows
- Dashboard-ready APIs with filtering
Next Steps
FAQ
CRM dashboard tutorial questions
Can I use HubSpot exports?
Yes. Export your contacts, deals, and activities from HubSpot as CSV files. Map columns to the tutorial schema—customers, deals, activities, owners, and notes—then upload each file to API Butler for hosted GET endpoints.
Can I use Salesforce exports?
Yes. Use Salesforce Report exports or Data Export to CSV. Match Account fields to customers.csv, Opportunity fields to deals.csv, and Task/Event fields to activities.csv. API Butler turns each export into a queryable REST endpoint.
How large can the dataset be?
API Butler supports large CSV uploads with pagination on every endpoint. Start with a few hundred rows for prototyping; use ?limit=25 and filter params to keep dashboard queries fast while you iterate.
Can Cursor generate the dashboard automatically?
Yes. Paste your five API Butler endpoint URLs into the Cursor or Claude Code prompts in Step 5. The AI generates typed hooks, a customer table, pipeline board, revenue metrics, and activity timeline wired to live data.
Can I connect multiple CSV files?
Yes—that is the recommended approach. Upload one CSV per resource (customers, deals, activities, owners, notes). Each becomes its own endpoint. Join data in the dashboard using shared customer_id fields.
Ready to build
Upload CSV. Get API. Build your CRM dashboard.
Start with your CRM export and have dashboard-ready endpoints in minutes.