Tools Solutions Pricing Blog
Log in Start for free
← All articles

Repeatable CSV Import Workflows for RevOps Teams

Most ops teams treat each CSV import as a fresh problem. Here's how to turn recurring imports into 30-second workflows by building reusable mappings, normalisation rules, and validation checks.

If you’re running RevOps and CSV imports are part of your week, here’s the question worth asking: how much of the time you spend on each import is actually new work, and how much is repeating what you did last time?

For most teams, the answer is “almost all of it is repeating last time.” Same partner sends the same export. Same data warehouse drops the same monthly file. Same trade show vendor produces the same shape of list. And every time the file lands, someone opens it in Excel, finds the columns, normalises the picklist values, fixes the dates, dedupes, and uploads.

That’s a workflow problem, not a data problem. The data is repeatable. The work to clean it should be too.

This post walks through how to turn one-off CSV imports into a repeatable workflow: what to build, what to save, and what to validate, so the second import from the same source takes minutes instead of hours.

Why most CSV import workflows aren’t actually workflows

A workflow has reusable steps. A typical CSV import process doesn’t. It’s a chain of ad-hoc decisions, each made fresh every time the file lands.

Here’s what the non-workflow looks like:

  1. File arrives in your inbox or a shared drive
  2. You open it in Excel and visually inspect what’s there
  3. You realise the column names are slightly different from last time
  4. You apply some transformations (find/replace, formulas, manual fixes)
  5. You upload to the CRM
  6. The CRM rejects half the rows or imports them with blank fields
  7. You go back to the file, fix the issues, re-upload
  8. The file is forgotten until next month, when you do it all again from memory

The problem isn’t that any of these steps is hard. The problem is that none of them are saved. The decisions you made last month — which columns to include, what lead_source values map to your CRM’s Lead Source picklist, what to do with the empty Industry column — exist only in your head, or in a half-remembered Slack thread.

When you (or someone else) handles the next import, you start from zero.

What a real workflow looks like

A repeatable CSV import workflow has four parts that get saved and re-used between imports:

  1. A column mapping that translates the source file’s structure to your standard schema
  2. Normalisation rules for picklist values, dates, and number formats
  3. Output settings (separator, encoding, blank/duplicate row handling) saved per source
  4. A validation step that catches new edge cases before they land in the CRM

When all four are saved, the second-and-onward run of the same workflow is: pick the workflow, upload the file, review the diff if anything changed, download the cleaned output. Two minutes instead of two hours.

Let’s go through what each piece looks like.

Component 1: The column mapping

Every recurring import has a stable shape. Even when the column names drift, most of the columns are the same from run to run.

A column mapping does three things:

  • Renames source columns to your canonical names (first_nameFirst Name, comp_nameCompany Name)
  • Marks unwanted columns to be dropped from the output (the source has 40 columns, you only want 12)
  • Identifies pass-through columns that go into the output unchanged (notes, IDs, free-text fields)

Save the mapping the first time you build it. Name it after the source: “Stripe weekly customer export”, “ZoomInfo paid list - April 2026”, “RevOps team monthly pipeline export”.

The next time the same source produces a file, applying the saved mapping is one click. If the source has added or renamed a column, the tool flags the mismatch so you can decide what to do (add it to the mapping, ignore it, drop it). The flagged-diff is much faster to review than re-mapping from scratch.

Component 2: Normalisation rules per column

The mapping decides which columns end up in the output. Normalisation decides what the values inside those columns look like.

The three categories of normalisation that matter most:

Picklist values. For columns going into a CRM picklist field, the values need to match the CRM’s allowed set exactly. The mapping should know that web and Website and organic all mean Website in your CRM. This is the single biggest source of silent data loss in recurring imports.

For more on picklist normalisation specifically, see how to standardise picklist values before a CRM import.

Date formats. If the source file uses DD/MM/YYYY and your CRM expects ISO YYYY-MM-DD, the mapping should declare the source format and reformat consistently. Mixed-format date columns within the same file are dangerous and rare; declared-format-per-file is normal and safe.

Number formats. EU-formatted numbers (1.234,56) need to be parsed as such if the source is European. The output should always be in the format your CRM’s locale expects, regardless of the source.

These rules live alongside the mapping. They don’t change run-to-run unless your CRM’s allowed values change. Once they’re saved, you’ve eliminated the find-and-replace step from every future import.

Component 3: Output settings

Less glamorous, but still part of the workflow:

  • Output separator. Comma, semicolon, or tab, depending on the target tool’s expectations. Excel’s regional defaults make this surprisingly variable.
  • Output encoding. UTF-8 covers most cases, but some legacy CRMs still expect Windows-1252 or Latin-1.
  • Blank row stripping. Most exports have empty trailing rows; remove them before upload.
  • Duplicate row stripping. If the source dedupes inconsistently, do it on output instead.

Save these per source format. The same data warehouse export should produce the same CSV shape every time, with no thinking required.

Component 4: A validation step

The last piece is the easiest to skip, and the one that catches the silent failures.

Before you download the cleaned file, run a quick check:

  • Are any columns suddenly empty? If Lifecycle Stage was 80% populated last run and 5% populated this run, something broke in the source — most likely a renamed picklist value or a column rename you missed.
  • Are there new picklist values that aren’t in your normalisation rules? A new variant in the source that has no mapping to a target value is a row that’s about to lose its Lead Source field.
  • Did the row count change drastically? A 10x bump or a 90% drop usually indicates a source-side change worth investigating.
  • Are required fields populated? Every row going into a CRM that has required fields needs those fields filled. Catch the gaps before upload, not after.

