Blog
Technical10 min read

Bulk Import and Historical Order Enrichment: CSV Workflows for Shopify

DH
Dennis Hegstad
Founder, sonarID · May 18, 2026
Bulk Import and Historical Order Enrichment: CSV Workflows for Shopify

To enrich historical Shopify orders in bulk, you export your past orders to a CSV file, clean and map the email and shipping address columns, upload the file to a customer enrichment tool, and let it score every customer against identity signals in one batch. Instead of enriching one order at a time as it arrives, you run your entire back catalog, often thousands of orders, through the same matching and scoring engine at once. The result is a ranked list of who your past customers really are: founders, executives, investors, influencers, press, creators, and affluent buyers who already paid you money and slipped past unnoticed.

This matters because real-time enrichment only starts working the day you install it. Everything before that, every order you have ever shipped, sits frozen in your Shopify admin as a name, an email, and an address with no context attached. A bulk CSV workflow is how you go back and mine that history. For a store with two or three years of orders, that back catalog is usually where the highest-value discoveries live, because your most loyal and most notable customers have had the most time to buy. This guide walks through the full workflow: exporting the right data, cleaning it, mapping fields, submitting the batch, and acting on the results.

Why Historical Enrichment Is Worth the Effort

Most merchants think of customer enrichment as something that happens going forward. An order comes in, a tool checks the email and address, and you get an alert if the buyer looks important. That is valuable, but it ignores the larger opportunity sitting behind you. If you have been selling for even a year, you have already shipped to people you would have rolled out the red carpet for if you had known who they were at the time.

The logic is simple. A real-time tool can only enrich new orders, so on day one it has zero VIPs surfaced. A historical batch enriches your entire order history immediately, so on day one you might surface a meaningful group of high-value customers you can act on this week. The back catalog is frequently the single richest dataset a merchant owns and the one they least often touch. Bulk enrichment is the fastest way to turn that dormant data into a working list of relationships, which is the core idea behind who is actually buying from your store.

There is also a strategic reason. Knowing the answer reshapes how you plan campaigns, seeding, press outreach, and VIP programs. You cannot build those plans on customers you cannot see. A one-time historical pass gives you the baseline, and identity resolution then changes how you set DTC strategy from that point on. Real-time enrichment keeps the picture current.

Step One: Export Your Orders From Shopify

Shopify gives you a native CSV export for orders, and it is the right starting point. From your admin, go to Orders, then use the Export button. You can export all orders, a filtered date range, or the current page. For a full historical enrichment, export everything, or work in chunks by year if your store is very large.

The native orders export includes the fields that matter most for enrichment: customer name, email, billing address, and shipping address, along with order totals and dates. The shipping address is the field to protect, because VIP scoring relies primarily on the residence a customer ships to rather than billing details. Affluent neighborhoods, corporate addresses, and known building signals all come from the shipping line, which is exactly why the shipping address reveals so much. If your export is missing shipping columns because of how it was filtered, redo it.

A few practical notes. Shopify splits some exports into multiple files for very large stores, and it emails you a download link rather than producing the file instantly. Orders placed as guest checkouts still carry an email and a shipping address, so they enrich fine even without a saved customer record. And if you want lifetime spend per customer rather than per order, you may prefer the Customers export, since it aggregates totals by person. For VIP discovery, the orders export is usually the better source because it preserves every shipping address a customer has ever used.

Step Two: Clean the Data Before You Upload

Enrichment quality is downstream of data quality. A messy file produces fewer matches and more noise, so spend ten minutes cleaning before you submit. This is the step most people skip and then blame the tool for weak results. Good email and address data hygiene is the single biggest lever on match rate.

Start with the basics. Remove obvious test orders, internal staff emails, and your own address used for sample shipments. Deduplicate where the same person appears under slightly different email casing, since Customer@domain.com and customer@domain.com are the same human. Trim stray whitespace from email and address fields, which is common after a CSV round-trips through a spreadsheet. Make sure international addresses keep their country column, because a postal code alone is ambiguous across countries.

Pay special attention to the email column, since it is the strongest single signal. A corporate domain is often the fastest path to identifying a founder or executive, which is exactly the logic behind matching customers by email domain. If your export buries emails inside a combined contact field, split them into their own clean column. Flag invalid or malformed addresses rather than deleting them, so you know what was skipped versus what was genuinely unmatched.

One thing to resist: do not strip out free-mail addresses like Gmail or Outlook before uploading. It is tempting to assume a Gmail buyer is not a VIP, but that is wrong. Plenty of founders, investors, and creators use personal email, and the shipping address plus spend pattern still carries them. Let the enrichment layer decide. Your job in cleaning is to remove genuine junk, not to pre-judge who is interesting.

Step Three: Map Your Columns Correctly

When you upload the CSV, the tool needs to know which column is the email, which is the shipping address, which is the order total, and so on. Shopify exports use consistent header names, so this is usually straightforward, but careful mapping prevents silent failures where an entire column gets ignored.

The fields that drive scoring are email, shipping address (street, city, state or region, postal code, country), customer name, and per-order or lifetime spend. Map each one explicitly. If your file separates first and last name, map both. If shipping is split across several columns, map every part, because a partial address weakens affluent-zip matching and corporate-address detection.

The free signal layer, which costs nothing per lookup, runs on three of these mapped inputs: email-domain matching, spend analysis, and affluent-zip matching. That means even before any paid enrichment, a well-mapped file produces a useful first pass at no per-record cost. Paid enrichment then builds full profiles on the records that look promising, at a flat rate per enrichment, so mapping spend correctly also helps the tool prioritize where paid lookups are worth it. The same idea applies to handling the same buyer across multiple emails and addresses, covered in customer identity deduplication.

