HubSpot Admin · Module 6

Forms &
Imports

The two data intake mechanisms of HubSpot — real-time form submissions and bulk CSV imports. Configure, connect, govern, and keep CRM data clean from every source.

4 form types Form → workflow chain Import rules Overwrite logic 3 case studies CSV hygiene guide
Naveed Abbas profile photo
Naveed Abbas
CRM Administrator
Forms · 01
What Are Forms?

The front door of your CRM — a data collection tool that writes visitor information directly into HubSpot Contact records the moment they submit.

Core definition

A HubSpot Form is a web-based input tool that, when submitted, creates or updates a Contact record in your CRM automatically. Every field on the form maps to a Contact property. When a visitor submits their name, email, and company — those values land directly in the CRM with no manual entry, no spreadsheet, and no delay.

Why this replaced manual data entry

Old wayHubSpot Forms way
Visitor fills PDF or Google FormVisitor fills HubSpot Form
Someone copies data to a spreadsheetData writes directly to CRM instantly
Admin imports spreadsheetContact created or updated automatically
Rep sees lead 3–5 days laterRep notified within seconds
Lifecycle Stage not setLifecycle Stage auto-set to Lead
No automation triggeredWorkflow fires immediately on submit
Forms · 02
The 4 Form Types

HubSpot offers four distinct form types — each designed for a different placement and user experience.

Embedded form
Inline within page content
Sits directly inside your webpage — not a popup, not an overlay. The visitor sees it as part of the page content itself. This is the most common and least intrusive form type.
Best for: landing pages, contact us pages, demo request pages
Popup form
Appears over page content
Appears as an overlay on top of the page. Can be triggered by: time spent on page, scroll depth, exit intent (when the mouse moves toward the browser close button), or button click.
Best for: lead generation, content upgrades, newsletter signups
Slide-in form
Slides in from page corner
Less disruptive than a full popup — appears as a panel that slides in from the bottom corner. Triggered by scroll depth (e.g. when the visitor reaches 50% of the page).
Best for: blog posts, long-form content, subtle newsletter capture
Standalone page
HubSpot-hosted page
A full page hosted by HubSpot — no website required. HubSpot generates a URL you can share directly. Useful for quick campaigns, event registrations, or teams without a CMS.
Best for: quick campaigns, events, teams without a website CMS
Admin rule

All four types write to HubSpot exactly the same way — the form type only affects how and where it appears to visitors. Choose the type based on UX intent, not technical differences. An embedded form on a landing page converts higher than a popup because visitors arrived intending to learn more.

Forms · 03
Form Anatomy

Every component of a HubSpot form — what it does and why it matters.

Fields
The input questions. Each maps to a Contact property. Adding a "Company Name" field maps to the company property. You can use any HubSpot property — default or custom — as a field.
Required fields
Fields that cannot be left blank. Email is almost always required — it's the deduplication key. Each additional required field reduces completion rate by ~10–15%.
Progressive profiling
Replaces already-answered fields with new questions for returning visitors. Sarah filled Name + Email on visit 1. On visit 2, she sees Company + Industry instead. Builds contact profiles over time without long forms.
Submit button text
The action button copy. "Submit" underperforms. Action-specific copy converts better: "Download the guide," "Book my demo," "Get started free."
Thank you / redirect
Post-submit behaviour. Either a thank you message appears in-place, or the visitor is redirected to a URL (thank you page, content download, booking calendar).
Notifications
Who gets emailed when the form is submitted. Options: specific users, the contact's owner, or both. Build these for high-priority forms (demo request, pricing inquiry).
GDPR consent
Explicit opt-in checkboxes for EU visitors. Required by GDPR before sending marketing emails. HubSpot has built-in consent options — always enable for EU-facing forms.
Pre-population
For known (cookied) visitors, HubSpot pre-fills fields with data already in their Contact record. Reduces friction for returning visitors.
Forms · 04
System Logic

