Loading NeuroGuard…
Step-by-step guides for integrating NeuroGuard into any CMS or framework.
// functions.php
function ng_protect_form() {
if (!empty($_POST['website_url'])) wp_die('Bot detected');
$token = $_POST['neuroguard_token'] ?? '';
$result = ng_verify($token);
if (!$result['valid'] || $result['decision'] !== 'allow' || $result['label'] !== 'HUMAN') wp_die('Access denied');
}
add_action('wp_ajax_submit_form', 'ng_protect_form', 1);
add_action('wp_ajax_nopriv_submit_form', 'ng_protect_form', 1);class PlgSystemNeuroguard extends JPlugin {
public function onAfterRoute() {
$app = JFactory::getApplication();
if ($app->isClient('site') && $_SERVER['REQUEST_METHOD'] === 'POST') {
if (!empty($_POST['website_url'])) { $app->redirect(JURI::base()); }
$token = $_POST['neuroguard_token'] ?? '';
$result = $this->verifyToken($token);
if (!$result['valid']) $app->redirect(JURI::base());
}
}
}function neuroguard_form_alter(&$form, $form_state, $form_id) {
$form['website_url'] = ['#type' => 'textfield', '#attributes' => ['style' => 'position:absolute;left:-9999px'], '#access' => false];
$form['neuroguard_token'] = ['#type' => 'hidden'];
$form['#validate'][] = 'neuroguard_validate';
}<!-- theme.liquid -->
<script src="https://api.neuroguard.pro/api/v1/shield-js"
data-site-key="ng_pk_YOUR_KEY" data-auto="true" defer></script>
<!-- In form -->
<input type="text" name="website_url" style="position:absolute;left:-9999px"
tabindex="-1" autocomplete="off" aria-hidden="true"><script src="https://api.neuroguard.pro/api/v1/shield-js"
data-site-key="ng_pk_YOUR_KEY" data-auto="true" defer></script>
<form action="/api/contact" method="POST">
<input type="text" name="website_url"
style="position:absolute;left:-9999px;width:1px;height:1px;opacity:0"
tabindex="-1" autocomplete="off" aria-hidden="true">
<input name="email" type="email" required>
<button type="submit">Send</button>
</form>useEffect(() => {
const s = document.createElement('script');
s.src = '/api/v1/shield-js';
s.dataset.siteKey = process.env.NEXT_PUBLIC_NG_SITE_KEY;
s.dataset.auto = 'true'; s.async = true;
document.body.appendChild(s);
}, []);
// Imperative: const result = await window.NeuroGuard.getToken('ng_pk_...');Regardless of CMS: (1) shield.js on frontend, (2) honeypot + noscript fallback, (3) server-side verification with default-deny. See Developer Docs for SDK examples.
NeuroGuard v1.0 · Home · Developer Docs · Swagger