Step Four: Submit the Batch and Understand the Output

With a clean, mapped file, you submit the batch and the engine processes every row. Each customer is checked against the available identity signals: corporate email domains, social profiles, affluent zip codes, and spend and lifetime-value patterns. Every customer gets a score, and the ones that clear your threshold get surfaced as VIPs with the reason attached, so you see not just that someone is notable but why.

The output is a ranked list, not a wall of raw data. You can sort by score, filter by VIP type, and see which signal drove each match. A customer flagged on a corporate domain reads differently from one flagged on an affluent residential address, and both read differently from one flagged on a verified social profile. That context is what makes the list actionable rather than just interesting. The same scoring logic that powers SonarID's real-time alerts runs the batch, so a historical VIP and a brand-new VIP are graded on the same scale.

Expect a meaningful share of rows to come back without a strong identity match, and that is normal. Not every customer is a founder or an influencer, and a clean unmatched result is a valid answer. The value is concentrated at the top of the ranking. A batch of several thousand historical orders might surface a few dozen genuine VIPs, and those few dozen relationships are the entire point of running the import.

Cost, Caps, and Batch Sizing

Bulk enrichment has a cost structure you should understand before you upload ten thousand rows. The free signal layer, email-domain matching plus spend analysis plus affluent-zip matching, carries no per-lookup cost, so a large file can get a useful first pass for free. Paid enrichment, which builds full profiles, is billed at a flat rate per enrichment, currently five cents each on SonarID. That flat rate is the number to plan around, because it scales linearly with how many records you choose to fully enrich.

Every plan carries a concrete enrichment cap, so a historical batch draws down against your monthly pool rather than running unbounded. The $69 Starter and $249 Pro plans include defined credit pools sized for typical real-time volume, and a large one-time historical import may exceed a single month's pool. The practical move is to let the free layer rank everything first, then spend paid enrichments on the high-scoring records rather than blanket-enriching every row. You get the VIPs without burning credits on customers who already scored low on the free signals. If you want to put numbers to it, work through cost per VIP and payback: you are paying cents to surface relationships worth far more, and the historical batch is where that ratio is most favorable.

If your back catalog is very large, chunk it. Submit by year or by quarter, review each batch, and act on the top results before moving to the next chunk. Chunking also keeps the work manageable, since acting on forty surfaced VIPs is a real task and you do not want four hundred landing at once with no plan to reach them.

What to Do With the Results

A ranked list of historical VIPs is only valuable if you act on it. The first move is enrichment-aware segmentation. Tag the surfaced customers in Shopify by VIP type, founder, investor, influencer, press, affluent buyer, so the rest of your stack can use the labels. From there you can sync those segments into Klaviyo for tailored flows, push them to your CRM, or hand them to whoever owns partnerships and PR.

The second move is outreach, done carefully. A historical VIP has already bought from you, sometimes more than once, which is a warmer starting point than a cold prospect. A short, genuine note that acknowledges them as a customer first and a notable person second tends to land well, the approach laid out in how to reach out to high-value customers without being creepy. Resist the urge to blast the whole list with a templated pitch. These are relationships, and the discovery you just ran is what makes personalized outreach possible at all.

The third move is to turn the one-time batch into an ongoing system. Historical enrichment gives you the backlog. Real-time VIP order alerts on every new order keep the list growing without another manual export. Run the bulk import once to clear the backlog, then let real-time scoring handle everything from that point forward. That combination, a historical sweep plus live monitoring, means you never again ship to a VIP without knowing who they are.

Common Pitfalls to Avoid

A few mistakes recur often enough to call out. Uploading a file with the shipping address missing is the most damaging, because it strips out the strongest VIP signal and leaves the engine working off email alone. Pre-filtering free-mail addresses, as noted earlier, quietly discards real VIPs. Skipping deduplication inflates your counts and wastes paid enrichments on the same person twice. And blanket-enriching every single row, rather than letting the free layer rank first, burns credits on customers who were never going to score.

The last pitfall is treating the historical batch as a one-and-done curiosity rather than the start of a workflow. The export is the easy part. The value comes from acting on the results and then keeping the system live so the back catalog never goes stale again. Treated that way, a single afternoon of CSV work can surface relationships that pay back for years.

Frequently asked questions

How do I export my Shopify orders to a CSV for enrichment?

In your Shopify admin go to Orders, click Export, choose all orders or a date range, and download the emailed CSV file, which includes email, name, billing, and shipping address fields.

How many historical orders can I enrich at once?

There is no fixed row limit on the file itself, but paid full-profile enrichments draw against your plan's enrichment cap, so very large back catalogs are best processed in chunks by year or quarter.

Does bulk enrichment cost more than real-time enrichment?

No, the pricing is the same per record. The free signal layer of email-domain, spend, and affluent-zip matching costs nothing per lookup, and paid full-profile enrichment is a flat five cents each whether run live or in a batch.

Do I need to write code to bulk enrich past orders?

No. The workflow is a no-code CSV upload: export from Shopify, clean and map the columns in a spreadsheet, and submit the file. The matching and scoring run automatically.

Why is the shipping address so important in the CSV?

VIP scoring relies primarily on the residence a customer ships to rather than billing, because affluent zip codes and corporate addresses are strong identity signals. A file missing shipping columns produces far weaker results.

Should I remove Gmail and other free-mail addresses before uploading?

No. Many founders, investors, and creators use personal email, and their shipping address plus spend pattern still identifies them. Let the enrichment layer decide rather than pre-judging by email provider.

Ready to know who is buying from you?

Start identifying VIP customers, influencers, and notable figures in your order stream — automatically.

Start detecting VIPs
End
DH
Written by
Dennis Hegstad
Founder, sonarID