The exact sequence HubSpot executes when a form is submitted — understanding this prevents common admin mistakes.

  1. Email lookup: HubSpot checks the submitted email against all existing Contact records.
  2. Create or update: If no match → create new Contact. If match → update existing Contact record.
  3. Property mapping: Each form field value writes to its mapped Contact property. Last write wins — the form value overwrites any previous value in that property.
  4. Lifecycle Stage auto-set: If the Contact's Lifecycle Stage is currently blank → automatically set to Lead. If already set to a later stage (MQL, SQL, Customer) → not changed.
  5. Form submission logged: A "Form submission" activity is logged on the Contact record with timestamp, form name, and field values.
  6. Workflows triggered: Any workflow with "Contact submits [this form]" as an enrollment trigger fires immediately.
  7. Thank you action: Display the thank you message or redirect the visitor to the configured URL.
  8. Notification sent: Configured notification emails sent to specified users or owners.
  9. Analytics updated: Form views, submissions, and conversion rate updated in HubSpot analytics.
  10. Cookie set: If the visitor isn't cookied yet, HubSpot sets a tracking cookie — future visits from this browser are attributed to this contact.
Critical — last write wins

When a form writes to a property, it overwrites whatever was there before. If a rep manually set a contact's Industry to "SaaS" and that contact then fills a form with an Industry field — the form's value wins. Design your forms with this in mind. Only add fields for properties you genuinely want the visitor to set or update.

Forms · 05
Step-by-Step Setup
Path in HubSpot

Marketing → Lead Capture → Forms → Create form

  1. Choose form type — Embedded, Popup, Slide-in, or Standalone. Based on placement intent, not technical preference.
  2. Name the form descriptively — "Demo Request — Homepage Hero" tells you more than "Contact Form 3." Name = page + purpose + position.
  3. Add fields — Drag from the left panel. Each field = one Contact property. Start with Email (required), then add only what you genuinely need to take action.
  4. Configure each field — Required vs optional. Placeholder text. For dropdowns: options come from the property's configured values — no custom options here.
  5. Set submit button text — Replace "Submit" with action-specific copy: "Book my demo," "Download the guide."
  6. Configure what happens after submit — Options → "After submission." Choose: display a thank you message, or redirect to a URL.
  7. Set notifications — Options → "Send notifications to." Add users who should receive an alert on submission.
  8. Enable GDPR options — If applicable. Options → "GDPR options." Enable explicit consent checkboxes and link your privacy policy.
  9. Publish — Click Publish. For external websites: copy the embed code (JavaScript snippet) and paste into your site. For HubSpot CMS pages: drag the Form module onto the page and select this form.
  10. Test it yourself — Submit the form as a fake contact. Check: did HubSpot create the Contact? Did all fields map correctly? Did the workflow fire? Did you receive the notification?
Forms · 06
Form → Workflow Connection

A form alone captures data. A form connected to a workflow takes action on that data automatically.

In a workflow, the enrollment trigger can be set to: "Contact submits a specific form" or "Contact submits any form." The moment a visitor submits, the workflow fires and all configured actions execute in sequence — no human needed.

Standard actions to build on every demo request form

Set Lifecycle Stage = Lead → Set Lead Status = New → Send confirmation email to contact → Send internal notification to SDR → Create task: "Follow up on demo request from [contact name]" → Enrol in lead nurture email sequence

Form-based workflow enrollment triggers

Trigger optionWhen to useAdmin note
Submits specific formWhen you want different automations per formMost common. Build one workflow per key form.
Submits any form on specific pageWhen all forms on a page should trigger the same actionUseful for pages with multiple forms
Submits any formUniversal actions for all lead capturesUse for broad actions only — avoid over-triggering
Forms · 07
Common Mistakes
  • 01 — Wrong field type mapping
    A text input mapped to a Number property lets visitors type "about 50 employees" — the property gets a string, breaks numeric filters, and is useless in reports. Match field types to property types before publishing.
  • 02 — Too many required fields
    Every required field reduces completion rate by 10–15%. Only require Email and one or two genuinely needed fields. Everything else = optional.
  • 03 — Generic submit button copy
    "Submit" consistently underperforms action-specific copy. Always use verb + value: "Get my report," "Book my call," "Start free trial."
  • 04 — Not testing before launch
    Fill the form yourself after publishing. Verify the Contact record, check field mappings, confirm the workflow fired, check the notification arrived. 10 minutes of testing prevents hours of cleanup.
  • 05 — No GDPR consent for EU audiences
    If your form is seen by EU visitors and you plan to email them, not having explicit consent is a legal compliance issue. Enable HubSpot's GDPR options for all forms targeting European markets.
  • 06 — Naming forms generically
    "Form 1," "Contact Form," "New form" — six months later nobody knows what any of these are for. Always name with: page + purpose + date. "Demo Request — Pricing Page — Q4 2024."
