Data Mapping Process: Map Customer Data Across Tools
Data Mapping Process: Map Customer Data Across Tools
The data mapping process for SaaS tools, step by step. Audit fields, match source to destination, handle type mismatches, and sync automatically.
No credit card required
Free 100k syncs every month
Every data mapping guide on the internet follows the same script: define your sources, map fields in a diagram, transform with SQL, load into a warehouse. Talend walks through a six-step enterprise process. Fivetran compares five mapping tools, all warehouse-centric. Estuary lists seven techniques, from manual coding to cloud-based ETL. None of them answer the question a 20-person SaaS team actually has: how do I get the customer fields in Stripe to match the contact properties in HubSpot, right now, without writing SQL or provisioning a warehouse? This guide covers the data mapping process for teams that need their SaaS tools sharing customer data, not a textbook on enterprise data architecture. For background on why customer data fragments across tools in the first place, see What Is Customer Data Management?.
Plan your data mapping process: identify source and destination fields
Start by knowing what fields exist in each tool and which ones need to move. Skip the data modeling phase. You are not building a warehouse schema. You are matching fields between two tools that already store customer data.
Open your source tool (Stripe, Intercom, Postgres, or whatever holds the data you want to share). List the customer fields it exposes through its API. Then open your destination tool (HubSpot, Salesforce, Attio) and list the contact or company properties it accepts.
Here is a real-world audit for Stripe as source and HubSpot as destination:
Stripe field | Field type | HubSpot property | HubSpot type | Match? |
|---|---|---|---|---|
| string |
| string | Direct |
| enum |
| dropdown | Needs custom property |
| string |
| single-line text | Needs custom property |
| Unix timestamp |
| date | Type mismatch |
Sum of | integer (cents) |
| number (dollars) | Type mismatch + transform |
| Unix timestamp |
| date | Type mismatch |
Three patterns emerge from every SaaS-to-SaaS data mapping audit. Direct matches are rare. Most fields need custom properties created in the destination. And at least a third have type mismatches that require conversion.
The data mapping process step by step: audit, match, transform, and validate
After the field audit, the mapping workflow follows four concrete steps.
Step 1: Audit both systems. List every field in the source that another tool needs. Ignore internal fields (Stripe webhook IDs, internal HubSpot record IDs). Focus on fields your team looks up manually today. If your sales rep opens Stripe to check subscription status before a call, that field belongs in the CRM.
Step 2: Match source to destination. For each source field, identify the corresponding destination field. Three outcomes are possible:
Field exists with the same name and type. Map directly. This is rare across SaaS tools.
Field exists with a different name or type. Map with a rename or type conversion.
subscription.current_period_end(Unix timestamp) maps torenewal_date(ISO date) with a date conversion.Field does not exist. Create a custom property in the destination. HubSpot, Salesforce, and Attio all support custom contact properties. Name it clearly:
subscription_status, notssorstripe_sub_status.
Step 3: Plan transformations. For each type mismatch, define the conversion. Common ones for SaaS data mapping and transformation:
Mismatch | Transform | Example |
|---|---|---|
Unix timestamp to ISO date | Multiply by 1000 if in seconds, then format |
|
Cents to dollars | Divide by 100 |
|
Enum values differ | Map source values to destination labels |
|
Nested object to flat field | Extract the nested property |
|
Array to single value | Pick first, last, or aggregate | Multiple subscriptions → most recent active |
Step 4: Validate. After configuring the mapping, run a test sync on a small batch. Spot-check 10-20 records. Verify that every mapped field arrived with the correct value and type. Check edge cases: what happens when the source field is null? When the customer has no subscription?
Data mapping across common SaaS tools: CRM, billing, support, and marketing
The mapping approach varies by tool pair because each tool stores customer data in its own schema conventions. Here are the field mappings that matter most for the four tool categories growing teams use daily.
Billing to CRM (Stripe → HubSpot). This is the highest-impact mapping for most SaaS teams. The pillar fields: subscription.status, plan.nickname, subscription.current_period_end, and sum of charges.amount. With these four fields in your CRM, every sales and support interaction starts with current billing context. See the audit table above for the specific data mapping strategy.
Support to CRM (Intercom or Zendesk → HubSpot). Map conversations.count (or open ticket count) to a custom CRM property. Map last_conversation.created_at to last_support_ticket_date. Map CSAT score if available. The goal: your sales team sees support health on every contact record without opening the support tool.
Product database to CRM (Postgres → HubSpot). Map last_login_at to a custom date property. Map onboarding_completed (boolean) to a checkbox. Map feature adoption flags. This is where schema mapping gets tool-specific: your database columns have exact types, and the CRM needs matching property types.
CRM to email (HubSpot → Mailchimp). Map lifecycle_stage and deal_stage so your email tool can segment by customer status. Map plan_name so upgrade campaigns exclude paying customers. This direction matters because email tools send based on properties they have locally.
For each pair, start with 5-8 fields. Validate the team uses them before expanding. Most teams reach full coverage with 10-15 mapped fields across 3-4 tool pairs.
Data mapping process troubleshooting: type mismatches, missing fields, and many-to-one
Three problems show up in every SaaS data mapping project. Knowing how to do data mapping means knowing how to handle these edge cases before they corrupt your destination data.
Type mismatches. The most common: Stripe stores amounts in cents as integers, but your CRM expects dollars as a decimal. Dates are another frequent mismatch: Unix timestamps vs. ISO 8601 vs. human-readable strings. A good mapping tool handles these conversions at the field level. If yours doesn't, you will spend hours debugging why "99.00" appeared as "9900" in a CRM report.
Missing fields in the destination. When a source field has no counterpart in the destination, create a custom property before running the sync. HubSpot supports single-line text, number, date, dropdown, and checkbox property types. Match the property type to the source field type. A subscription.status enum maps to a dropdown, not a text field. Getting the type wrong means you cannot filter or report on the field later.
Many-to-one relationships. A single Stripe customer can have multiple subscriptions. A single Intercom contact can have dozens of conversations. When mapping many records to one CRM contact, decide your aggregation strategy upfront:
Scenario | Strategy | Example |
|---|---|---|
Multiple subscriptions | Sync the most recent active | Latest |
Multiple conversations | Count or sync latest |
|
Multiple charges | Aggregate | Sum of |
Multiple email addresses | Pick primary |
|
Null and empty values. Define behavior upfront. When a source field is null, should the sync skip the field (preserve the destination value), write null (clear the destination), or write a default? For most operational fields, "skip if null" is the safest default. Overwriting a known value with null because Stripe doesn't have it yet is worse than keeping stale data.
Automate your data mapping process with Oneprofile
Manual mapping works once. Automated mapping works forever. Oneprofile handles the entire workflow described in this guide.
1. Connect your tools. Authenticate with API keys or OAuth. Oneprofile validates each connection against the live API.
2. Select record types. Choose which records to map: contacts, companies, deals. Use email as the matching key.
3. Map fields visually. Drag source fields to destination fields. Oneprofile shows field types side by side and flags mismatches. Custom properties get created automatically in the destination with the correct type.
4. Choose sync mode. Update or Create for enriching existing records and adding new ones. Mirror for keeping the destination an exact copy of the source. Update for enriching without creating.
5. Set a schedule and run. Every 15 minutes for operational data. The first sync backfills all historical records. Subsequent syncs are incremental: only changed fields propagate, tracked at the property level. When a record fails (type mismatch, rate limit, API error), it lands in the dead letter queue for investigation, not silent data loss.
What enterprise guides describe as a six-month project takes an afternoon when you are mapping between SaaS tools you already use. No warehouse, no SQL, no data engineering team required. Start syncing free.
How long does the data mapping process take for SaaS tools?
Under two hours for your first tool pair. Auditing fields takes 20 minutes, matching source to destination takes 15, configuring sync takes 15, and validating takes 10. Each additional tool pair adds about 30 minutes.
Do I need SQL or code to map customer data across tools?
No. Visual field mapping tools let you drag source fields to destination fields without code. Type conversions and format handling happen automatically. SQL is only needed if you route data through a warehouse.
What is the best matching key for data mapping across SaaS tools?
Email address. Most SaaS tools store customer email, making it the natural key for linking records across CRM, billing, support, and marketing tools. Use a secondary key like customer ID for tools that don't store email.
What happens when source and destination field types don't match?
Type-aware mapping tools convert automatically. Dates get reformatted, currencies get normalized, and enums get translated. When a conversion fails, the record lands in a dead letter queue for investigation instead of syncing bad data.
Can I map fields between more than two tools at once?
Yes. Set up one sync config per tool pair. Most teams start with billing-to-CRM, then add support-to-CRM and database-to-CRM. Each config maps its own fields independently.