Dude Downloads Documentation

Sell digital downloads with Stripe Checkout.

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

Dude Downloads — User Guide

This guide is for site owners and administrators who sell or give away digital files with Dude Downloads. It explains setup, products, checkout, and day-to-day use.

For developer topics (REST API, hooks, architecture), see the documentation index.

What Dude Downloads does

Dude Downloads lets you:

  • Offer free downloads (visitor enters email, receives a secure link).
  • Sell paid downloads via Stripe Checkout (payment happens on Stripe’s pages, not inside WordPress).
  • Deliver files through expiring, limited-use download links and email notifications.
  • Embed products on any page with a block or shortcode.

You do not need WooCommerce. There is no shopping cart—each product is a single checkout or free claim.

Requirements

RequirementMinimum
WordPress6.5+ (6.6+ recommended)
PHP8.1+
Stripe accountRequired for paid products
HTTPSStrongly recommended for live payments

Paid checkouts use Stripe Checkout only. Card data is never stored on your WordPress site.

Installation

  1. Install Dude Downloads from the WordPress plugin directory, or upload the plugin ZIP under Plugins → Add New → Upload Plugin.
  2. Activate the plugin.
  3. In the admin sidebar, open Dude Downloads.

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 Downloads → Settings. Add your Stripe test publishable and secret keys, leave Test mode enabled, and click Save and test Stripe connection. See Connecting Stripe.
  2. Create a productDude Downloads → Products → Add New. Set a title, choose Free download or Paid download, attach a file, set a price (paid only), and Publish.
  3. Place the product on a page — Copy the shortcode from the product screen, e.g. [dude_download id="123"], or insert the Digital Download block and pick the product.
  4. Test — Visit the page. For a paid product, use Stripe test card 4242 4242 4242 4242 with any future expiry and CVC.

Admin menu overview

ScreenPurpose
Dude Downloads (home)Shortcuts to products and settings
ProductsCreate and edit download products
TransactionsSales and free claims; open a row for details
SettingsStripe keys, webhooks, currency, logging, uninstall
ToolsOutgoing webhook test and delivery log (Pro)
System StatusEnvironment checks when troubleshooting

Users who can edit posts can manage products. Settings, Transactions, and Tools require an administrator (manage_options).

Connecting Stripe

Dude Downloads uses manual API keys from your Stripe Dashboard. One-click “Connect with Stripe” may be added in a future release.

  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 Downloads → 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. You should see a success message.

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-downloads/v1/stripe/webhook

