WooCommerce CAPTCHA for checkout

Stop checkout fraud and bot account creation without alienating real customers. Smart-click default for most users; image fallback when risk signals demand it.

The WooCommerce-specific problem.

WooCommerce stores see a particular kind of CAPTCHA challenge: card-testing fraud. Attackers test stolen cards by attempting low-value purchases at scale. Even if every charge is declined, the failed-attempt cost from your payment processor adds up — Stripe, for example, charges a few cents per declined-card attempt. A persistent attacker can run thousands of attempts in a day. CAPTCHA is the cheapest practical defence.

The challenge: card-testing fraud doesn't look like classic spam. The bot performs realistic-looking checkouts. It needs IP-velocity detection, fingerprint analysis, and risk scoring rather than just "is this a human?" — which is why TrustedCaptcha's smart-click + risk engine combination works particularly well for WooCommerce.

Where to put CAPTCHAs in WooCommerce.

The recommended placements:

Plugin installation.

Install the TrustedCaptcha WordPress plugin (see the WordPress guide). It includes WooCommerce-aware integration: the settings panel exposes WooCommerce-specific toggles for Checkout, My Account → Login, My Account → Register, and Lost Password.

For the checkout specifically, we recommend invisible mode with the risk engine in "managed challenge" mode. Most legitimate checkouts will complete with no visible CAPTCHA; suspicious sessions get a visible image grid. Configure in plugin settings → Checkout → Mode = invisible (managed).

Manual integration.

add_action('woocommerce_review_order_before_submit', function() {
  echo '<div class="trustedcaptcha" data-sitekey="0x..." data-mode="invisible"></div>';
});

add_action('woocommerce_checkout_process', function() {
  $token = $_POST['trustedcaptcha-response'] ?? '';
  $resp = wp_remote_post('https://challenges.trustedcaptcha.com/api/v1/siteverify', [
    'body' => [
      'secret'   => get_option('tc_secret'),
      'response' => $token,
      'remoteip' => WC_Geolocation::get_ip_address(),
    ],
    'timeout' => 10,
  ]);
  $data = json_decode(wp_remote_retrieve_body($resp), true);
  if (empty($data['success'])) {
    wc_add_notice(__('CAPTCHA verification failed. Please try again.'), 'error');
  }
});

Combining with WooCommerce's existing fraud tools.

WooCommerce ships with anti-fraud features (address verification, SCA support via your payment gateway). TrustedCaptcha is complementary: it blocks the upstream traffic before it reaches your payment processor, reducing decline-fee costs. We don't try to replace gateway-level fraud detection.

Pricing for WooCommerce.

Most WooCommerce stores fit comfortably in our 1,000-verification/day free tier (rough rule: ~30k orders/month would still fit if you only protect checkout). High-volume stores running at > 1k orders/day, or stores where you protect login/registration/checkout simultaneously, will want the €25/month Pro plan for unlimited verifications.

Cart abandonment considerations.

CAPTCHA at checkout is a friction point — you should monitor your cart-abandonment rate before and after deployment. With TrustedCaptcha's invisible-mode default, the impact is typically < 0.5% in our customer data. If you see a larger increase, switch to "smart" mode (visible click) which has slightly more friction but very high pass rates.

Subscription products.

For WooCommerce Subscriptions sites, the renewal flow doesn't need CAPTCHA — only initial checkout. The plugin handles this distinction automatically.

Multi-vendor (Dokan, WCFM).

The plugin works on the customer-facing storefront. For vendor onboarding flows in Dokan/WCFM, add the widget manually using the snippet above; both plugins expose the standard checkout hooks.

Start free →