Imports · 08
What Are Imports?

The loading dock of your CRM — bulk uploading Contacts, Companies, or Deals from a CSV spreadsheet into HubSpot in one operation.

Core definition

An Import is how you get large amounts of existing data into HubSpot at once — uploading a CSV spreadsheet of records that live outside HubSpot and need to be brought in. While forms capture data one visitor at a time in real time, imports handle hundreds or thousands of records in a single batch operation.

When to use imports

ScenarioWhat you're importing
Migrating from another CRM (Salesforce, Pipedrive)All existing contacts, companies, and deals
Trade show / conference — collected business cardsNew contacts from the event
Bulk property update — updating phone numbers or industriesUpdated values for existing contacts
Historical deal data for reportingPast deals to populate pipeline analytics
Enriching contacts with data from an external toolAdditional property values (revenue, employee count)
Re-importing corrected data after an errorFixed version of a previous import
Imports · 09
The Import Process
Path in HubSpot

Contacts → Import (top right button) → Start an import

  1. Prepare your CSV file — Clean in Excel or Google Sheets first. Column headers in row 1. One record per row. No merged cells. Email column present for contacts. Values match HubSpot property types exactly.
  2. Choose object type — Contacts, Companies, Deals, Tickets, or a combination. Multi-object imports (Contacts + Companies) auto-associate records when domain columns are included.
  3. Upload the file — Drag or select your CSV. HubSpot reads the headers and sample rows.
  4. Map columns to properties — HubSpot presents each column and lets you match it to a HubSpot property. Unmapped columns are skipped. You can create a new custom property on the spot if needed.
  5. Choose overwrite behaviour — This is the most consequential decision. Overwrite all = new values replace existing ones. Preserve existing = only fill blank fields. Choose based on what you know about the existing data. See the Overwrite section below.
  6. Enable "Add to static list" — Always check this option. HubSpot creates a static list of everyone imported — enabling targeted follow-up and providing a rollback mechanism.
  7. Review the import summary — HubSpot shows: records to be created, records to be updated, records with errors. Fix errors before proceeding.
  8. Start import — HubSpot processes the file. For large imports (10k+ records) this takes several minutes.
  9. Review results — HubSpot emails you when complete with a summary. Download the error file, fix failed rows, and re-import the errors as a separate file.
  10. Post-import verification — Spot-check 10–15 records. Did fields map correctly? Did lifecycle stages set? Are companies associated? Run a quick data quality check.
Imports · 10
Import Rules & CSV Hygiene

The rules HubSpot uses during imports — and the CSV requirements that prevent errors before they happen.

Three core import rules

RuleWhat it meansAdmin implication
Email = deduplication keySame email already in CRM → update that contact. No email → always creates new.Always include an email column. Contacts without email cannot be deduplicated and may create duplicates.
Dropdown values must match exactlyIf your Industry field has "Software as a Service (SaaS)" and your CSV has "SaaS" — it won't map.Export your HubSpot dropdown values before preparing your CSV. Match character-for-character.
Boolean fields: true or false onlySingle checkbox properties only accept "true" or "false." Not "yes," "no," "1," or "0."Update your CSV to use true/false for any checkbox property columns before importing.

CSV preparation checklist

