Skip to content

WooCommerce Setup — How to Build an Online Store with WordPress

DodaTech Updated 2026-06-27 19 min read

In this tutorial, you'll learn to set up WooCommerce on WordPress: installation, the setup wizard, configuring store settings, choosing a WooCommerce theme, and launching your first online store step by step.

What You'll Learn

  • What WooCommerce is and why it powers over 30% of all online stores
  • How to install WooCommerce from the WordPress plugin repository
  • How to run the setup wizard — store address, currency, product types, payment methods, shipping
  • How to navigate the WooCommerce dashboard (Orders, Coupons, Reports, Settings)
  • How to configure WooCommerce settings tabs: General, Products, Shipping, Payments
  • How to choose a WooCommerce-compatible theme (Storefront, Blocksy, Astra, Kadence)
  • How to set up required pages: Shop, Cart, Checkout, My Account
  • How to configure store currency, tax options, shipping zones, and payment gateways
  • How to set up PayPal and Stripe for payment processing
  • How to configure WooCommerce email notifications and store notices

Why It Matters

Building an online store from scratch requires custom development for product catalogs, shopping carts, checkout flows, payment processing, shipping calculations, and order management. WooCommerce handles all of this inside WordPress, saving months of development time. Over 5 million active stores use WooCommerce, and learning how to set it up correctly is the foundation skill for any WordPress e-commerce developer. A misconfigured store loses sales — wrong currency, broken checkout, missing payment methods. A properly configured store just works, and that starts with understanding the setup process.

Real-World Use

A craft business sells handmade soaps online. They need: a product catalog with categories, a shopping cart, secure checkout with PayPal and credit cards, shipping rates based on weight and destination, automatic tax calculation, order confirmation emails, and inventory tracking. Without WooCommerce, this would require a custom PHP application with payment gateway integrations, a database schema for orders, and a checkout flow. WooCommerce gives all of this out of the box. The business installs WooCommerce, runs the setup wizard, configures shipping zones, connects Stripe, and launches within hours.

Learning Path

flowchart LR
    A[Plugin Basics] --> B[Essential Plugins]
    B --> C[WooCommerce Setup]
    C --> D[Products & Inventory]
    D --> E[Payments, Shipping & Tax]
    E --> F[Order Management]
    C --> G[WooCommerce Themes]

    style C fill:#38bdf8,color:#0f172a,stroke-width:2px

What Is WooCommerce?

WooCommerce is a free, open-source e-commerce plugin for WordPress. It was acquired by Automattic (the company behind WordPress.com) in 2015 and has grown to power over 30% of all online stores globally.

Think of WordPress as a physical store building. Without WooCommerce, it's an empty space with walls and lighting. WooCommerce adds the shelves (product catalog), the checkout counter (cart and checkout), the cash register (payment processing), the back office (order management), and the inventory system (stock tracking). It transforms WordPress from a content management system into a complete e-commerce platform.

What WooCommerce Provides

  • Product management: Simple, variable, grouped, and external products
  • Shopping cart: Session-based cart with AJAX updates
  • Checkout: Multi-step checkout with address validation
  • Payment gateways: Built-in PayPal, Stripe, bank transfer, COD, check payments
  • Shipping: Zones, methods, classes, and free shipping thresholds
  • Tax: Automated rate calculation with multiple tax classes
  • Orders: Full order management with status tracking
  • Coupons: Discount codes with usage limits and conditions
  • Reports: Sales, stock, and customer analytics
  • Extensions: Thousands of free and premium add-ons
flowchart TD
    A[WordPress + WooCommerce] --> B[Product Catalog]
    A --> C[Shopping Cart]
    A --> D[Checkout Flow]
    A --> E[Order Management]
    A --> F[Customer Accounts]
    B --> G[Simple Products]
    B --> H[Variable Products]
    B --> I[Grouped Products]
    D --> J[Payment Gateways]
    D --> K[Shipping Calculation]
    D --> L[Tax Calculation]
    E --> M[Order Statuses]
    E --> N[Email Notifications]

