salesforce-field-mapping-skill
Pure-generation T0 skill that maps CSV/spreadsheet column headers to Salesforce field API names with type mismatch detection. The daily-driver for admins migrating from HubSpot, Pipedrive, Excel exports, and legacy CRMs. Outputs a complete mapping table, type mismatch report, missing-field list, and a Data Loader–ready column header row.
When This Skill Owns the Task
Use salesforce-field-mapping-skill when the work is to design or
validate a field mapping for a data import:
- "I'm migrating from HubSpot — map these column headers to Salesforce Contact fields"
- "Here's my Excel export. What are the Salesforce API names?"
- "I need a Data Loader field mapping CSV for importing Opportunities from Pipedrive"
- "Flag any type mismatches in my column list before I import"
- "Which of my CSV columns don't have matching Salesforce fields?"
Delegate elsewhere when:
| Situation | Skill to use |
|---|---|
| Actually executing the data migration with records | salesforce-bulk-data-ops-skill |
| Designing new custom fields to receive imported data | salesforce-data-architecture-agent |
| Reviewing FLS or who can see imported fields | salesforce-permission-model-review-skill |
| Fetching field metadata from a live org to compare | salesforce-metadata-fetcher-skill |
Required Context to Gather First
Before generating a mapping, confirm:
- Target Salesforce object — standard (Contact, Lead, Account,
Opportunity, Case) or custom (
Custom_Object__c). - Source system — HubSpot, Pipedrive, Salesforce Classic, Excel/CSV export, Marketo, or other. Source system determines default field label conventions.
- Column header list — the complete list of CSV/spreadsheet column headers, either as a comma-separated list or pasted table.
- Custom fields in scope — list any known custom fields on the target
object that may receive data (e.g.,
HubSpot_Contact_ID__c). - Operation type — insert, update, or upsert. Affects whether
Idor an external ID field is required in the mapping. - External ID field — for upsert: which field is the external ID key?
(e.g.,
HubSpot_Contact_ID__c,Email) - Multi-value fields — any source columns that contain comma-separated multi-values intended for multi-select picklists.
If the column header list is not provided, ask before proceeding.
Recommended Workflow
Step 1 — Normalize source column headers
Apply label normalization to make headers comparable:
- Strip leading/trailing whitespace
- Collapse multiple spaces to single space
- Remove non-alphanumeric prefix/suffix characters
- Flag headers containing special characters that may corrupt Data Loader
(e.g.,
#,$,%,(,),/)
Step 2 — Derive candidate API names from labels
For each normalized column header, apply the API name derivation rules
(see references/api-name-normalization.md):
- Replace spaces with underscores
- Remove characters not in
[A-Za-z0-9_] - Strip leading digits (Salesforce API names must start with a letter)
- Collapse consecutive underscores to single underscore
- Truncate to 40 characters (API name limit)
- Append
__cfor custom fields - Check against reserved words list
Step 3 — Match against known standard field API names
Apply fuzzy matching against the standard object's well-known fields:
For Contact: FirstName, LastName, Email, Phone, MobilePhone,
Title, Department, AccountId, MailingStreet, MailingCity,
MailingState, MailingPostalCode, MailingCountry, LeadSource,
Salutation, Birthdate, Description, DoNotCall, HasOptedOutOfEmail,
OwnerId, ReportsToId
For Lead: FirstName, LastName, Company, Email, Phone,
MobilePhone, Status, LeadSource, Title, Industry, AnnualRevenue,
NumberOfEmployees, Rating, Street, City, State, PostalCode,
Country, Description, HasOptedOutOfEmail, DoNotCall
For Account: Name, Type, Industry, AnnualRevenue,
NumberOfEmployees, BillingStreet, BillingCity, BillingState,
BillingPostalCode, BillingCountry, Phone, Website, Description,
OwnerId, ParentId
For Opportunity: Name, StageName, CloseDate, Amount,
Probability, AccountId, OwnerId, Type, LeadSource, Description,
ForecastCategory, ForecastCategoryName, CampaignId, NextStep
Step 4 — Detect type mismatches
For each mapped pair, compare source data type to Salesforce field type.
Flag mismatches (see references/type-mismatch-detection.md):
| Source type | Target type | Risk | Action |
|---|---|---|---|
| String | Date | HIGH | Requires DATEVALUE transform; verify ISO format |
| String | Number/Currency | HIGH | Requires VALUE or numeric parse; check for non-numeric chars |
| Multi-value string | Single picklist | HIGH | Must pick one value or use transformation script |
| String | Boolean/Checkbox | MEDIUM | Map "true"/"1"/"yes" → true; all else → false |
| String | Lookup (Id) | HIGH | Requires upsert by external ID or pre-lookup step |
| Integer | Currency | LOW | Implicit conversion; verify decimal precision |
| Mixed case | Picklist | MEDIUM | Picklist values are case-sensitive in Data Loader |
Step 5 — Flag missing and unmappable fields
Produce two lists:
- Unmapped source columns — columns with no clear Salesforce target
- Required fields missing from source — Salesforce required fields
(e.g.,
LastNameon Contact,LastName + Companyon Lead,Name + StageName + CloseDateon Opportunity,Nameon Account) not present in the source column list
Step 6 — Normalize picklist values
For any column mapping to a standard picklist field, list the expected Salesforce API values and flag mismatches:
LeadSource: Cold Call, Web, Phone Inquiry, Partner Referral, Purchased List, Other, Word of mouth, Employee, Internal, PartnerStageName: Prospecting, Qualification, Needs Analysis, Value Proposition, Id. Decision Makers, Perception Analysis, Proposal/Price Quote, Negotiation/Review, Closed Won, Closed LostIndustry: Agriculture, Apparel, Banking, Biotechnology, Chemicals, Communications, Construction, Consulting, Education, Electronics, Energy, Engineering, Entertainment, Environmental, Finance, Food & Beverage, Government, Healthcare, Hospitality, Insurance, Machinery, Manufacturing, Media, Not For Profit, Recreation, Retail, Shipping, Technology, Telecommunications, Transportation, Utilities, Other
Step 7 — Detect special character and collision risks
- Flag API names that would collide (two source columns normalizing to the same API name)
- Flag reserved words:
Id,Name,OwnerId,CreatedDate,LastModifiedDate,SystemModstamp,IsDeleted— these cannot be used as custom field API names - Flag API names exceeding 40 characters after normalization
Step 8 — Emit structured output
Produce the full output block per the Output Format section below, including a Data Loader–ready header row.
Quality Scoring Rubric (100-point)
Score every output before emitting. Threshold: 85+ ship, 70–84 ship with caveat, below 70 reject and revise.
| Dimension | Points | What earns full marks |
|---|---|---|
| API name accuracy | 30 | Every standard field mapped to correct API name; custom fields flagged with __c; no typos or reversed lookups |
| Type mismatch detection | 25 | All HIGH and MEDIUM risk mismatches flagged with recommended transforms; no silently ignored mismatches |
| Missing-field flagging | 15 | All required Salesforce fields checked; clearly listed if absent from source; import will fail without them |
| Picklist value normalization | 15 | Case-sensitive picklist values verified; multi-value vs. single-value conflict flagged; API values used not display labels |
| Special char / collision detection | 15 | Column header special chars fla |