| 开发者 | redkirin |
|---|---|
| 更新时间 | 2026年10月16日 14:53 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
tel:), LINE, email or other link clicks as GA4 events or Google Ads conversions (for example through a Google Tag Manager "Just Links" trigger), those automated clicks are counted as conversions. GA4's built-in bot filtering is based on known bot lists and does not catch them.
Redkirin Ad Click Verification is a lightweight ad fraud countermeasure focused on conversion integrity. It verifies that a click comes from a real person before it reaches your tags:
navigator.webdriver, headless / crawler user agents (editable regex list), automation tool globals, missing language settings, and Google's published crawler IP ranges.window capture phase, before Google Tag Manager click triggers or inline onclick handlers see them. The navigation itself (dialing, opening LINE, following the link) is performed by the plugin, so visitors are never blocked.gtm.linkClick / gtm.click and any event names you specify are dropped from dataLayer.push while the visitor is unverified.rkacv_form_submit, submissions with definite bot signals are stopped (Contact Form 7 marks them as spam, WPForms rejects them), and thank-you pages only count when a verified form was submitted in the same session.rkacv_verified_pageview event is pushed that you can use as a key event instead of page_view (thank-you pages, landing pages).rkacv_verified_click to the dataLayer (with rkacv_link_type, rkacv_link_url, rkacv_link_text, rkacv_element_id), and can optionally call gtag('event', ...) directly.navigator.webdriver is detected.redkirin-ad-click-verification folder to /wp-content/plugins/ or install the zip from Plugins → Add New.rkacv_verified_click and move your conversion tags to it (see the guide tab in the settings screen).No. Only the measurement is withheld. Phone calls, LINE and other links always work; when a click is intercepted the plugin performs the navigation itself.
Not necessarily. With "Intercept unverified clicks" enabled, existing "Click – Just Links" triggers simply stop firing for bots. For the cleanest setup, create a custom event trigger for rkacv_verified_click and pause your old click triggers to avoid double counting.
A tap within the minimum dwell time (default 1 second) with no prior interaction cannot be distinguished from a bot and is not measured. Lower the dwell time or set the required signal count to 0 if this matters more than bot filtering.
Yes. All verification happens in the browser and via the REST API. Behind a reverse proxy or CDN, return the real visitor IP with the rkacv_client_ip filter so the IP range check works.
An optional log of blocked / verified clicks: time, link URL, page URL, reason, dwell time, signal count, user agent and an anonymised IP (last octet / lower 80 bits zeroed; can be disabled). Logs are purged after the configured number of days and the table keeps the newest 20,000 rows. Everything is removed on uninstall.
Yes. Obvious bots get no tags at all ("Fire no tags for obvious bots"), and once a visitor is verified the plugin pushes rkacv_verified_pageview. Use that event, optionally with a page path condition, as your key event instead of page_view. Bots that are only recognisable after the page view was sent (IP range, no interaction) cannot be removed from page_view itself, which is why the verified event exists.
Yes. Verification acts on the page, so it is platform-independent. Click IDs from Google, Meta (fbclid), Yahoo! JAPAN (yclid), LINE, TikTok, X and Microsoft are recognised for landings and repeat suppression, and the report shows a per-platform breakdown. Fire each platform's conversion tag from GTM on the verified events (rkacv_verified_click, rkacv_form_submit, rkacv_verified_pageview); a directly installed Meta Pixel can receive the verified events as custom events.
It shows, per campaign and per placement, how many landings carried definite bot signals (webdriver, synthetic clicks, headless user agents, crawler IPs) versus how many looked human. Placement and device breakdowns require Google Ads ValueTrack parameters in your tracking template, for example {lpurl}?campaignid={campaignid}&placement={placement}&device={device}. The plugin never changes your Google Ads account; exclusions are applied by you in Google Ads.
The log is diagnostic data reported by visitors' browsers. The endpoint requires a token signed by the site, but the token is part of the public page, so anyone who can load the page can also post entries. Treat the log as a tuning aid, not as evidence: it never changes what GA4 or Google Ads measure. Writes are rate limited per IP and site-wide, capped per IP per day, and when the table is full the oldest rows are discarded so new entries are always stored.
rkacv_cache_plugins to add others).rkacv_ad_visits with the same protections as the log (signed token, rate limits, per-IP daily cap, ring buffer, retention).rkacv_log_ip_daily_limit).redkirin-ad-click-verification, prefix rkacv_). dataLayer keys are now rkacv_verified_click, rkacv_human, rkacv_link_type, etc.redkirin-ad-click-verification, PHP prefix rkacv_). dataLayer keys (rkacv_verified_click, rkacv_human, rkacv_link_type, ...) are unchanged.dataLayer.push. The guard now keeps a chain of replaced implementations and delegates on re-entry.