ServiceFlow Pro Docs
Reporting & Admin

Bulk Upload

Import CSV data with column mapping for customers, leads, inventory, and more.
6 min read

Bulk Upload

Overview

Bulk upload imports CSV data into ServiceFlow with column mapping—customers, leads, inventory, price book, jobs, estimates, invoices, and other supported entities depending on your enabled import types.

How to access

Settings → Bulk Upload (/settings/bulk-upload)
Visible when Bulk Upload integration is enabled under Settings → Integrations.

What you can do today

  • Enable integration under Integrations → Bulk Upload.
  • Upload CSV files per import type exposed in UI (including Leads).
  • Map CSV columns to ServiceFlow fields.
  • Preview and validate rows before commit.
  • Optionally match existing customers or leads to update instead of duplicate.
  • Review import results and error rows.

Prerequisites

  • Admin access.
  • Bulk Upload enabled: settings.integrations['bulk-upload'].isEnabled === true.
  • Clean CSV with headers; UTF-8 encoding recommended.
  • Backup or test on staging before large production imports.

Step-by-step

Enable bulk upload (admin)

  1. Settings → IntegrationsBulk Upload.
  2. Enable → Save.
  3. Confirm Settings → Bulk Upload appears in settings menu.

Import leads from CSV

  1. Settings → Bulk Upload → select Leads.
  2. Upload a CSV with at least an email column (required).
  3. Map columns (common headers auto-suggest).
  4. Optional: enable Match existing leads before import (email, then phone).
  5. Optional: add a foreign-key rule to map assignedToEmailassignedTo (user lookup).
  6. Preview → fix validation errors → Execute.
  7. Verify rows on Leads (/leads).

Recommended leads CSV columns

CSV columnMaps toRequiredNotes
firstNamefirstNameNo
lastNamelastNameNo
emailemailYesUsed for optional upsert match
phonephoneNo
companycompanyNo
address, city, state, zipCodeaddress fieldsNo
messagemessageNoInitial inquiry
notesnotesNoInternal notes
sourcesourceNoweb, phone, email, referral, social (default web)
leadSourceleadSourceNoCampaign label, e.g. Google Ads
statusstatusNonew, contacted, qualified, converted, lost
prioritypriorityNolow, medium, high, urgent
estimatedValueestimatedValueNoDecimal
followUpDatefollowUpDateNoISO date
tagstagsNoJSON array or comma-separated
assignedToEmailassignedToNoResolve via Users FK rule
websiteUrlwebsiteUrlNoBusiness website (CSV column website auto-maps here)
serviceAreaserviceAreaNoService area / market
googleStarRating, googleReviewCountrating fieldsNoGoogle review metadata
sourceUrl, gclidsourceUrl, gclidNoLead capture page / ads click ID
Example:
firstName,lastName,email,phone,leadSource,status,priority,notes
Jane,Smith,jane@example.com,(555) 123-4567,Google Ads,new,high,Callback Friday

Import other entities

  1. Choose import type (Customers, Price Book, etc.).
  2. Upload CSV → map columns → validate preview → execute.
  3. Spot-check records in the target module.

After import

  1. Spot-check records in target module (Customers, Leads, Price Book, etc.).
  2. Use Import Archive if merging legacy system exports.

Current limitations

  • Config-gated — menu hidden until integration enabled.
  • Not all entities support bulk upload—check in-app type list.
  • Lead import does not auto-create customers or nurturing tasks.
  • Updates vs inserts rules vary by import type—use match toggles for customers/leads.
  • No real-time sync from external systems—one-time batch imports.

Roadmap

  • Scheduled SFTP import jobs.
  • Duplicate merge wizard post-import.
  • Import templates downloadable per entity.

Related features