Installing WooCommerce

Installing WooCommerce is the same as installing any WordPress plugin.

Step 1: Install from the Repository

  1. Go to Plugins > Add New in the WordPress admin menu.
  2. Search for "WooCommerce" in the search bar.
  3. The first result should be WooCommerce by Automattic with over 5 million active installations.
  4. Click Install Now.
  5. Wait for the installation to complete, then click Activate.
// WooCommerce registers itself with these constants
define('WC_VERSION', '9.0.0');
define('WC_PLUGIN_FILE', __FILE__);
define('WC_ABSPATH', dirname(WC_PLUGIN_FILE) . '/');

Step 2: Run the Setup Wizard

After activation, WooCommerce launches the setup wizard automatically. If it doesn't appear, go to WooCommerce > Home and look for the setup prompt.

The setup wizard walks you through six screens:

Setup Wizard — Store Details

The wizard asks for:

  • Store address: Your business location. This determines tax calculations, currency defaults, and shipping origin.
  • Country / Region: Where your business is legally registered.
  • Currency: The currency for all prices in your store. Choose carefully — changing currency later means updating every product price.

Setup Wizard — Product Types

WooCommerce asks what types of products you plan to sell. This configures default settings:

  • Physical products: Items that need shipping (books, clothing, furniture)
  • Digital / Downloads: Items delivered electronically (PDFs, software, music)
  • Variable products: Items with options (size, color, material)
  • Services / Bookings: Appointments or service-based products
// WooCommerce stores these preferences in wp_options
// The option key is 'woocommerce_default_country'
// Value example: 'US:CA' for United States, California
update_option('woocommerce_default_country', 'US:CA');

// Currency setting
update_option('woocommerce_currency', 'USD');

Setup Wizard — Payment Methods

Choose how you want to get paid. WooCommerce recommends enabling at least one:

  • PayPal: Most common globally. Redirects customers to PayPal to pay.
  • Stripe: Credit/debit card payments on your site.
  • Bank Transfer (BACS): Customers transfer money to your bank account manually.
  • Cash on Delivery: Customers pay when the product arrives.

Setup Wizard — Shipping

Configure how you'll ship products:

  • Flat rate: Single price for all shipping (e.g., $5 per order).
  • Free shipping: No charge, possibly with a minimum order amount.
  • Local pickup: Customer collects from your store.

WooCommerce suggests extensions based on your store type. You can skip these and add them later. Common recommendations include:

  • Jetpack (security and performance)
  • WooCommerce Subscriptions
  • WooCommerce Bookings
  • MailPoet (email marketing)
  • Facebook for WooCommerce

Step 3: After the Wizard

Once the wizard completes, WooCommerce creates several pages automatically:

  • Shop page: Displays all your products
  • Cart page: Shows items the customer has added
  • Checkout page: The payment and address form
  • My Account page: Login, registration, and order history

These pages are created with WooCommerce shortcodes. You can find them at Pages > All Pages.

// The shortcodes WooCommerce uses internally
// [woocommerce_cart] renders the cart page
// [woocommerce_checkout] renders checkout
// [woocommerce_my_account] renders account area
// [products] renders product listings

The WooCommerce Dashboard

After setup, a new WooCommerce menu appears in your WordPress admin sidebar. Let's understand each section.

WooCommerce > Home

This is the main dashboard. It shows:

  • Sales overview: Revenue graph for the current period
  • Reports summary: Total sales, orders, and averages
  • Store setup checklist: Remaining setup tasks
  • Recent orders: Latest orders with status

WooCommerce > Orders

Every completed purchase creates an order. The Orders screen shows:

  • Order number, date, customer name, status, and total
  • Statuses: Pending payment, Processing, On hold, Completed, Cancelled, Refunded, Failed
  • Click an order to see details: items, customer data, payment method, notes
