Oberlo was shut down by Shopify in June 2022 and is no longer available. To build a V0-powered dropshipping app, use Spocket or DSers as modern alternatives — both offer REST APIs you can connect to Next.js API routes. This guide covers migrating from Oberlo and building a dropshipping integration with Spocket using V0 by Vercel.
Building a Dropshipping Storefront with V0: Oberlo Alternatives in 2024
Oberlo was the most popular dropshipping app for Shopify, making it easy to import products from AliExpress suppliers into a Shopify store. When Shopify acquired Oberlo and subsequently shut it down in June 2022, the dropshipping community moved to two primary alternatives: DSers (the official Shopify-recommended replacement, focused on AliExpress) and Spocket (which curates US and EU-based suppliers for faster shipping). Both offer API access for building custom integrations with non-Shopify storefronts.
For a V0-generated Next.js storefront, the integration pattern works differently from Oberlo's Shopify-native approach. You generate a modern e-commerce UI with V0, create Next.js API routes that connect to your chosen dropshipping platform's API, and deploy to Vercel. Product catalog data flows from the dropshipping supplier through your API routes to the V0-generated frontend. When customers place orders, your app posts order details to the dropshipping platform's API for fulfillment routing to the supplier.
Spocket is particularly well-suited for custom Next.js integrations because it has a documented REST API and focuses on curated US/EU suppliers with faster shipping times (2-7 days vs. AliExpress's 2-4 weeks). This guide focuses on Spocket as the primary integration target, but the same pattern applies to DSers for AliExpress-focused dropshipping. Both platforms handle supplier communication, payment to suppliers, and tracking number updates — your V0 app handles the customer-facing storefront experience.
Integration method
Since Oberlo was discontinued in June 2022, dropshipping integrations for V0-generated Next.js apps use Spocket or DSers as modern alternatives. These platforms expose REST APIs you can call from Next.js API routes to fetch supplier product catalogs, sync inventory, and manage orders. Your API credentials are stored as server-only Vercel environment variables, and the V0-generated storefront UI fetches product data through your API routes.
Prerequisites
- A Spocket account at spocket.co — create a free account to access the supplier catalog and apply for API access
- Spocket API credentials — available through Spocket's partner or developer program; contact Spocket's business team at spocket.co for API access as their public API requires approval
- A clear understanding that Oberlo no longer exists — if you are migrating an existing Oberlo workflow, use DSers (the official Shopify-recommended replacement) for AliExpress products or Spocket for US/EU supplier products
- A V0 account at v0.dev and a Vercel account for deploying the Next.js storefront
- A payment processor configured for customer payments — Stripe is the standard choice for custom Next.js storefronts since Oberlo alternatives handle supplier payments separately from customer payments
Step-by-step guide
Understand the Oberlo Migration Landscape and Choose an Alternative
Understand the Oberlo Migration Landscape and Choose an Alternative
Before building your V0 dropshipping integration, it's important to understand why Oberlo was discontinued and which modern alternative best fits your use case. Shopify shut down Oberlo on June 15, 2022, after acquiring it and deciding to consolidate dropshipping functionality. The official replacement for existing Oberlo users migrating within Shopify is DSers (dsers.com), which connects to AliExpress suppliers and maintains similar import and order management workflows. However, DSers is designed primarily for Shopify stores, and its API access for custom Next.js storefronts is limited. For custom Next.js storefront integrations, Spocket is the stronger choice — it has a documented API, focuses on vetted US and EU suppliers with faster shipping times, and provides profit margin calculations and branded invoicing features. Printful is another alternative if your focus is print-on-demand products (custom t-shirts, mugs, phone cases) rather than general dropshipping. For AliExpress-specific dropshipping outside of Shopify, the AliExpress Affiliate API and third-party tools like AutoDS are alternatives. For your V0 project, decide first whether you want curated US/EU suppliers (Spocket), AliExpress products (DSers or AutoDS), or print-on-demand (Printful), then build the corresponding API route integration. This guide proceeds with Spocket as the primary integration target, but the Next.js API route pattern is identical across all three alternatives.
Create an onboarding screen for a dropshipping platform comparison. Show three cards side by side: Spocket (US/EU suppliers, 2-7 day shipping, API available, curated products), DSers (AliExpress suppliers, 15-30 day shipping, Shopify native, massive catalog), and Printful (Print-on-demand, custom products, no inventory). Each card has a platform logo placeholder, key features as bullet points, and a 'Learn More' button. Add a recommendation banner: 'For custom Next.js storefronts, we recommend Spocket for its API access and fast shipping times.' Clean comparison card design.
Paste this in V0 chat
Pro tip: If you had an Oberlo store and are migrating, DSers provides an official import tool at dsers.com/oberlo-migration that can import your existing product catalog and supplier relationships — use this first before building a new custom integration.
Expected result: A comparison screen helps users choose between Spocket, DSers, and Printful based on their dropshipping needs. The recommendation banner clearly guides V0 developers toward Spocket for custom storefronts.
Generate the Dropshipping Storefront UI with V0
Generate the Dropshipping Storefront UI with V0
Open V0 at v0.dev and describe the dropshipping storefront or admin dashboard you want to build. The most valuable V0-generated components for a dropshipping store are the product import dashboard (for browsing the supplier catalog and selecting products to sell), the customer-facing product listing page (showing your curated products at retail prices), and the order management dashboard (for tracking fulfillment). For the product import dashboard, describe an interface where you can browse supplier products with profit margin calculations displayed prominently — this is the core workflow that Oberlo made visual and approachable. For the customer storefront, describe a clean e-commerce layout that could apply to any product category. V0's strength is generating polished product cards, checkout buttons, and category navigation that look professional without custom design work. The dropshipping workflow requires your UI to show supplier-specific metadata that regular storefronts don't need: cost price (what you pay the supplier), retail price (what the customer pays), profit margin, shipping time estimate, supplier country, and supplier rating. Ask V0 to include these fields in the product import card UI specifically, since this is internal-facing and can show more business data than the customer-facing store. After generating, push to GitHub via V0's Git panel.
Build a supplier product card component for a dropshipping import dashboard. Card shows: product image (16:9 ratio), product name (2-line truncated), supplier name with country flag emoji, cost price (what I pay), retail price (suggested), profit margin as '${amount} (${percent}%)' in green, estimated delivery time, stock count, supplier rating (1-5 stars), and two buttons: 'Preview' (outline) and 'Import to Store' (solid blue). If the product is already imported, replace buttons with an 'Imported ✓' badge. The card should have a hover state with a shadow. Export as SupplierProductCard component.
Paste this in V0 chat
Pro tip: Ask V0 to generate a profit margin calculator widget separately from the product cards — this lets store owners set their desired margin percentage and see the resulting retail price before importing products, which is one of the most-used features in Oberlo-style tools.
Expected result: A SupplierProductCard component renders in V0's preview showing supplier product data with cost price, retail price, profit margin calculation, shipping time, and Import to Store button with appropriate state management.
Create the Spocket Product API Route
Create the Spocket Product API Route
Create the Next.js API route that fetches Spocket supplier products and returns them to your V0-generated storefront. The Spocket API uses OAuth 2.0 or API key authentication depending on your access level — contact Spocket's partner team for API documentation and credentials since they are not publicly listed on their website. Once you have API access, the core endpoints you'll use are product search (to browse and filter the supplier catalog), product details (to get full specs and images), and import list management (to track which products you've added to your store). The product response from Spocket includes cost price (what Spocket charges you as the retailer), suggested retail price, supplier information, shipping times per destination country, and inventory levels. Your API route normalizes this data and calculates profit margin before returning it to the frontend. For the customer-facing storefront, your product data comes from your own database (where you've stored imported products with your custom descriptions and retail prices), not directly from Spocket on every request — this allows you to customize product titles and descriptions without changing Spocket's catalog data. Order fulfillment flows the other direction: when a customer places an order on your storefront, your order API route posts to Spocket's order creation endpoint to initiate fulfillment with the supplier.
1// app/api/spocket/products/route.ts2import { NextRequest, NextResponse } from 'next/server';34const SPOCKET_API_BASE = 'https://app.spocket.co/api';56interface SpocketProduct {7 id: string;8 name: string;9 description?: string;10 images: Array<{ src: string }>;11 variants: Array<{12 id: string;13 price: number; // Cost price (what you pay)14 compare_at_price?: number; // Suggested retail15 inventory_quantity: number;16 sku: string;17 }>;18 supplier: {19 name: string;20 country: string;21 rating: number;22 };23 shipping_time?: string;24 processing_time?: string;25}2627export async function GET(request: NextRequest) {28 const apiKey = process.env.SPOCKET_API_KEY;2930 if (!apiKey) {31 return NextResponse.json(32 { error: 'Spocket API key not configured' },33 { status: 500 }34 );35 }3637 const { searchParams } = new URL(request.url);38 const page = parseInt(searchParams.get('page') ?? '1', 10);39 const perPage = parseInt(searchParams.get('perPage') ?? '24', 10);40 const category = searchParams.get('category') ?? '';41 const query = searchParams.get('q') ?? '';4243 const params = new URLSearchParams({44 page: page.toString(),45 per_page: perPage.toString(),46 });4748 if (category) params.set('category', category);49 if (query) params.set('search', query);5051 try {52 const response = await fetch(53 `${SPOCKET_API_BASE}/products?${params.toString()}`,54 {55 headers: {56 Authorization: `Bearer ${apiKey}`,57 'Content-Type': 'application/json',58 Accept: 'application/json',59 },60 }61 );6263 if (!response.ok) {64 throw new Error(`Spocket API error: ${response.status}`);65 }6667 const data = await response.json() as {68 products: SpocketProduct[];69 meta: { total: number; current_page: number };70 };7172 const products = (data.products ?? []).map((product) => {73 const variant = product.variants?.[0];74 const costPrice = variant?.price ?? 0;75 const retailPrice = variant?.compare_at_price ?? costPrice * 2;76 const profitMargin = retailPrice - costPrice;77 const profitPercent = retailPrice > 0 ? Math.round((profitMargin / retailPrice) * 100) : 0;7879 return {80 id: product.id,81 name: product.name,82 imageUrl: product.images?.[0]?.src ?? '',83 costPrice,84 retailPrice,85 profitMargin,86 profitPercent,87 inStock: (variant?.inventory_quantity ?? 0) > 0,88 stockQty: variant?.inventory_quantity ?? 0,89 supplierName: product.supplier?.name ?? '',90 supplierCountry: product.supplier?.country ?? '',91 supplierRating: product.supplier?.rating ?? 0,92 shippingTime: product.shipping_time ?? '7-14 days',93 processingTime: product.processing_time ?? '1-3 days',94 };95 });9697 return NextResponse.json({98 products,99 total: data.meta?.total ?? products.length,100 page,101 });102 } catch (error) {103 const message = error instanceof Error ? error.message : 'Unknown error';104 console.error('Spocket API error:', message);105 return NextResponse.json(106 { error: 'Failed to fetch Spocket products', details: message },107 { status: 500 }108 );109 }110}Pro tip: Cache Spocket product responses for 15-30 minutes using Next.js fetch revalidation — supplier inventory changes occasionally but not minute-to-minute. This reduces API calls while keeping product availability reasonably current.
Expected result: GET /api/spocket/products returns normalized supplier product data including cost price, calculated retail price, profit margin, supplier details, and shipping time estimates from Spocket's catalog.
Configure Environment Variables and Deploy to Vercel
Configure Environment Variables and Deploy to Vercel
Push your code to GitHub and configure Spocket API credentials in Vercel. Open the Vercel Dashboard, select your project, and go to Settings → Environment Variables. Add SPOCKET_API_KEY with your Spocket API access token. If Spocket uses OAuth 2.0 instead of a static API key, add SPOCKET_CLIENT_ID and SPOCKET_CLIENT_SECRET and implement the token exchange in a utility function. Neither variable should have the NEXT_PUBLIC_ prefix — all Spocket API calls should go through your server-side Next.js routes. If you are also integrating Stripe for customer payments, add your Stripe keys at the same time (STRIPE_SECRET_KEY and NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY). Set all environment variables for Production and Preview environments, save, and trigger a redeployment. After deployment, test the product import dashboard by browsing the Spocket catalog and confirming that product data loads correctly with pricing and supplier information. For your customer-facing storefront, verify that imported products display with your custom retail pricing rather than Spocket's wholesale cost price. If you need help structuring the full order flow from customer purchase through Spocket fulfillment, RapidDev's team has experience building custom dropshipping integrations with API-first platforms.
Pro tip: Keep your cost prices (what you pay Spocket) server-side only — never expose supplier cost prices in your public API responses, since customers seeing your wholesale costs undermines your pricing strategy and profit margins.
Expected result: The Vercel deployment succeeds and the Spocket product catalog loads in the import dashboard. Customer-facing pages show retail prices without exposing supplier cost data.
Common use cases
Dropshipping Product Import Dashboard
An admin dashboard where you browse Spocket's supplier catalog, preview products with profit margin calculations, and add selected products to your storefront's import list. The dashboard shows supplier ratings, shipping times, and available inventory so you can curate a high-quality product catalog.
Build a product import dashboard for a dropshipping store. Left sidebar has category filters (Electronics, Home & Garden, Clothing, Beauty). Main area shows supplier products in a grid. Each product card: product image, product name, supplier country flag, retail price, your cost price, profit margin percentage in green, shipping time estimate ('Ships in 3-5 days'), supplier rating (stars), and an 'Import to Store' button. Products already imported show a 'Imported' badge. Include a search bar at the top and a 'Profit Margin' range filter. Use a clean admin dashboard style.
Copy this prompt to try it in V0
Customer-Facing Storefront with Dropshipping Products
A public e-commerce storefront built with V0 that displays curated dropshipping products from Spocket with your retail pricing, custom product descriptions, and branded presentation. Customers see a polished store experience while product fulfillment runs through Spocket's supplier network.
Create a modern e-commerce storefront homepage. Hero section with headline 'Premium Products, Fast Delivery' and a Shop Now button. Below: a category showcase row with 6 category icons (Electronics, Fashion, Home, Beauty, Sports, Toys). Then a 'Featured Products' section with 4 product cards each showing: product image, product name, retail price, a 'Free Shipping' badge, star rating, and 'Add to Cart' button. Clean, modern e-commerce design with white background and teal accents.
Copy this prompt to try it in V0
Order Fulfillment Tracker
An internal dashboard showing pending orders that need to be routed to Spocket suppliers, with one-click order forwarding, tracking number capture, and shipment status updates. Reduces the manual work of managing dropshipping order fulfillment.
Design an order management dashboard. Top KPI cards: 'Pending Fulfillment', 'Awaiting Tracking', 'Shipped This Week'. Below: an orders table with columns for Order ID, Customer Name, Products (with count), Order Date, Total, Status badge (Pending/Forwarded/Shipped/Delivered), and 'Forward to Spocket' action button. Rows with Pending status highlighted in yellow. Clicking 'Forward to Spocket' changes status to Forwarded. Show a timeline modal when clicking an order row showing order steps with dates. Professional admin table design.
Copy this prompt to try it in V0
Troubleshooting
Spocket API returns 401 even with the correct API key
Cause: Spocket's API access requires approval and activation — a valid account login doesn't automatically grant API access. The API key may not yet be activated or may have expired.
Solution: Contact Spocket's partner team to confirm your API access is active. Verify the API key is correctly copied without extra spaces or line breaks. If Spocket uses OAuth 2.0 for your access tier, you need to exchange client credentials for a bearer token rather than using a static key — check your Spocket developer documentation for the correct authentication method.
Product images fail to load from Spocket's CDN
Cause: Spocket product images are served from Spocket's own CDN — if you're trying to use Next.js Image optimization, the domain must be whitelisted in next.config.js.
Solution: Add Spocket's image CDN domain to the images.remotePatterns array in next.config.js. The domain is typically cdn.spocket.co or a similar Spocket-controlled CDN hostname. Check the actual image URLs returned by the API to find the correct domain.
1// next.config.js2module.exports = {3 images: {4 remotePatterns: [5 { protocol: 'https', hostname: 'cdn.spocket.co' },6 { protocol: 'https', hostname: '*.spocket.co' },7 ],8 },9};Profit margin calculation shows negative values for some products
Cause: Spocket's compare_at_price (suggested retail) may be lower than the actual cost price for some products, or the cost price includes shipping and the compare_at_price does not.
Solution: Add a floor to the profit margin calculation — if the calculated margin is negative or below your minimum threshold, flag the product visually rather than showing a negative number. Also check whether you need to add estimated shipping costs to the cost price for an accurate margin calculation.
1const profitMargin = Math.max(0, retailPrice - costPrice);2const profitPercent = retailPrice > 0 ? Math.round((profitMargin / retailPrice) * 100) : 0;3const isBelowMinMargin = profitPercent < 20; // Flag products below 20% marginBest practices
- Never expose Spocket wholesale cost prices in public API responses — serve only retail prices to customer-facing pages and keep cost data in server-side API routes only
- Store imported product data in your own database (Supabase or PostgreSQL) rather than fetching from Spocket on every customer request — this allows product description customization and reduces Spocket API dependency
- Set a minimum profit margin threshold (e.g., 20%) and visually flag products below this threshold in your import dashboard so you don't accidentally sell at a loss
- Always include supplier shipping time estimates in product listings — customers expect to see shipping timelines for dropshipping products, and transparency reduces refund requests
- Cache Spocket supplier product responses for 15-30 minutes since inventory changes infrequently — this reduces API quota usage without showing meaningfully outdated stock information
- Implement order forwarding automation so customer orders are automatically sent to Spocket for fulfillment rather than requiring manual action for each order
- Keep your Spocket API key without the NEXT_PUBLIC_ prefix — this key provides access to your supplier relationships and must remain server-side
Alternatives
Spocket is the recommended modern replacement for Oberlo for custom Next.js storefronts — it has a REST API, focuses on US/EU suppliers with fast shipping, and provides branded invoicing for professional dropshipping.
Use Printful instead of Oberlo-style dropshipping if your products are print-on-demand items like custom t-shirts, mugs, and accessories — Printful handles production and shipping for custom-designed products with a well-documented API.
Use the AliExpress Affiliate API if you specifically want access to AliExpress's massive product catalog for dropshipping — this is the closest equivalent to Oberlo's core product source outside of the DSers platform.
Frequently asked questions
What happened to Oberlo and why was it shut down?
Shopify acquired Oberlo and then shut it down on June 15, 2022. Shopify's official reasoning was to consolidate their dropshipping product strategy. The official replacement within Shopify is DSers, which Shopify partnered with as an alternative. All existing Oberlo stores were migrated to DSers, and Oberlo's import tool, Chrome extension, and app were all deactivated. If you had an Oberlo store, your product listings remain in your Shopify store but order management must now go through DSers.
Can I use DSers with a custom Next.js storefront instead of Shopify?
DSers is designed primarily as a Shopify app and does not offer a public REST API for custom storefronts outside of Shopify. To use AliExpress products in a custom Next.js app, you would need to use the AliExpress Affiliate API directly or a third-party service like AutoDS that provides API access for non-Shopify storefronts. For a non-Shopify custom storefront, Spocket provides better API access and documentation.
How is Spocket different from Oberlo?
Oberlo focused almost exclusively on AliExpress products with long shipping times from China. Spocket curates suppliers primarily from the US, Europe, Canada, and Australia, resulting in shipping times of 2-7 business days rather than 2-4 weeks. Spocket also provides branded invoicing, product customization, and quality vetting of suppliers. The trade-off is that Spocket's product catalog is smaller than AliExpress's, and products cost slightly more since they come from closer suppliers.
Do I need a paid Spocket plan to access the API?
Spocket's API access is available to partners and merchants on paid plans — the free plan does not include API access. Contact Spocket's partner team at spocket.co/partners to discuss API access for your integration. API credentials are not publicly self-serve and require a partnership agreement to establish your use case and expected API usage.
How do I handle order fulfillment from my V0 storefront to Spocket?
When a customer places an order on your V0 storefront, create a Next.js server action or API route that calls Spocket's order creation endpoint with the customer's shipping address and the product SKUs they ordered. Spocket then routes the order to the appropriate supplier and provides tracking information once shipped. Your app should store the Spocket order ID alongside the customer's order record so you can check fulfillment status and update the customer's tracking number.
Can V0 generate the product import workflow automatically?
V0 can generate the UI components for a product import workflow — the supplier catalog browser, import confirmation modal, and import list management page. However, the actual API connection to Spocket's catalog and the import logic require manual implementation in Next.js API routes as described in this guide. Use V0 to build the visual interface and follow this guide to wire up the data fetching and import operations.
Talk to an Expert
Our team has built 600+ apps. Get personalized help with your project.
Book a free consultation