Dev.to WebDev 🛠 Dev 👁 0 📖 2 min read

Review a Shopify or WooCommerce Export Locally Before Importing It into a CRM

Disclosure: ApiVault Labs publishes the Actor discussed here. This tutorial uses synthetic records, not a newly collected customer list. A store database is useful when it shortens a specific research job. For an ecomme

Disclosure: ApiVault Labs publishes the Actor discussed here. This tutorial uses synthetic records, not a newly collected customer list.

A store database is useful when it shortens a specific research job. For an ecommerce developer, that job might be finding ten stores in one country, checking their current storefronts, and deciding which businesses fit a service. Importing every downloaded row into a CRM skips those decisions.

Request a small, explicit sample

This configuration targets two source groups and requires a stored email. It was checked against production Input Schema 0.17.41 on 13 November 2026; the example was not run for this article.

{
  "workflow": "export",
  "dataSource": "warmed",
  "platforms": ["shopify_sites", "woocommerce_sites"],
  "country": ["US"],
  "hasEmail": true,
  "dedupeByDomain": true,
  "maxItems": 10,
  "outputPreset": "custom",
  "columns": ["Root Domain", "Company", "Emails", "Telephones", "Country", "eCommerce Platform"]
}

Source selection is not a current technology check. A returned row can have missing or historical technology information. The Actor's 73M+ headline describes overlapping indexed source records, not unique stores or available email contacts. Its published count of 73,945,411 rows dates to 8 November 2026; this tutorial did not recount the database.

Keep review candidates and exceptions separate

Download the completed Dataset as JSON. Keep that saved file locally. The following Python function selects records with an explicit stored Shopify or WooCommerce value, a usable hostname and a nonempty email field. It records exceptions instead of silently discarding them.

def review(rows):
    candidates, exceptions, seen = [], [], set()
    for row in rows:
        host = domain(row.get("Root Domain"))
        platform = str(row.get("eCommerce Platform") or "").strip()
        platforms = {p.strip().casefold() for p in platform.split(";")}
        email = str(row.get("Emails") or "").strip()
        if not host:
            reason = "invalid_domain"
        elif not platforms.intersection({"shopify", "woocommerce"}):
            reason = "no_stored_commerce_match"
        elif not email:
            reason = "no_stored_email"
        elif host in seen:
            reason = "duplicate_domain"
        else:
            reason = "check_current_website"
        result = {"domain": host, "reason": reason}
        if reason == "check_current_website":
            seen.add(host)
            candidates.append(result)
        else:
            exceptions.append(result)
    return candidates, exceptions

This excerpt depends on domain() from the complete runnable companion. The companion also writes CSV safely, quotes cells that could become spreadsheet formulas, rejects URLs containing credentials, and validates the input shape. The same decision order was checked with six synthetic records: two human-review candidates and four exceptions. These counts describe the example only.

Inspect before importing

Open each candidate's current website. Confirm the business, current platform evidence and relevance to your service. Record the check date and a concrete reason to keep or reject it. A stored email is neither a mailbox validation nor permission to contact someone. Empty phone data is unknown, not proof that no phone exists.

Read the run's SUMMARY before treating the export as complete. If more rows are needed, use the complete resumeInput from EXPORT_CONTINUATION. Reopening the same saved JSON file locally does not start another Actor run.

Published pricing checked for this article is $3 per 1,000 delivered records, plus the memory-based start event; platform usage is included. Check current pricing before running. Ten requested rows is a cap, not a promise of ten qualified prospects.

Start a small research sample with Shopify & WooCommerce Database.

📰 Read the original article on Dev.to WebDev

Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.