// Programmatically create an order in WooCommerce
function create_test_order() {
    $order = wc_create_order();
    $order->add_product(wc_get_product(123), 2);
    $order->set_address(array(
        'first_name' => 'John',
        'last_name'  => 'Doe',
        'email'      => 'john@example.com',
        'address_1'  => '123 Main St',
        'city'       => 'New York',
        'state'      => 'NY',
        'postcode'   => '10001',
        'country'    => 'US',
    ), 'billing');
    $order->calculate_totals();
    $order->update_status('processing', 'Order placed via test');
    return $order->get_id();
}

WooCommerce > Coupons

Coupons let you offer discounts. Configure:

  • Discount type: Percentage, fixed cart discount, fixed product discount
  • Amount: The discount value
  • Usage limits: Per coupon, per user, minimum spend
  • Product restrictions: Apply to specific products or categories
  • Date range: Valid only during a promotion period

WooCommerce > Reports

Reports give you business intelligence:

  • Orders: Count and value over time
  • Customers: New vs returning, total customers
  • Stock: Low stock, out of stock, most popular products
  • Taxes: Collected tax by rate
  • Downloads: File download counts for digital products

WooCommerce Settings Tabs

All store configuration lives under WooCommerce > Settings. Each tab controls a different aspect of your store.

General Tab

Core store settings:

  • Store address: Used for tax calculation and shipping origin
  • Currency options: Currency symbol, position, thousand separator, decimal separator
  • Enable taxes: Check this to make tax settings appear
  • Store notice: A message shown to all customers (e.g., "Free shipping on orders over $50")

Products Tab

Product display and measurement settings:

  • Shop page display: Show products or categories first
  • Default product sorting: By popularity, rating, date, price
  • Weight and dimension units: kg/lbs, cm/inches
  • Reviews: Enable or disable product reviews globally
  • Add to cart behavior: Redirect to cart or stay on the same page
// Change the shop page display to show categories first
add_filter('woocommerce_shop_page_display', function($display) {
    return 'categories';
});

Shipping Tab

Shipping configuration:

  • Shipping zones: Group regions and assign shipping methods
  • Shipping options: Default shipping address, shipping destination, debug mode
  • Shipping classes: Group similar products for rate calculation

Payments Tab

Payment gateway management:

  • Enabled gateways: Check which payment methods are active
  • Gateway settings: Configure each gateway's API keys, credentials, and display options
  • Checkout customization: Order of payment methods shown

Accounts & Privacy Tab

Customer account settings:

  • Account creation: Allow registration during checkout, on the account page
  • Privacy policy: Link to your privacy page
  • Personal data removal: GDPR compliance tools

Emails Tab

All email notifications:

  • New order: Sent to the store admin
  • Cancelled order: Notification when an order is cancelled
  • Failed order: Alert for payment failures
  • Order on-hold: Customer notification
  • Processing order: Customer confirmation
  • Completed order: Customer notification
  • Refunded order: Customer notification
  • Invoice / Order details: Customer can view in their account
  • Note: Customer notification when admin adds a note
  • Reset password: Customer password recovery

Advanced Tab

Developer-focused settings:

  • Page setup: Choose which pages are used for Shop, Cart, Checkout, My Account
  • WooCommerce REST API: Generate API keys for external integrations
  • Webhooks: Trigger HTTP requests on events (order created, product updated)
  • Legacy API: Enable deprecated API for backward compatibility

Choosing a WooCommerce Theme

A WooCommerce-compatible theme properly displays all store elements: product grids, cart page, checkout form, and account pages.

Storefront (Official Free Theme)

Storefront is the official WooCommerce theme developed by Automattic. It is designed specifically for WooCommerce and receives regular updates alongside the plugin. Every WooCommerce feature is tested against Storefront, so you never encounter compatibility issues. It is lightweight, fast, and customizable through hooks and child themes.

Third-Party Themes

  • Blocksy: Fast, free, works with block editor and page builders
  • Astra: Popular multipurpose theme with WooCommerce templates
  • Kadence: Performance-focused with excellent store customization
  • Flatsome: Premium theme with a built-in store builder (paid, $59)

What to Look For

