# E-Commerce Migration Risk Auditor (`trovevault/ecommerce-migration-risk-auditor`) Actor

Audits storefront URLs for migration complexity, source platform, visible integrations, replacement workstreams, discovery questions, and risk fields.

- **URL**: https://apify.com/trovevault/ecommerce-migration-risk-auditor.md
- **Developed by:** [Trove Vault](https://apify.com/trovevault) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.55 / 1,000 stores

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## E-Commerce Migration Risk Auditor

E-Commerce Migration Risk Auditor reviews a public online store and turns observable storefront signals into a migration complexity report. Give it one or more store URLs plus a target platform such as Shopify, BigCommerce, WooCommerce, Magento / Adobe Commerce, or Salesforce Commerce Cloud. The actor returns `migrationComplexityScore`, `sourcePlatformDetected`, `detectedIntegrations`, `commerceSignals`, `migrationRisks`, `recommendedWorkstreams`, and `manualDiscoveryQuestions`.

Use it before quoting, scoping, or planning an e-commerce platform migration. It helps agencies, consultants, and commerce teams run a fast public assessment before they receive admin access, app exports, analytics access, or catalog files.

This is a public-signal migration auditor. It does not log in, read private app lists, access order/customer data, or guarantee that every plugin or custom integration is visible from the storefront.

### Why use this actor

Platform migrations are often underestimated because hidden work lives in apps, checkout rules, analytics tags, product data, redirects, policies, and custom storefront behavior. A simple technology lookup is not enough to quote or prioritize a migration.

Use this actor to answer how complex a migration looks, which platform is likely in use, which visible tools need replacement, and what discovery questions should be asked before a fixed quote.

### What it produces

Each store produces one dataset row with platform confidence, `migrationComplexityScore`, `complexityLevel`, `readinessLevel`, visible integrations, integration categories, commerce signals, migration risks, recommended workstreams, discovery questions, component risk fields, and compact observable evidence.

### Use cases

**Commerce agencies** can pre-qualify prospects and avoid under-scoping migrations that include subscriptions, review apps, complex tracking, checkout replacement, or large URL inventories.

**Platform consultants** can create a repeatable discovery checklist before asking a client for admin access.

**Merchants and e-commerce teams** can compare stores in a portfolio and decide which migrations need deeper discovery first.

**SEO and analytics teams** can flag redirect, structured data, product URL, and tracking risks before launch planning starts.

### How to use

1. Add one or more storefront URLs in `storeUrls`.
2. Choose the likely `targetPlatform`.
3. Leave `knownSourcePlatform` on `auto` unless you already know the current platform.
4. Run the actor and review the score, risk fields, workstreams, and discovery questions.

### Input

```json
{
  "storeUrls": [
    { "url": "https://webscraper.io/test-sites/e-commerce/static" }
  ],
  "targetPlatform": "shopify",
  "knownSourcePlatform": "auto"
}
```

| Field | Required | Description |
| --- | --- | --- |
| `storeUrls` | Yes | Public e-commerce store homepages or major storefront entry points. Each store produces one output row. |
| `targetPlatform` | No | Target migration platform. Defaults to `shopify`. |
| `knownSourcePlatform` | No | Optional current platform if you already know it. Use `auto` for public detection. |
| `proxyConfiguration` | No | Optional Apify Proxy settings for storefronts that block datacenter traffic or show regional pages. |
| `datasetId` | No | Optional existing Apify dataset ID. Results are appended there as well as to the default dataset. |
| `runId` | No | Optional workflow, client, or CRM ID copied into output rows. |

### Output example

```json
{
  "storeUrl": "https://example-store.com/",
  "finalUrl": "https://example-store.com/",
  "domain": "example-store.com",
  "sourcePlatformDetected": "WooCommerce",
  "sourcePlatformConfidence": "high",
  "targetPlatform": "shopify",
  "migrationComplexityScore": 74,
  "complexityLevel": "high",
  "readinessLevel": "scope_before_quote",
  "estimatedDiscoveryEffort": "multi-workstream discovery before fixed scope",
  "detectedIntegrations": ["Klaviyo", "Stripe", "Google Tag Manager", "Meta Pixel", "Yotpo"],
  "integrationCategories": ["email_crm", "payments", "analytics_ads", "reviews_loyalty"],
  "commerceSignals": [
    "product structured data visible",
    "product URLs visible",
    "category or collection URLs visible",
    "cart or checkout affordance visible",
    "policy/support pages visible",
    "sitemap reachable"
  ],
  "migrationRisks": [
    "Public evidence points to WooCommerce; migration to Shopify should include platform-specific data mapping.",
    "Several third-party tools are visible and should be mapped before migration.",
    "Checkout and payment behavior needs replacement testing on the target platform.",
    "Analytics and advertising tags must be remapped to preserve campaign measurement."
  ],
  "recommendedWorkstreams": ["Platform data model and URL redirect mapping", "Catalog, variants, pricing, categories, images, and product schema migration", "Checkout, payments, tax, shipping, and transactional email replacement"],
  "manualDiscoveryQuestions": ["Confirm total SKUs, variant count, bundles, gift cards, subscriptions, and custom product options.", "Export the full app/plugin list and classify each item as replace, rebuild, retire, or native target-platform feature."],
  "seoRedirectRisk": "high",
  "checkoutReplacementRisk": "high",
  "catalogMigrationRisk": "high",
  "analyticsTrackingRisk": "high",
  "policyContentRisk": "low",
  "auditedAt": "2026-08-10T12:00:00.000Z"
}
```

### API usage

```bash
curl -X POST "https://api.apify.com/v2/acts/trovevault~ecommerce-migration-risk-auditor/runs" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "storeUrls": [
      { "url": "https://webscraper.io/test-sites/e-commerce/static" }
    ],
    "targetPlatform": "shopify",
    "knownSourcePlatform": "auto"
  }'
```

Fetch dataset rows:

```bash
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?clean=true" \
  -H "Authorization: Bearer $APIFY_TOKEN"
```

### How scoring works

The actor uses public observable evidence: platform fingerprints, third-party scripts, product/category URLs, prices, checkout affordances, policy links, structured data, default `robots.txt`, and default `sitemap.xml`. The score is heuristic and designed for migration triage.

### Limitations

- The actor checks public storefront evidence only.
- It does not log in, access admin panels, export app lists, read order/customer data, complete checkouts, or bypass access controls.
- It cannot guarantee a complete list of plugins, private apps, server-side integrations, ERPs, PIMs, tax tools, shipping rules, or custom middleware.
- Some sites hide scripts behind consent banners, personalization, geo-routing, bot protection, or client-side rendering.
- Results are for planning and triage, not legal, financial, or implementation certainty.

### Troubleshooting

| Problem | What to try |
| --- | --- |
| Platform is `Custom or unknown` | Provide `knownSourcePlatform` if you already know it, or rerun with proxy if the storefront blocked the request. |
| Few integrations are detected | Public scripts may be hidden by consent, tag managers, regional rendering, or server-side integrations. Ask for an app/plugin export. |
| Score seems too low | Confirm private apps, checkout rules, subscriptions, customer groups, and custom product options with the merchant. |
| Store blocks requests | Try Apify Proxy and use the public storefront homepage rather than an admin or checkout-only URL. |

### FAQ

#### Is this a complete migration estimate?

No. It is a first-pass public assessment. Use it to decide what to verify next, not to replace admin access, catalog exports, analytics review, or stakeholder discovery.

#### Can I schedule this?

Yes. Use Apify schedules and optionally provide `datasetId` to append repeated assessments into one dataset.

#### Is scraping these stores legal?

The actor visits public pages and reports observable technical and content signals. You are responsible for ensuring your use complies with applicable law, website terms, and internal policies.

### Related actors

This pairs well with product scrapers, SEO metadata scrapers, AI commerce readiness auditors, and GDPR website compliance auditors.

### Changelog

- `0.1.0`: Initial public-signal migration risk auditor with platform detection, integration categories, component risk fields, workstreams, discovery questions, `datasetId`, and `runId` support.

### Support

Open an issue on the actor page with the storefront URL, target platform, expected source platform, run ID, and the dataset row that looked wrong.

# Actor input Schema

## `storeUrls` (type: `array`):

Public e-commerce store URLs to audit for migration complexity and readiness signals.

## `targetPlatform` (type: `string`):

Platform the store is being assessed against. Choose the likely target of the migration plan.

## `knownSourcePlatform` (type: `string`):

Optional. Use this only when you already know the current platform. Otherwise the Actor infers it from public signals.

## `proxyConfiguration` (type: `object`):

Optional Apify Proxy configuration for stores that block automated datacenter requests.

## `datasetId` (type: `string`):

Optional existing Apify dataset ID. When provided, results are appended there in addition to the default run dataset.

## `runId` (type: `string`):

Optional external workflow or client ID copied into output rows for downstream joins.

## Actor input object example

```json
{
  "storeUrls": [
    {
      "url": "https://webscraper.io/test-sites/e-commerce/static",
      "label": "demo e-commerce storefront"
    }
  ],
  "targetPlatform": "shopify",
  "knownSourcePlatform": "auto"
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "storeUrls": [
        {
            "url": "https://webscraper.io/test-sites/e-commerce/static",
            "label": "demo e-commerce storefront"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("trovevault/ecommerce-migration-risk-auditor").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "storeUrls": [{
            "url": "https://webscraper.io/test-sites/e-commerce/static",
            "label": "demo e-commerce storefront",
        }] }

# Run the Actor and wait for it to finish
run = client.actor("trovevault/ecommerce-migration-risk-auditor").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "storeUrls": [
    {
      "url": "https://webscraper.io/test-sites/e-commerce/static",
      "label": "demo e-commerce storefront"
    }
  ]
}' |
apify call trovevault/ecommerce-migration-risk-auditor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,trovevault/ecommerce-migration-risk-auditor"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/MhFmCJfYeK24K0rsb/builds/N43dJ2VhVE11581Mq/openapi.json
