Dude Products Documentation

Sell physical downloads with Stripe Checkout.

Lightweight WordPress plugin for selling PDFs, ZIP files, software, licences and other digital products directly from your website.

Dude Commerce — User Guide

This guide is for site owners and administrators who sell physical products with Dude Commerce. It explains setup, products, checkout, orders, fulfilment, and day-to-day use. Current product version: 1.0.10.

What Dude Commerce does

Dude Commerce lets you:
  • Sell physical products via Stripe Checkout (payment, tax, and shipping address collection happen on Stripe’s pages, not inside WordPress).
  • Create standard products or options products (up to five options with generated combinations).
  • Track stock, print packing slips and shipping labels, and work a simple picking queue.
  • Embed products on any page with blocks or shortcodes.
  • Let customers view their order with a passwordless magic link — no customer accounts.
You do not need WooCommerce. There is no shopping cart—each purchase is a single product checkout.

Requirements

Requirement Minimum
WordPress 6.5+
PHP 8.1+
Stripe account Required for paid checkouts
HTTPS Strongly recommended for live payments
Paid checkouts use Stripe Checkout only. Card data is never stored on your WordPress site.

Installation

  1. Install Dude Commerce from the WordPress plugin directory (when available), or upload the plugin ZIP under Plugins → Add New → Upload Plugin.
  2. Activate the plugin.
  3. In the admin sidebar, open Dude Commerce.
On first use you may see a Freemius opt-in screen. You can skip it—the free plugin works without a licence. A Pro licence (purchased separately) unlocks advanced features described below.

Quick start (about five minutes)

  1. Connect StripeDude Commerce → Settings. Add your Stripe test publishable and secret keys, leave Test mode enabled, choose a currency and sell-to countries, and click Save and test Stripe connection. See Connecting Stripe.
  2. Webhooks — Add a Stripe webhook endpoint (Test mode) pointing at your Dude Commerce webhook URL and paste the signing secret. See Webhook endpoint.
  3. Create a productDude Commerce → Products → Add New. Set a title, price, stock, shipping amount (if any), and Publish.
  4. Place the product on a page — Insert the Dude Commerce Product block (or [[dude_commerce id="123"]] / [[dude_commerce_buy id="123"]]).
  5. Test — Visit the page in a private/incognito window. Use Stripe test card 4242 4242 4242 4242 with any future expiry and CVC.

Admin menu overview

Screen Purpose
Dude Commerce (home) Shortcuts to products, orders, picking, and settings
Products Create and edit physical products
Orders Order list and detail (fulfilment, print, refund)
Picking Queue of new orders ready to pick
Settings Stripe keys, webhooks, Stripe Tax, currency, sell-to countries
Tools Outgoing webhook test and delivery log (Pro)
Reports Sales and revenue summaries (Pro)
More WP Dude Plugins Catalogue of other WP Dude plugins
Users who can edit posts can manage products. Settings, Orders, Picking, Tools, and Reports require an administrator (manage_options).

Connecting Stripe

Dude Commerce uses manual API keys from your Stripe Dashboard.
  1. In Stripe Dashboard, enable Test mode (toggle in the dashboard).
  2. Go to Developers → API keys and copy the Publishable key and Secret key (test).
  3. In WordPress, open Dude Commerce → Settings.
  4. Enable Use Stripe test keys (Test mode).
  5. Paste keys into Test publishable key and Test secret key.
  6. Click Save and test Stripe connection. In test mode this also probes inbound webhooks. You should see a success message when keys and webhooks are healthy.
Keys show masked placeholders after saving. Leave a field blank when saving to keep the existing value.

Webhook endpoint (live sites and reliable local testing)