When choosing a WooCommerce theme, check:

  • Product page layout: Can you customize the product image gallery, add-to-cart position, and related products?
  • Cart and checkout design: Does the theme support a clean, distraction-free checkout?
  • Mobile responsiveness: Over 60% of e-commerce traffic comes from mobile devices
  • Performance: Test with Lighthouse. A heavy theme slows your store
  • Page builder compatibility: Works with Elementor, BeBuilder, or the block editor

Setting Up a Payment Gateway

PayPal

To accept PayPal payments:

  1. Go to WooCommerce > Settings > Payments.
  2. Find PayPal and click Manage.
  3. Check Enable PayPal Standard.
  4. Enter your PayPal email address.
  5. Choose whether to enable PayPal sandbox for testing.
  6. Configure the checkout experience: title, description, and button style.
// Set PayPal sandbox mode for testing
add_filter('woocommerce_paypal_args', function($args) {
    $args['sandbox'] = true;
    return $args;
});

// Customize the PayPal button text
add_filter('woocommerce_gateway_title', function($title, $id) {
    if ($id === 'paypal') {
        $title = 'Pay with PayPal (Credit Cards Accepted)';
    }
    return $title;
}, 10, 2);

PayPal sandbox is essential for testing. Go to developer.paypal.com, create a sandbox account, and use the test credentials to run transactions without real money.

Stripe

To accept credit cards on your site (not a redirect):

  1. Install the WooCommerce Stripe Payment Gateway plugin from the WordPress repository.
  2. Go to WooCommerce > Settings > Payments > Stripe.
  3. Enter your Publishable Key and Secret Key from your Stripe dashboard.
  4. Configure the Webhook endpoint URL — Stripe sends events here to update order statuses.
  5. Enable Stripe on the checkout page.
// The Stripe webhook URL in your store
// https://yourstore.com/?wc-stripe-webhook=1
// You set this in Stripe Dashboard > Webhooks > Add endpoint

// Stripe gateway configuration stored in wp_options
// Option name: woocommerce_stripe_settings
$stripe_settings = get_option('woocommerce_stripe_settings');

The webhook URL is critical. Without it, Stripe cannot notify WooCommerce when a payment succeeds or fails. If your webhook is not configured, orders show as "Pending payment" indefinitely even after successful charges.

Setting Up Shipping

Shipping Zones

A shipping zone is a geographic region with specific shipping methods. Go to WooCommerce > Settings > Shipping > Shipping zones.

  1. Click Add shipping zone.
  2. Zone name: Give it a descriptive name (e.g., "United States").
  3. Zone regions: Select countries, states, or postcodes.
  4. Add shipping method: Choose one or more methods for this zone.
// Add a shipping zone programmatically
function create_shipping_zone() {
    $zone = new WC_Shipping_Zone();
    $zone->set_zone_name('US East Coast');
    $zone->set_zone_locations(array(
        array(
            'code' => 'US:NY',
            'type' => 'state',
        ),
        array(
            'code' => 'US:MA',
            'type' => 'state',
        ),
    ));
    $zone->save();

    // Add flat rate method to this zone
    $zone->add_shipping_method('flat_rate');
}

Shipping Methods

  • Flat rate: Fixed cost per order. Configure the cost (e.g., $5.99). Optionally add a handling fee.
  • Free shipping: No cost to the customer. You can require a minimum order amount or a valid coupon.
  • Local pickup: Customer comes to your store. No shipping cost.

Shipping Classes

Shipping classes group similar products for custom rates. For example:

  • Heavy items: $15 shipping
  • Small items: $3 shipping
  • Fragile items: $10 shipping with extra packaging

Create shipping classes, assign them to products, then configure different flat rates per class in each shipping zone.

Zone Priority

When a customer checks out, WooCommerce checks zones in order. The first zone matching the customer's address gets applied. Set zone priorities so more specific zones (e.g., "California") match before broader zones (e.g., "United States").

Configuring Tax Settings

Tax configuration varies by country and business type. Here's the general approach:

  1. Go to WooCommerce > Settings > General.
  2. Check Enable tax rates and calculations.
  3. Go to WooCommerce > Settings > Tax.