First Name,Last Name,Email,Company Name,Company Domain,Lifecycle Stage,Industry,Phone Sarah,Khan,sarah@techcorp.com,TechCorp,techcorp.com,Lead,Technology,+1 415 555 0172 Ahmed,Ali,ahmed@globalco.com,Global Co,globalco.com,Customer,Financial Services,+44 20 7946 0958
RuleCorrectIncorrect — causes errors
Column headersRow 1 only, plain textMultiple header rows, merged cells
DatesMM/DD/YYYY or YYYY-MM-DD"Jan 15, 2024" or "15/01/2024"
Currency / numbers12500 or 12500.00$12,500 or "12,500 USD"
Checkboxestrue or falseYes, No, 1, 0, TRUE, FALSE
Phone numbers+1 415 555 0172Inconsistent formats within same column
EncodingUTF-8Windows-1252 (breaks special characters)
FormulasValues only (copy → paste special → values)Any Excel formula (=SUM, =VLOOKUP)
Imports · 11
The Overwrite Decision

The most consequential choice in any import — getting this wrong silently corrupts your CRM data.

Option
Overwrite all property values
Option
Don't overwrite existing values
What it does
Import values replace whatever is currently in the property — even if the field already has data.
What it does
Import values only fill properties that are currently blank. Existing data is never overwritten.
Use when
First-time import with no existing data · You're correcting bad existing data · Updating a specific property in bulk · Migrating from another CRM as source of truth
Use when
Enriching existing contacts with missing data · Reps have manually corrected some records · Importing from a lower-quality data source · You want to preserve any manually-set values
Admin rule — test first, always

Import 10 records with your chosen overwrite setting. Check those 10 records in HubSpot. Verify field values, associations, and lifecycle stages. Only proceed with the full import if the test looks correct. Ten minutes of testing prevents hours of cleanup on thousands of records.

Imports · 12
Multi-Object Imports

Import Contacts and Companies in the same file — HubSpot auto-associates them, saving hours of manual work.

When your CSV includes both Contact-level columns (First Name, Email) and Company-level columns (Company Name, Domain), HubSpot can create both types of records and link them in a single import. The key: include the Company Domain Name column — HubSpot uses domain as the Company deduplication key.

First Name,Last Name,Email,Job Title,Company Name,Company Domain,Industry,Employees Sarah,Khan,sarah@techcorp.com,VP Operations,TechCorp,techcorp.com,Technology,250 Ahmed,Ali,ahmed@techcorp.com,CTO,TechCorp,techcorp.com,Technology,250 Omar,Farooq,omar@globalco.com,CEO,Global Co,globalco.com,Finance,85

Sarah and Ahmed share the same domain (techcorp.com) — HubSpot creates one Company record for TechCorp and associates both contacts to it. Omar gets a separate Company record for Global Co. This is exactly how a CRM migration from Salesforce should be structured.

What HubSpot does during multi-object import

Creates or finds Company by domain → Sets Company properties from Company columns → Creates or updates Contact by email → Sets Contact properties from Contact columns → Associates Contact to Company automatically

Imports · 13
Import Best Practices
  • 📋
    Always import to a static list. Check "Add imported contacts to a list." This gives you a rollback mechanism and a target audience for post-import follow-up campaigns.
  • 🔢
    Always include a Lifecycle Stage column. Every imported contact needs a stage. No exceptions. Import without stages = 2,000 contacts invisible to workflows and reports.
  • 🧹
    Clean data before import — not after. Fix formatting, remove duplicates, validate emails, and standardise dropdown values in Excel/Google Sheets before touching HubSpot. Post-import cleanup is 5× harder.
  • 🧪
    Test with 10 records first. Import a small batch, verify thoroughly, then proceed. This catches mapping errors before they scale to thousands of records.
  • 📂
    Download and fix error files. HubSpot generates an error report for every failed row. Download it, fix the issues, and re-import just the failed rows as a separate file.
  • 📊
    Document every import. Keep a log: date, who imported, what file, how many records, overwrite setting used, and the resulting static list name. This is your audit trail.
  • 🚫
    Do not import purchased lists without checking compliance. Cold purchased contacts often violate GDPR, CAN-SPAM, and HubSpot's Terms of Service. At minimum: only import to leads who have a legitimate business reason to hear from you, and never send marketing emails without proper consent.
Applied Learning · 14
Real-World Example

Forms and Imports working together in a complete CRM setup scenario.

The situation

A B2B SaaS startup is launching HubSpot. They have: 1,200 contacts from their old CRM (Salesforce export), 15 existing customers managed via Gmail, and a new website going live next week with a demo request form.