Stripe notifies WordPress when a payment succeeds. The plugin shows your webhook URL on the Settings screen:
https://YOUR-SITE/wp-json/dude-commerce/v1/stripe/webhook
This is not the same URL as Dude Downloads or Dude Paywall. Each plugin needs its own Stripe webhook endpoint and signing secret. On a public live site:
  1. In Stripe: Developers → Webhooks → Add endpoint (same Test / Live mode as the plugin).
  2. Paste the URL above.
  3. Subscribe to at least:
    • checkout.session.completed
    • checkout.session.async_payment_succeeded
    • checkout.session.async_payment_failed
    • checkout.session.expired
    • charge.refunded
  4. Copy the Signing secret (whsec_…) into Test webhook secret or Live webhook secret in plugin settings (matching test vs live mode).
On Local WP or other offline dev sites: Stripe cannot reach your machine. Either use the Stripe CLI to forward events to the webhook URL, or enable Local payment confirm (test mode only)—see Troubleshooting.

Going live

  1. Complete Stripe account activation and switch the Dashboard to Live mode.
  2. In plugin settings, disable Test mode and enter Live publishable, secret, and webhook signing secrets.
  3. Create a Live webhook endpoint with the same Dude Commerce URL and five events.
  4. Disable Local payment confirm—live sites must rely on webhooks.
  5. If you collect tax, register live jurisdictions in Stripe Dashboard → Tax before enabling Stripe Tax in plugin settings.
  6. Run a real small-value purchase to confirm order creation, email, and stock decrement.

Stripe Tax (optional)

Dude Commerce can delegate tax calculation and collection to Stripe Tax. The plugin does not calculate VAT/sales tax locally.

  1. In Stripe Dashboard → Tax, register the jurisdictions where you must collect tax.
  2. In WordPress: Dude Commerce → Settings.
  3. Enable Collect tax with Stripe Tax.
  4. Choose Price tax behavior:
    • Exclusive — listed price is before tax; Stripe adds tax on top.
    • Inclusive — listed price already includes tax.
  5. Save settings and run a test checkout. Checkout will collect addresses so Stripe can calculate tax from the buyer’s location.

Sell-to countries

Under Dude Commerce → Settings, choose which countries customers may select for shipping on Stripe Checkout. Only selected countries appear in Checkout’s shipping address country list.

Creating products

Open Dude Commerce → Products → Add New. Set a title, optional description (post content), featured image, and gallery. Product configuration (price, stock, shipping, options) lives on the product edit screen — not in global settings.

Product types

Type Behaviour
Standard Single SKU, one price, one stock level.
Options Up to five named options (e.g. Size, Colour). Combinations are generated automatically with per-row price, sale price, stock, SKU, and optional image.
There is no free (zero-price) product type. Prices must be greater than zero.

Pricing and sale price

Enter the price in major units (e.g. 19.99). Currency comes from Settings → Default currency. Optional sale price is a single field (no scheduling). When active, the front end shows an On sale badge next to the price. For options products, each combination can have its own price and sale price.

Stock and SKU

  • Stock is always tracked. It decrements when payment succeeds.
  • Sold individually hides the quantity selector on Buy Now (customers can only buy one).
  • SKU is optional but must be unique across all standard and options products when set.
On options products, stock and SKU are set per combination row. Bulk tools can apply a default price/sale/stock and generate SKUs with a prefix.

Shipping

Each product can define a flat shipping amount collected on Stripe Checkout (alongside the product line). Dude Commerce does not calculate carrier rates, shipping zones, or classes — keep fulfilment simple, or handle complex shipping outside the plugin. Stripe collects the shipping address during Checkout for fulfilment.

Product images

Three levels:
  1. Featured image — default product image (listings, Checkout when no combination image, emails, fallback).
  2. Gallery — additional product-wide images shown as thumbnails on the front end.
  3. Combination image (options products) — optional image per combination row; switches the main image when that combination is selected.
Use the Dude Commerce Images block (or shortcode) to embed the image UI.

Product categories

Assign categories under the product taxonomy (Product Categories) to organise your catalogue. Categories are native WordPress taxonomies.

