Why is reCAPTCHA Essential?
If your Odoo 15 website allows public user registrations, you’ve probably run into spam bots creating fake accounts or misusing your password reset forms. This can clutter your database, harm your reputation, and create security risks.
While Odoo 16 and above offer native support for reCAPTCHA-like integrations and better form protection mechanisms, Odoo 15 does not have built-in reCAPTCHA validation for signup and password reset forms.
In this article, you’ll learn how to implement a custom Google reCAPTCHA v3 integration for Odoo 15 to stop spam user registrations and protect your forms.
Why Google reCAPTCHA v3?
Google reCAPTCHA v3 works invisibly in the background, scoring each request for potential spam behaviour without interrupting legitimate users with checkbox challenges or image tests. It offers a seamless user experience while still providing strong bot protection.
Since Odoo v15 lacks native integration for this, we’ll be extending the system through:
- Custom frontend widgets for token handling
- Backend controller overrides to validate reCAPTCHA tokens before proceeding with signup or password reset
Important Note on Odoo Version Compatibility
This guide is specifically for Odoo 15, where these protections are not natively available. From Odoo 16 onwards, form protections like reCAPTCHA can be configured via system settings and built-in features. So if you’re using Odoo 16, 17, or later, you likely won’t need this guide — but for Odoo 15, it’s your go-to solution.
Step-by-Step Implementation
1. Get Google reCAPTCHA v3 Credentials
- Go to: Google reCAPTCHA Console
- Choose reCAPTCHA v3
- Enter your domain (or localhost for testing)
- Copy the Site Key and Secret Key

2. Create Frontend Public Widget to Attach reCAPTCHA Token
Create a JavaScript file static/src/js/recaptcha_signup.js in your custom module:
3. UX — Disable Submit Button on Click
To prevent multiple form submissions during token generation, modify the form behaviour:
4. Extend Signup and Reset Password Controllers
In your Python controller file:
This override adds a security check for reCAPTCHA tokens in both the signup and reset password forms, rejecting suspicious submissions.
Note: This custom code is cleanly built on top of Odoo 15’s auth_signup module structure. The exact implementation differs from the native features available in Odoo 16+.
Final Result
- Seamless, invisible protection for signup and password reset forms
- Blocks spam bots effectively on Odoo 15
- Mimics the behaviour of later Odoo versions’ built-in protections
- Keeps your database clean and your users safe
Wrapping Up
Odoo 15 lacks native reCAPTCHA integration for signup and password reset forms, which makes your site vulnerable to spam and abuse. This custom implementation offers a clean, effective, and developer-friendly solution to fill that gap.
If you’re working with Odoo 16 and above, you already have access to native, configurable reCAPTCHA and form protection settings. But for Odoo 15 users, this guide helps bridge that gap.