Grant full consent fallback for non-TCF visitors in bridge mode (v1.3.3)

Visitors outside EEA/UK/CH (e.g. Americas) have no __tcfapi injected by
Google Funding Choices, causing the TCF bridge poll to time out and leaving
them permanently at the default denied state. After the 10s timeout, grant
full consent — GDPR opt-in doesn't apply to these visitors and CCPA is
an opt-out model, so granted is the correct default.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-07-09 08:14:42 +01:00
parent cde149467a
commit c21b42f6f3
2 changed files with 8 additions and 2 deletions

View File

@@ -3,7 +3,7 @@
* Plugin Name: ATT Consent * Plugin Name: ATT Consent
* Plugin URI: https://github.com/att-consent/att-consent * Plugin URI: https://github.com/att-consent/att-consent
* Description: Google Consent Mode v2 cookie consent with session attribution preservation, custom script management, and full gtag.js/GTM support. * Description: Google Consent Mode v2 cookie consent with session attribution preservation, custom script management, and full gtag.js/GTM support.
* Version: 1.3.2 * Version: 1.3.3
* Requires at least: 6.0 * Requires at least: 6.0
* Requires PHP: 7.4 * Requires PHP: 7.4
* Author: ATT Consent * Author: ATT Consent
@@ -18,7 +18,7 @@ if ( ! defined( 'ABSPATH' ) ) {
exit; exit;
} }
define( 'ATT_CC_VERSION', '1.3.2' ); define( 'ATT_CC_VERSION', '1.3.3' );
define( 'ATT_CC_PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); define( 'ATT_CC_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
define( 'ATT_CC_PLUGIN_URL', plugin_dir_url( __FILE__ ) ); define( 'ATT_CC_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
define( 'ATT_CC_PLUGIN_BASENAME', plugin_basename( __FILE__ ) ); define( 'ATT_CC_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );

View File

@@ -91,6 +91,12 @@
} }
elapsed += POLL_INTERVAL; elapsed += POLL_INTERVAL;
if (elapsed >= MAX_WAIT_MS) { if (elapsed >= MAX_WAIT_MS) {
// __tcfapi never appeared: visitor is outside TCF jurisdiction (e.g. Americas)
// or the CMP script was blocked. GDPR opt-in doesn't apply; grant full consent
// so these visitors aren't silently tracked as denied.
try {
window.AttConsent.update({ functional: true, analytics: true, marketing: true });
} catch (e) {}
return; return;
} }
setTimeout(poll, POLL_INTERVAL); setTimeout(poll, POLL_INTERVAL);