Options products

  1. Choose product type Options.
  2. Add option names and values (e.g. Size → S, M, L).
  3. Generate combinations, then set price, sale, stock, SKU, and image per row.
  4. Publish and embed like a standard product. The Buy Now UI lets the customer pick options before checkout.

Showing products on your site

Embed a published product with a block or shortcode. Editors can preview unpublished products; visitors only see published ones.

Block editor

Block Purpose
Dude Commerce Product Full product (images, title, price, buy)
Dude Commerce Images Featured / gallery / combination switching
Dude Commerce Price Price (and sale / On sale badge)
Dude Commerce Buy Now Buy Now button (and option selectors)
Select the product in the block sidebar. Optionally hide the title or set a custom button label.

Shortcodes

Use double brackets on this documentation site so WordPress does not run them. On your shop site, use single brackets.
Shortcode Purpose
[[dude_commerce id="123"]] Full product embed
[[dude_commerce_images id="123"]] Images only
[[dude_commerce_price id="123"]] Price only
[[dude_commerce_buy id="123"]] Buy Now only
Common attributes: id (required), show_title (yes/no on the full product shortcode), button (custom Buy Now label).

What your customers experience

  1. Visitor sees the product embed, chooses options/quantity if available, and clicks Buy Now.
  2. They are redirected to Stripe Checkout for payment, tax (if enabled), and shipping address.
  3. After payment, Stripe returns them to your site’s success/return page.
  4. When the webhook (or local confirm in test) completes the order, stock decrements, the order becomes New Order, and the customer receives an email with a magic link to view the order.

Cancelled checkout

If the customer abandons Stripe Checkout, they return without an order payment and no stock is taken.

Orders

Dude Commerce → Orders lists checkouts and paid orders.
  • Open a row for customer details, line item, shipping address, Stripe IDs, Radar risk, and fees when available.
  • From the order detail you can mark fulfilment statuses, open View in Stripe, print packing slip / shipping label, and (when applicable) mark returned or refund in Stripe.
Pro: CSV export and advanced sales reports.

Order statuses

Status Meaning
pending Checkout started; payment not yet confirmed
failed Payment failed
expired Checkout session expired without payment
new Paid — ready to pick / fulfil (New Order)
shipped Marked shipped (customer receives shipped email)
returned Marked returned
refunded Refund recorded

Picking workflow

Dude Commerce → Picking shows a queue of New Order items to pick. Use it as your fulfilment worklist, then open the order to mark shipped and print documents.

Packing slips and shipping labels

From an order’s fulfilment section, open Packing slip or Shipping label print views. Print from the browser (or use the auto-print helper where available). These are HTML print views — not PDF generation. Customer emails include a secure link to view that order. There are no customer accounts. Links are passwordless and bound to the order; treat them as sensitive.

Settings reference

Stripe

  • Test mode — Use test API keys and test webhooks.
  • Local payment confirm — Test mode only. Lets the return page confirm payment via the Stripe API when webhooks cannot reach your site. Do not use on production.
  • Stripe Tax — Enable collection and exclusive/inclusive behaviour. Requires Tax registrations in Stripe.
  • Default currency — Used for products and display.
  • Webhook endpoint — Copy into Stripe Dashboard (Dude Commerce URL, not Downloads or Paywall).
  • API keys / webhook secrets — Leave blank when saving to keep the stored value.
  • Save and test Stripe connection — Verifies keys; in test mode also probes inbound webhooks.

General

  • Sell-to countries — Countries allowed for shipping address collection on Checkout.

Dude Commerce Pro