Tax Options

  • Prices entered with tax: Do your product prices include or exclude tax?
  • Display prices in the shop: Include or exclude tax in catalog
  • Display prices during cart and checkout: Show tax breakdown
  • Shipping tax class: How shipping charges are taxed
  • Rounding: Round tax at subtotal level or per line

Tax Rates

Add standard, reduced, and zero-rate tax:

  1. Go to WooCommerce > Settings > Tax > Standard rates.

  2. Click Insert row.

  3. Enter:

    • Country code: US
    • State code: * (all states) or specific state
    • Rate %: 8.75 (example rate)
    • Tax name: Sales Tax
    • Priority: 1 (higher priority overrides lower)
// Add a tax rate programmatically
function add_custom_tax_rate() {
    $rate = array(
        'country'  => 'US',
        'state'    => 'CA',
        'rate'     => '8.7500',
        'name'     => 'California Sales Tax',
        'priority' => '1',
        'compound' => '0',
        'shipping' => '1',
        'class'    => '',
    );
    WC_Tax::_insert_tax_rate($rate);
}

WooCommerce Email Settings

Email notifications keep customers informed and help you manage orders. Configure them at WooCommerce > Settings > Emails.

Key Emails to Configure

  • New order: Sent to the admin email. Subject line, heading, and additional content.
  • Processing order: Sent to the customer when payment is confirmed.
  • Completed order: Sent when you mark an order completed.
  • Order refunded: Sent when you process a refund.
  • Low stock notification: Alerts you when inventory is low. Configure the threshold.
// Customize the "From" name in WooCommerce emails
add_filter('woocommerce_email_from_name', function($from_name) {
    return 'Your Store Name';
});

// Add custom content to the processing order email
add_action('woocommerce_email_before_order_table', function($order, $sent_to_admin) {
    if (!$sent_to_admin) {
        echo '<p>Your order is being prepared. You will receive a shipping confirmation soon.</p>';
    }
}, 10, 2);

Store Notices

Store notices are banner messages shown at the top of every page. Use them for:

  • Shipping promotions: "Free shipping on orders over $50"
  • Holiday hours: "Closed December 24-26"
  • Seasonal sales: "Black Friday — 30% off everything"
  • Important updates: "Delays due to weather"

Set a store notice at WooCommerce > Settings > General > Store notice.

Common Mistakes

  1. Skipping the setup wizard. Beginners often deactivate and reactivate WooCommerce expecting a fresh start, or skip the wizard thinking they can configure everything manually. The wizard sets critical defaults: page creation, currency, tax options, and shipping zones. Skipping it leaves your store in an incomplete state with pages missing and settings unconfigured. If you skipped it, go to WooCommerce > Home and find the setup checklist.

  2. Choosing the wrong currency. Changing the store currency after products are live means updating every product price manually. If your store is in the US but you select Euro, customers see the wrong prices and you convert payments incorrectly. Set the currency correctly during setup and never change it.

  3. Not configuring the Stripe webhook. You connect Stripe, enter your API keys, and everything looks fine. But when customers pay, orders stay stuck in "Pending payment" status. The webhook URL is missing. Stripe sends payment confirmation via webhook, and without it, WooCommerce never knows the payment succeeded. Always configure the webhook endpoint in the Stripe dashboard.

  4. Using an incompatible theme. Some themes don't support WooCommerce properly. Product pages look broken, the cart doesn't update correctly, or the checkout page is misaligned. Test your theme with WooCommerce before launching. Use a theme specifically listed as WooCommerce-compatible, or use Storefront for guaranteed compatibility.

  5. Enabling too many payment gateways. Offering PayPal, Stripe, Square, bank transfer, COD, and check payments sounds like good customer service. In practice, too many options overwhelm customers and increase cart abandonment. Offer 2-3 payment methods maximum. The sweet spot is one card gateway (Stripe or Square) and one digital wallet (PayPal).