On a public live site:

  1. In Stripe: Developers → Webhooks → Add endpoint.
  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 use Allow “Confirm payment” without webhooks (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. Disable Allow “Confirm payment” without webhooks—live sites must rely on webhooks (or async payment flows Stripe supports).
  4. Run a real small-value purchase to confirm email and download delivery.

More detail: stripe-setup.md.

Creating products

Open Dude Downloads → Products → Add New.

Product title

The title is shown on the front end when you use the default layout (title visible). It is also used in emails and transaction records.

Product type

TypeVisitor experience
Paid downloadSees price and Buy now (or your button label). Clicks through to Stripe Checkout, then receives download access.
Free downloadEnters email (name optional), submits, receives download access without payment.

Both free and paid products are unlimited on the free plugin plan.

Description

Optional plain text shown under the title on the product embed. Good for a short pitch or file format notes.

Price and currency (paid only)

Enter the price in major units (e.g. 19.99). Currency defaults from Settings → Default currency but can be overridden per product (ISO code, e.g. gbp, usd).

Button label

Customize the call-to-action (defaults: Buy now / Download now).

Downloadable file

Click Select file to choose a file from the Media Library. The file is delivered through secure links, not as a direct public media URL.

Download expiry and limit (Free vs Pro)

On the free plan, each customer link:

  • Expires after 7 days
  • Allows up to 5 download attempts

Pro lets you set custom expiry and limits per product.

Success / thank-you message

Shown on the page after a successful paid checkout (or on the return UI). If empty, a default thank-you message is used.

Administrator notifications

Optional checkbox to email the site administrator when someone completes a free download or paid purchase.

Shortcode

Each product shows its embed code, e.g. [dude_download id="42"]. The product must be Published for visitors to see it (editors can preview unpublished products).

Legacy products

Older tip or fixed price products may still appear in the list with a warning. They cannot accept new checkouts. Create a new free or paid download product instead.

Showing products on your site

Block editor

  1. Edit a page or post.
  2. Add block Digital Download (category: Widgets).
  3. Choose the product in the block sidebar.
  4. Optional: toggle title/description, custom button text, or compact layout.

Shortcode

[dude_download id="123"]
AttributeDefaultDescription
idRequired. Product post ID.
show_titleyesShow product title (yes / no).
show_descriptionyesShow description (yes / no).
button_text(from product)Override button label.
layoutdefaultdefault or compact.

Legacy shortcodes (still supported): [wpdude_download], [simple_product].

Place the shortcode or block on the same page you use as the Stripe return URL when possible—the thank-you and download button appear inline after checkout.

What your customers experience

Free download

  1. Visitor enters email (and optionally name) and submits.
  2. They see a success message and download link on the page.
  3. They receive an email with the download link (if WordPress mail is configured).
  1. Visitor clicks your buy button.
  2. They are redirected to Stripe Checkout to pay.
  3. After payment, Stripe returns them to your site with a success URL.
  4. They see your thank-you message and Download your file when the payment is confirmed.
  5. They receive a download email.

If payment confirmation is still pending (common for a few seconds until Stripe’s webhook runs), the page shows “Your payment is being confirmed…” and updates when complete.

Cancelled checkout

If the customer abandons Stripe Checkout, they return with a message that no payment was taken.

Links are tied to the transaction, expire after the configured period, and count toward the download limit. They are not meant to be shared indefinitely—customers should use the link from their email or success page.

Transactions

Dude Downloads → Transactions lists every free claim and paid order.

  • Filter by status, product type, product ID, or date range.
  • Click a date to open the detail view (customer, amounts, Stripe IDs, download count).

Transaction statuses

StatusMeaning
pendingCheckout started; payment not yet confirmed
completedPaid and fulfilled (download access granted)
freeFree download completed
failedPayment failed
expiredCheckout session expired without payment
refunded / partially_refundedRefund recorded from Stripe

Pro: Export CSV on the transactions screen exports the current filter (up to thousands of rows) for accounting or CRM import.

Settings reference

Stripe

  • Test mode — Use test API keys and test webhooks.
  • Allow “Confirm payment” without webhooks — Test mode only; shows Confirm payment (local test) on the success page. Do not use on production.
  • Default currency — Default for new paid products.
  • Webhook endpoint — Copy into Stripe Dashboard.
  • API keys / webhook secrets — Leave a field blank when saving to keep the existing stored value (fields show masked placeholders).

Outgoing webhooks (Pro)

Send signed JSON events to automation tools (Make, n8n, Zapier, custom URL). Configure the URL and events here; use Tools to send a test and view delivery logs. See webhooks.md.

General

  • Log level / Log retention — Plugin diagnostic logging (helpful when support asks for details).
  • Delete all plugin data when the plugin is uninstalled — When enabled, removing the plugin deletes products metadata, transactions, and settings. Use with care.

Dude Downloads Pro

Pro is a separate package licensed through Freemius. The free plugin includes unlimited free and paid download products, Stripe Checkout, emails, the block, shortcode, and the transactions list.

Pro adds:

FeatureBenefit
Custom download expiry and limitsControl how long links work and how many times they can be used
Custom customer email subject/bodyPer-product templates with placeholders
Custom success redirect URLSend buyers to a custom thank-you page after payment
Outgoing webhooksAutomate CRM, email tools, or internal systems
CSV exportExport transactions for reporting
Admin REST APIIntegrate with external admin tools

Activate Pro from Dude Downloads → Account (Freemius) after purchase.

Email delivery

Download 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 an 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 or wrong signing secret.
  • Webhook URL must be publicly reachable (not localhost without CLI forwarding).
  • On local dev with test mode: enable Confirm payment without webhooks and click Confirm payment (local test) on the success page.

Download button never appears

  • Wait for webhook processing (refresh after a few seconds).
  • Open Transactions and confirm status is completed or free.
  • Ensure the product has a file attached.

Product does not show on the front end

  • Product must be Published.
  • Shortcode id must match the product ID.
  • Legacy product types do not render for visitors.

Need technical details for support

Open Dude Downloads → System Status and note any Warning or Fail rows. Share your WordPress version, PHP version, and whether you use test or live mode—avoid pasting secret keys.

Privacy and external services

  • Stripe processes payments under Stripe’s terms and privacy policy.
  • Freemius (optional opt-in / licensing) may collect usage data per their policy when you connect an account.
  • Customer email addresses are stored with transactions for fulfilment and admin visibility.

Frequently asked questions

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

Can I sell multiple files in one product?
Each product delivers one selected file. Use separate products or bundle files into a ZIP.

Can I change the price after someone bought?
Existing transactions keep the amount paid. New checkouts use the current price.

Does it work with page builders?
Use the shortcode in an HTML or shortcode widget, or a block-compatible area. After checkout, return URLs work best when the product embed is on the return page.

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