Pro is a separate package licensed through Freemius. The free plugin includes unlimited products, Stripe Checkout, stock, orders, picking, packing slips, shipping labels, default customer emails, magic links, inbound Stripe webhooks, and blocks/shortcodes. Pro adds:
Feature Benefit
Outgoing webhooks Automate CRM, email tools, or internal systems (n8n / Make / custom URL)
CSV export Export order data
Sales reports Revenue summary and customer history
Custom email templates Override order received / shipped / refund emails with placeholders
Admin sale notifications Email an administrator when a purchase completes
Merchant REST API Read orders and products from external tools
Activate Pro from Dude Commerce → Account (Freemius) after purchase.

Outgoing webhooks (Pro)

Send signed JSON events to automation tools. Configure under Settings; use Tools to send a test event and view delivery logs.

Custom emails (Pro)

Under Settings → Emails, customise subjects and bodies for order received, shipped, and refund emails. Placeholders include {customer_name}, {customer_email}, {product_name}, {product_description}, {product_url}, {options}, {quantity}, {amount}, {currency}, {order_id}, {order_status}, {order_url}, {shipping_address}, {site_name}, and {site_url}. Leave a field blank to keep the default template.

Sales reports (Pro)

Dude Commerce → Reports shows revenue summaries and customer history for paid orders.

Email delivery

Customer and notification emails are sent with WordPress’s wp_mail(). If customers do not receive mail:
  • Install and configure an SMTP plugin (common on shared hosting).
  • Check spam folders.
  • Confirm Settings → General site email is valid.
  • On local dev, use a mail catcher (e.g. Mailhog) or an SMTP relay.

Troubleshooting

“Connected to Stripe” fails
  • Confirm you copied the full secret key (sk_test_… or sk_live_…).
  • Ensure test vs live keys match the Test mode checkbox.
  • Check PHP can make outbound HTTPS requests (firewall, hosting restrictions).
Payment succeeded in Stripe but order stays Pending
  • Webhook not configured, wrong mode (Test vs Live), or wrong signing secret for this endpoint.
  • Webhook URL must be the Dude Commerce URL (…/dude-commerce/v1/stripe/webhook), not Downloads or Paywall.
  • Webhook URL must be publicly reachable (not localhost without CLI forwarding).
  • Open Orders—if status is still pending, the webhook did not complete.
  • On local test mode: enable Local payment confirm and use Confirm payment on the return page.
  • Hosting firewall / CDN: allow Stripe POSTs to /wp-json/dude-commerce/.
Buy Now does nothing / checkout errors
  • Product must be Published with stock available.
  • Options products need a valid combination selected.
  • Confirm Stripe keys and currency are set.
Stock not decrementing
  • Stock only decrements after payment is confirmed (webhook or local confirm).
  • Check the order status moved to New Order.

Tax is £0.00 or “Enter address to calculate”

  • Confirm Stripe Tax is enabled in plugin settings and you have active Tax registrations in Stripe Dashboard → Tax for that mode (test vs live).
  • The buyer must enter an address on Checkout.

Privacy and external services

  • Stripe processes payments, tax, and address collection under Stripe’s terms and privacy policy.
  • Freemius provides optional licensing and updates for Pro; the free build works without a Freemius licence. See Freemius terms and privacy.
  • Customer email and shipping details are stored with orders for fulfilment and admin visibility.

Frequently asked questions

Do I need WooCommerce?
No. Dude Commerce is standalone.

Is there a shopping cart?
No. Each purchase is a single-product Stripe Checkout.

Are there customer accounts?
No. Customers use magic links to view orders.

Can I sell digital downloads?
Use Dude Downloads for files. Dude Commerce is for physical goods.

Can I sell access to posts?
Use Dude Paywall for post/page access.

Does the plugin calculate shipping rates?
No. You set a flat shipping amount per product. Stripe collects the shipping address.

Does the plugin calculate VAT / sales tax?
No. Optionally enable Stripe Tax so Stripe calculates and collects tax.

Where is card data stored?
On Stripe’s servers only, not in WordPress.

How is this different from Dude Downloads?
Dude Downloads sells files. Dude Commerce sells physical products with stock and fulfilment. They use different webhook URLs and settings.