The admin's complete plan

  • 1.
    Import existing contacts from Salesforce. Clean the export: standardise fields, add Lifecycle Stage column (Lead for prospects, Customer for paying clients), validate emails. Import with "Preserve existing" overwrite setting. Import to static list: "Salesforce migration — [date]." This prevents any inadvertent overwriting of data that may already exist in HubSpot from previous form submissions.
  • 2.
    Import 15 existing customers separately. Separate file with Lifecycle Stage = Customer. HubSpot adds them to the [SUPPRESS] Customers list automatically via workflow. They won't receive any prospecting emails.
  • 3.
    Create the demo request form. Embedded form on the homepage hero section and pricing page. Fields: First Name, Last Name, Email (required), Company, Job Title, "What's your biggest challenge?" (dropdown). Submit button: "Book my demo." On submit: redirect to Calendly booking page.
  • 4.
    Connect form to workflow. Enrollment trigger: Contact submits "Demo Request" form. Actions: Set Lifecycle Stage = Lead → Set Lead Status = New → Send confirmation email → Notify SDR with contact details → Create task "Follow up in 2 hours."

The result

From day one, two data intake channels are live and connected to the same CRM: the import baseline (1,215 contacts, lifecycle stages set, customers suppressed) and the real-time form capture (every demo request lands in HubSpot in seconds, SDR notified instantly). The database is clean, categorised, and actionable from the first day of operation.

Applied Learning · 15
Three Case Studies
📋
Case 1 — The import that overwrote 2,000 rep notes
When "Overwrite all" is used on existing data
ImportB2B Agency
Problem
Solution
Outcome
Problem

A B2B agency's new admin wanted to update industry values for 2,000 contacts by importing a cleaned spreadsheet. They chose "Overwrite all property values" without realising the import file had more columns than just Industry — it also had Lifecycle Stage, Lead Status, and Notes columns from the original export. The overwrite set every contact's Lifecycle Stage back to "Lead" (including 200 existing customers) and blanked all manually-entered rep notes (which were in the wrong column format anyway). Sales team discovered it 3 days later when customers started receiving prospecting emails.

  • 1.
    Immediately ran a workflow to restore Lifecycle Stage = Customer for all contacts with associated Closed Won deals — recovered 180 of 200 customers.
  • 2.
    The remaining 20 were identified via the import static list (which had been created — the one thing done right) and manually corrected.
  • 3.
    Rep notes were unrecoverable — the previous values were gone. This was the real loss.
  • 4.
    Built new import SOP: when updating a specific property, only include that property column in the import file (plus email for deduplication). Never export and re-import all columns unless you mean to overwrite everything.
RevOps lesson

The static list saved 20 customers from continued suppression failure. Without it, identifying the affected contacts would have required a full manual review. Always create a list on import — it's your only rollback mechanism. And the admin SOP now reads: "For targeted updates, import only the email column + the property you're changing. Never include extra columns you don't intend to overwrite."

📝
Case 2 — Form field mapped to wrong property type
When a text input maps to a number property
FormsSaaS
Problem
Solution
Outcome
Problem

A SaaS company built a demo request form with a "Number of employees" text input field, mapped to HubSpot's "Number of Employees" Number property. The form accepted free text — visitors entered values like "around 50," "50-100," "~200," and "we're a startup." 6 months and 800 form submissions later, the revenue team tried to filter "companies with more than 100 employees" and the report returned zero results. All 800 employee count values were stored as text strings — unusable for numeric filtering, scoring, or ICP analysis.

  • 1.
    Changed the form field from text input to a dropdown with fixed ranges: "1–10," "11–50," "51–200," "201–500," "500+." Mapped to a new "Employee Range" dropdown property (not the Number property).
  • 2.
    The original Number of Employees property was left for CRM enrichment tools (like HubSpot Insights) that write numeric values automatically.
  • 3.
    Attempted to clean the 800 corrupted values — exported, manually categorised into ranges where possible, re-imported. Approximately 400 of 800 were salvageable. The rest were deleted.
RevOps lesson