Practice Questions

  1. What critical setting does the WooCommerce setup wizard configure that would be time-consuming to fix later? Answer: The store currency. Changing the currency after products exist requires updating every product price. The wizard also creates essential pages (Shop, Cart, Checkout, My Account) that must be set up correctly for the store to function.

  2. Why does Stripe payment processing require a webhook URL, and what happens if it's missing? Answer: The webhook URL allows Stripe to send payment status updates to your WooCommerce store. Without it, completed payments remain stuck in "Pending payment" status because WooCommerce never receives confirmation from Stripe. The webhook must be configured in the Stripe Dashboard pointing to your store's webhook endpoint.

  3. How do shipping zones and zone priority affect the customer's checkout experience? Answer: Shipping zones define geographic regions with specific shipping methods. When a customer enters their address, WooCommerce checks zones in priority order and applies the first matching zone. If a more specific zone (e.g., "California") has a lower priority than a broad zone (e.g., "United States"), customers in California might get the wrong shipping options.

  4. Challenge: Set up a complete WooCommerce store locally. Install WordPress, install WooCommerce, and run the setup wizard. Configure shipping zones for three regions: your local state (local pickup only), your country (flat rate shipping), and international (flat rate + free shipping over $100). Connect PayPal sandbox and test a complete order — add a product, go through checkout, and confirm the order appears in WooCommerce. Write down any issues you encountered and how you resolved them.

FAQ

### Do I need WooCommerce, or can Shopify do the same thing?

WooCommerce is self-hosted on your WordPress site, giving you full control over data, design, and functionality. Shopify is a hosted platform with monthly fees and Transaction charges. WooCommerce is free, but you pay for hosting and domain. Shopify simplifies setup but locks you into their ecosystem. Choose WooCommerce if you want ownership and flexibility.

Is WooCommerce free?

The core WooCommerce plugin is free. You pay for hosting, domain, premium extensions, and a paid theme if you choose one. Many stores run successfully with only free extensions and a free theme like Storefront.

What happens if I deactivate WooCommerce?

Deactivating WooCommerce removes all store functionality. Your products, orders, and settings remain in the database. When you reactivate the plugin, everything returns to its previous state. Deleting WooCommerce without a cleanup plugin leaves orphaned database tables.

Does WooCommerce support subscriptions?

The core plugin does not include subscriptions. You need the WooCommerce Subscriptions extension (paid) or an alternative like Sumo Subscriptions or MemberPress. Subscriptions handle recurring payments, renewal management, and tiered pricing.

Can I migrate from Shopify to WooCommerce?

Yes. Use the Shopify to WooCommerce Migration plugin by Cart2Cart, or export your Shopify data as CSV and import it into WooCommerce. Products, customers, and order history can be migrated. URLs will change, so set up redirects.

Mini Project

Set up a complete WooCommerce store for a clothing business.

  1. Install WordPress locally and install WooCommerce.
  2. Run the setup wizard: set currency to USD, country to United States, enable taxes.
  3. Install the Companion Auto-Redeem & Send Coupons (use a free storefront theme or Storefront).
  4. Create three shipping zones: US (flat rate $5, free over $50), Canada (flat rate $12), International (flat rate $25).
  5. Configure PayPal sandbox and Stripe (use test keys from the Stripe dashboard).
  6. Configure tax: add a standard 8% rate for your state, 0% for others.
  7. Customize the New Order email: change the subject to "New order received at Your Store Name".
  8. Add a store notice: "Free shipping on US orders over $50".
  9. Write a brief walkthrough of your setup process and note any settings that you think could confuse a beginner.

What's Next

Now that your store is configured, it's time to add products and manage inventory:

Continue to Lesson 46: Products and Inventory — Create simple, variable, grouped, and external products with inventory tracking.

Related lessons:

  • Payments, Shipping and Tax — Deep dive into payment gateway configuration, shipping zones, and tax rates
  • Essential Plugins — Build a plugin stack for SEO, security, and performance
  • Order Management — Manage orders, process refunds, and handle customer data

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro