Implementation model

CRM-ready form data model: fields, scores, routing and attribution

A reusable CRM-ready form schema for identity, qualification, routing, consent context and campaign attribution, with field types and update rules.

Direct answer

A form is CRM-ready when every submitted value has a stable field name, data type, allowed values, source of truth and update rule. The minimum model should separate identity, qualification, attribution, consent context, workflow state and immutable submission evidence instead of copying every answer into an unstructured note.

Evidence basis

A reusable 24-field schema and mapping checklist derived from current CRM property, unique-identifier, deduplication, hidden-field, lifecycle-stage and campaign-tagging documentation.

About the authorEditorial policyCorrections

Key findings

  1. Identity fields, submission evidence and current CRM state solve different jobs and should not overwrite one another.
  2. Controlled option values are safer than free text for routing, segmentation and reporting.
  3. Attribution needs both the captured campaign values and the landing-page or form context that explains where the submission occurred.

The six data layers

A CRM-ready form should not treat every answer as the same kind of data. Separate values by purpose so a later submission can update current information without destroying the evidence of what happened at an earlier moment.

Six layers in a CRM-ready form model
LayerPurposeExample
IdentityMatch or create the correct person and companyWork email, external contact ID, company domain
ProfileDescribe relatively stable characteristicsRole, company size, country, primary use case
QualificationRecord the current evaluationFit score, readiness band, disqualifier, outcome
AttributionPreserve how this submission arrivedUTM source, medium, campaign, landing page, form ID
Consent contextRecord what was presented and selectedConsent flag, statement version, captured timestamp
Workflow evidenceExplain what the system didSubmission ID, route, owner, automation status, error code

Identity and current CRM state belong on the contact or lead. Immutable submission evidence belongs in a submission, activity or related record whenever the CRM supports that separation.

Reusable CRM field dictionary

The template below is deliberately vendor-neutral. Use stable internal names, controlled values and ISO-style timestamps. Do not rename internal keys each time the visible question copy changes.

Minimum CRM-ready form schema
Internal fieldTypeWrite policyWhy it exists
contact_emailEmailMatch, then update if validPrimary person identifier in many marketing CRMs
external_contact_idText, uniqueNever overwrite once assignedStable cross-system identifier when email changes
company_domainTextNormalize to lower caseCompany match and association candidate
first_nameTextUpdate when submitted value is non-emptyPersonalization and review
last_nameTextUpdate when submitted value is non-emptyPersonalization and review
role_functionSingle selectReplace from approved valuesSegmentation and routing
company_size_bandSingle selectReplace from approved bandsFit and routing without false numeric precision
primary_use_caseSingle selectReplace from approved valuesNeed-based segmentation
fit_scoreNumberReplace on each completed assessmentComparable current qualification result
readiness_bandSingle selectDerived from current scoreExplainable high, medium or low route
qualification_outcomeSingle selectReplace on each completed flowNamed result used by follow-up
disqualifier_codeSingle selectBlank or one controlled reasonAuditable hard-rule result
utm_sourceTextWrite to submission; preserve first and latest separately if neededCampaign source
utm_mediumTextSame policy as sourceCampaign medium
utm_campaignTextSame policy as sourceCampaign name
landing_page_urlURLWrite per submissionPage context before the form began
form_idTextWrite per submissionCanonical form or funnel identifier
form_versionTextWrite per submissionConnect the result to the rules shown at that time
consent_selectedBooleanWrite per submissionRecords the captured choice
consent_text_versionTextWrite per submissionIdentifies the statement presented
submitted_atDate-timeWrite onceCanonical event time
submission_idText, uniqueWrite onceIdempotency and troubleshooting key
route_codeSingle selectWrite per submissionOwner or workflow route selected
automation_statusSingle selectUpdate by workflowPending, succeeded, failed or repaired

Write, update and deduplication rules

Field names alone do not make a reliable model. Every destination needs an explicit rule for matching, overwriting and preserving history.

  1. Choose the primary identifier.Email is common for contacts, but a system-generated external ID is safer when the same person may change email addresses.
  2. Normalize before matching.Trim spaces, lower-case emails and domains, standardize country or region values and reject impossible formats.
  3. Make repeat submissions idempotent.A unique submission ID should prevent a retry from creating a second activity or firing the same follow-up twice.
  4. Separate first, latest and current values.First-touch attribution, latest-touch attribution and the contact's current profile should not compete for one field.
  5. Preserve controlled vocabularies.Use internal option values such as high, medium and low even when the form displays friendlier labels.
  6. Record failures.An unmapped option or duplicate-rule block should create an exception state, not silently discard the submission.

HubSpot documents automatic contact deduplication by email and company deduplication by domain. Salesforce documents lead-field mapping during conversion and duplicate rules that can block Web-to-Lead records. These behaviors show why the matching and failure policy must be designed before connecting the form.

The CRM mapping test

Test the mapping with scenarios that reveal overwrite, duplication and attribution failures. A single successful new-contact submission is not enough.

CRM mapping test cases
Test caseExpected record behaviorFailure to watch for
New person, new companyCreate the contact, associate or create the company, add one submission activityCompany text stored without a usable domain or association
Existing person, changed roleUpdate the approved profile field and keep earlier submission evidenceA second contact is created or history is overwritten
Same submission retriedReuse the submission ID and avoid duplicate actionsTwo records, notifications or nurture enrollments
Known person, new campaignPreserve first-touch values and write latest-touch or submission attributionOriginal attribution is overwritten
Unknown option valueRoute to an exception queue with the original valueThe value is dropped or forced into the wrong category
Automation unavailableKeep the record and mark the workflow failed for repairThe contact exists but nobody knows follow-up failed

Use a low, medium and high score path from the lead qualification guide, then confirm the downstream behavior with the post-submission checklist.

Implementation order

  1. Freeze the decision outcomes and routing codes before creating fields.
  2. Reuse destination CRM properties where their definition already matches.
  3. Create the remaining fields with internal names, types and allowed values.
  4. Map visible answers, derived scores and hidden attribution values separately.
  5. Set match, overwrite, append and error rules for each field.
  6. Run the six mapping tests and inspect the contact, company, activity and automation result.
  7. Save the field dictionary beside the workflow so later edits use the same contract.
Reader next step

Copy the field dictionary into a spreadsheet with five extra columns: visible question, destination object, destination field, transformation rule and test result. Then run the HubSpot Forms decision guide or the same mapping exercise against your chosen CRM.

Evidence and limitations

Evidence used

A reusable 24-field schema and mapping checklist derived from current CRM property, unique-identifier, deduplication, hidden-field, lifecycle-stage and campaign-tagging documentation.

What this does not prove
  • The schema is vendor-neutral and must be adapted to the destination CRM's objects, field limits and permissions.
  • The consent fields preserve context for review; they do not determine whether a collection or marketing activity is legally valid.

Sources and verification

Current product and plan claims use the primary sources below. Internal methodology links describe the publication's own frameworks and should not be read as vendor documentation.

  1. HubSpot CRM Properties API
  2. HubSpot, Create and edit properties
  3. HubSpot, Deduplicate records
  4. HubSpot, Set property values with hidden form fields
  5. HubSpot, Use lifecycle stages
  6. Google Analytics, Collect campaign data with custom URLs
  7. Salesforce, Map custom lead fields for conversion
  8. The Form Review testing methodology

Last materially verified .