Never use a freeform text input for any field you'll need to filter, segment, or calculate with. If visitors need to tell you their company size, give them a dropdown with ranges — you lose some granularity but gain 100% data quality. The admin rule: if it will ever be used in a filter, a score, or a report — it must be a structured field type (dropdown, number, checkbox).

🔄
Case 3 — Forms + imports as a full lead gen system
How a conference team built a post-event pipeline machine
Forms + ImportsB2B Events
Setup
Execution
Outcome

A tech company attends 8 conferences per year, collecting 150–300 business cards at each. Previously: cards were manually typed into a spreadsheet, imported weeks later with no lifecycle stages set, and reps called them cold with no context. Open rate: 8%. Meeting rate: 1.2%.

The admin redesigned the system. Before each conference: prepared a standard import template CSV with all required columns pre-formatted, a post-event email sequence pre-built in HubSpot, and a "Conference attendees" workflow ready to activate.

  • 1.
    At each conference: used a QR code linking to a HubSpot Standalone form — "Great meeting you! Save your details for our follow-up." Collected 40% of contacts this way in real time.
  • 2.
    Business cards from the other 60%: collected in a consistent format, entered into the prepared CSV template on the flight home (while context was fresh).
  • 3.
    Import on Day 2 post-conference: all cards uploaded. Lifecycle Stage = Lead. Lead Status = New. A "Conference: [Event Name]" tag applied via import. Static list created per event.
  • 4.
    Workflow automatically enrolled all imported contacts in a 3-email post-conference sequence: Day 1 "Great meeting you," Day 3 "Relevant resource," Day 7 "Book a 15-minute call."
RevOps outcome

Open rate jumped from 8% to 41% — because emails went out within 24–48 hours while the conference interaction was still fresh. Meeting booking rate went from 1.2% to 9.8%. Average time from conference to first meeting: 4.2 days vs 3.1 weeks previously. The combination of real-time QR form capture + fast structured import + automated sequence turned conference attendance from a fuzzy activity into a measurable, repeatable pipeline source.

Applied Learning · 16
Practice Exercise

Do this in your free HubSpot sandbox — approximately 60 minutes total.

Part A — Build a form (30 min)

  1. Go to Marketing → Lead Capture → Forms → Create form. Choose Embedded type.
  2. Add fields: First Name, Last Name, Email (required), Company, Job Title, and a custom dropdown field called "What best describes you?" (Options: Founder / Executive, Manager / Director, Individual Contributor, Student / Researcher).
  3. Set submit button text to "Get in touch" (not Submit).
  4. Set "After submission" to display a thank you message: "Thanks! We'll be in touch within 24 hours."
  5. Publish the form. Copy the share link and open it in a new browser tab.
  6. Fill it out with fake data and submit.
  7. Go to Contacts and find the record that was just created. Verify all fields mapped correctly. Check the "Form submissions" activity in the timeline.

Part B — Create a form workflow (15 min)

  1. Go to Automation → Workflows → Create workflow → Contact-based.
  2. Set enrollment trigger: Contact submits form → choose your newly created form.
  3. Add actions: (1) Set Lifecycle Stage = Lead, (2) Create task for owner: "Follow up with {{contact.firstname}} from form submission."
  4. Activate the workflow. Submit the form again with a different email. Check the new contact — did the workflow fire? Is there a task created?

Part C — Do a test import (15 min)

  1. Create a CSV file in Google Sheets with 5 fake contacts. Columns: First Name, Last Name, Email, Company Name, Lifecycle Stage (set to Lead for all), Lead Status (set to New).
  2. Go to Contacts → Import → Start an import.
  3. Upload your CSV. Map all columns. Choose "Don't overwrite existing values."
  4. Check "Add imported contacts to a static list." Name it "Test import — [today's date]."
  5. Complete the import. Check the 5 new contacts. Verify lifecycle stage = Lead. Find the static list and confirm all 5 are in it.