A good tool surfaces these warnings inline. A spreadsheet workflow doesn’t, which is why spreadsheet workflows leak data quietly.

The economics of the workflow

The argument for building a repeatable workflow looks like this:

One-off cost: First import takes longer than ad-hoc cleanup. Maybe 30–60 minutes longer, because you’re building the mapping, normalisation rules, and output settings as you go.

Ongoing benefit: Every subsequent import from the same source takes 2–5 minutes instead of 30–90.

If you run the same import once a month for a year, that’s 12 cycles. The break-even is usually somewhere between cycle 1 and cycle 2. Past that, the savings compound: the team handles more sources, the mapping library grows, the next person on the team can run an import they’ve never seen before by selecting the right saved workflow.

The other benefit is consistency. Manual workflows produce slightly different output every time, depending on who runs them and how rushed they are. Saved workflows produce identical output. That’s what you want when the data is feeding dashboards, attribution models, or reports that compare period-over-period.

A worked example: the weekly partner list

A partner sends you a CSV every Monday morning with new leads. The columns drift slightly. The picklist values are inconsistent. The dates are in DD/MM/YYYY because the partner’s team is in Europe. The file is around 2,000 rows.

Without a workflow:

  • Monday 9:00 — file arrives
  • 9:05 — open in Excel, eyeball the columns
  • 9:20 — start the find/replace round to fix industry values
  • 9:50 — copy/paste the date column into a new column with a TEXT formula to reformat
  • 10:30 — manual review for empty rows and duplicates
  • 11:00 — upload to HubSpot, fix the 14 rejected rows from the import wizard
  • 11:30 — file is in. Two and a half hours of someone’s morning is gone.

With a workflow:

  • One-time setup (week 1): build the mapping, save it as “Partner X — weekly leads”
  • Monday 9:00 — file arrives
  • 9:01 — upload to Asphorem, select the saved mapping
  • 9:02 — review any column or value mismatches flagged
  • 9:04 — download the cleaned CSV, upload to HubSpot
  • 9:05 — done.

The mapping and normalisation rules absorb the recurring work. The only manual review is the diff between this week’s file and the saved expectations, which is the only part that’s actually new each week.

When to build a workflow vs. when to do it ad-hoc

Not every CSV import deserves a saved workflow. Some heuristics:

Build a workflow if:

  • The same source produces the same file shape on a recurring schedule
  • The cleanup has more than 3–4 transformation steps
  • More than one person on the team handles imports from this source
  • The data feeds something downstream that requires consistency (dashboards, attribution, reports)

Don’t bother if:

  • It’s a one-off file that won’t repeat
  • The cleanup is trivial (rename two columns, done)
  • The source structure is genuinely different every time and there’s nothing stable to save

Most ops teams have 5–15 recurring sources that justify a saved workflow each, plus a long tail of one-off imports that don’t. Focus the workflow-building effort on the recurring ones.

Where Asphorem fits in

The CSV Normalizer is built around this workflow model. Mappings, picklist normalisation rules, output settings, and validation warnings are first-class concepts you save once and re-apply every time.

Asphorem’s saved mappings become the workflow library for your team. Each named mapping carries its column rules, picklist normalisation, date format, and output settings. Reuse it from the upload screen in one click. The AI matching step handles new picklist variants you haven’t seen before, and the result feeds back into the mapping so next time it’s already covered.

Files never leave your browser, which matters when partner lists or customer exports contain data you can’t send to external services. The unique values from picklist columns are the only thing sent for AI matching, and even that is optional.

If the file structure changes (a new column appears, an old one is renamed), Asphorem flags the diff before processing so you can review it. The saved mapping survives source-side drift instead of silently breaking.

Repeatable CSV imports: frequently asked questions

How is this different from a Zapier or Make automation?

Zapier and Make handle the file transport and downstream actions (CSV in → CRM API call → notification). They don’t handle the data cleaning step well. The mapping, picklist normalisation, and validation logic don’t fit naturally inside a flow-based automation tool, especially when AI matching is involved. The two complement each other: a CSV cleaning tool produces the cleaned file, the automation tool routes it where it needs to go.

Should every recurring import have its own saved mapping?

Yes, if the source structure is stable and the cleanup is non-trivial. The cost of saving one is low, and even slight differences between sources (different picklist values, different date formats) make a per-source mapping safer than trying to use one generic mapping across all of them.

What happens when the source’s column structure changes?

A good import tool detects the diff and flags it before processing. New columns can be added to the mapping inline. Removed or renamed columns surface as warnings so you can decide whether to update the mapping or drop the column. The mapping should survive source-side drift, not break silently when it happens.

Can I share saved mappings across my team?

Today, mappings are scoped to the user account. If multiple team members run the same import, the workflow is to share the export file format and the cleaning rules in your team docs, then have each person save their own mapping the first time they handle that source. Team-shared mappings are a frequently-requested feature on the roadmap.

Is this only for CRM imports?

No. Anything that takes a CSV — Shopify product imports, Klaviyo list uploads, ESP segment exports, finance system data loads, BI tool exports — fits the same model. If the source produces the same file shape repeatedly, a saved mapping eliminates the recurring cleanup cost. The CRM use case is the most visible because the consequences of dirty imports are most painful there.

Stop fixing the same CSV problems every week

Asphorem maps your columns, standardises picklist values, and normalises dates so your next import works first time. Free plan included.

Start for free →