Applied Learning · 17
Interview Questions
"What happens when a form submission email address matches an existing contact in HubSpot?"
HubSpot uses email address as the deduplication key for contacts. If the submitted email matches an existing contact, HubSpot updates that contact's record with the new form field values rather than creating a duplicate. This is the "last write wins" rule — the form values overwrite whatever was previously in those mapped properties. This is why admins need to think carefully about which properties their forms are writing to. If a rep has manually set a contact's Industry to "SaaS" and that contact fills a form with an Industry dropdown, the form's value replaces the rep's. For properties where you want to protect existing values, you'd use workflow "don't overwrite" logic downstream rather than relying on the form's default behaviour.
"Walk me through how you'd import 5,000 contacts from a trade show CSV into HubSpot."
Before touching HubSpot, I'd clean the CSV in Excel: ensure column headers are in row 1 only, standardise date formats, remove any Excel formulas and replace with values, validate email addresses, and check that any dropdown field values like Industry or Country exactly match HubSpot's configured options — case-sensitive, character-for-character. I'd add a Lifecycle Stage column set to Lead for everyone — no contact enters without a stage. Then I'd test with 10 records first, choosing "Don't overwrite existing values" since these are new contacts who may have previously submitted forms. I'd check those 10 records thoroughly: field mapping, lifecycle stage, any unintended associations. If correct, I'd run the full import with one non-negotiable option: "Add imported contacts to a static list." That list gives me a rollback mechanism and an audience for the post-event welcome sequence. After import, I'd download the error report, fix failed rows, and re-import the errors as a separate file.
"When should you use 'Overwrite all property values' vs 'Don't overwrite' on an import?"
The choice depends on what you know about the existing data quality. Overwrite all is correct when: you're doing a first-time import with no existing data, you're intentionally correcting bad existing values like wrong industry names, or the import file is the authoritative source of truth and existing values are known to be stale. Don't overwrite is correct when: you're enriching existing contacts by filling in missing properties, reps have manually corrected data you might otherwise overwrite, or the import source is lower quality than what's already in the CRM. My default rule: if in doubt, choose Don't overwrite, and test on 10 records first regardless of which setting you use. The test step isn't optional — it's the only way to verify your field mapping is correct before it affects thousands of records.
Applied Learning · 18
Summary Cheatsheet

Forms

ConceptKey point
What it doesCaptures visitor data in real time and writes directly to Contact records
4 typesEmbedded (inline), Popup (overlay), Slide-in (corner), Standalone (HubSpot-hosted)
DeduplicationSame email = update existing contact, not create duplicate
Lifecycle StageAuto-sets to Lead on submission if currently blank
Field mappingEach field = one Contact property. Last write wins.
Required fieldsEmail always. Keep others minimal — each reduces completion ~10–15%.
Progressive profilingReplaces already-answered fields with new questions (Pro+)
Submit buttonAlways use action-specific copy — not "Submit"
Workflow trigger"Contact submits [form]" — fires instantly on submission
GDPREnable consent options for EU audiences before launch
Test ruleAlways submit the form yourself and verify the Contact record before going live

Imports

ConceptKey point
What it doesBulk loads contacts, companies, or deals from a CSV into HubSpot
Deduplication keyEmail — same email = update existing, not create duplicate
Overwrite allNew values replace existing ones — use for corrections and first-time imports
Don't overwriteOnly fills blank fields — use for enrichment and when existing data is trusted
Always includeEmail, Lifecycle Stage, and enable "Add to static list"
Multi-objectContacts + Companies in one file → auto-associated via Company Domain column
CSV rulesRow 1 = headers only · Dates: MM/DD/YYYY · Numbers: digits only · Checkboxes: true/false
Dropdown valuesMust match HubSpot options exactly — export your values before preparing CSV
Test ruleImport 10 records, verify thoroughly, then run full import
Error fileDownload after import, fix failed rows, re-import errors as separate file
Static listAlways create — it's your only rollback mechanism
RevOps mindset on forms and imports

Forms and imports are your data intake architecture — the two front doors through which every piece of contact information enters your CRM. A RevOps practitioner designs both deliberately: forms with the right fields, the right field types, connected to the right workflows; imports with clean data, correct lifecycle stages, and a static list for every batch. The quality of your entire CRM — every report, every workflow, every forecast — is determined by how well-designed these intake mechanisms are. Garbage in, garbage out. The time to enforce data quality is at the point of entry, not during a painful cleanup six months later.