{"id":284898,"date":"2026-08-03T07:29:49","date_gmt":"2026-08-03T07:29:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/smartguard-ai-for-gravity-forms\/"},"modified":"2026-08-03T14:33:13","modified_gmt":"2026-08-03T14:33:13","slug":"smartguard-ai-for-gravity-forms","status":"publish","type":"plugin","link":"https:\/\/en-gb.wordpress.org\/plugins\/smartguard-ai-for-gravity-forms\/","author":414194,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.3.4","stable_tag":"1.3.4","tested":"7.0.3","requires":"5.9","requires_php":"7.4","requires_plugins":null,"header_name":"SmartGuard AI for Gravity Forms","header_author":"Andreas Ostheimer","header_description":"AI-assisted anti-spam plugin for Gravity Forms using OpenAI.","assets_banners_color":"173349","last_updated":"2026-08-03 14:33:13","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/ostheimer.at\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":93,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.3.3":{"tag":"1.3.3","author":"helpstring","date":"2026-08-03 07:29:31"},"1.3.4":{"tag":"1.3.4","author":"helpstring","date":"2026-08-03 14:33:13"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3632476,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3632476,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3632476,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3632476,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.3.3","1.3.4"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3632476,"resolution":"1","location":"assets","locale":"","width":1600,"height":1100},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3632476,"resolution":"2","location":"assets","locale":"","width":1600,"height":1100},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3632476,"resolution":"3","location":"assets","locale":"","width":1600,"height":1100},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3632476,"resolution":"4","location":"assets","locale":"","width":1600,"height":1100}},"screenshots":{"1":"Global setup dashboard: API key, context, thresholds, reliability controls, integrations, and privacy settings.","2":"Explainable entry decisions: status, score, threshold, reason, plus one-click feedback actions.","3":"Per-form tuning in Gravity Forms: enable\/disable, threshold override, prompt strategy, and model profile.","4":"Native WordPress plugin integration with SmartGuard AI active in the standard Plugins screen."}},"plugin_section":[],"plugin_tags":[2353,601,1655,194533,599],"plugin_category":[42,54],"plugin_contributors":[88021],"plugin_business_model":[],"class_list":["post-284898","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-forms","plugin_tags-gravity-forms","plugin_tags-openai","plugin_tags-spam","plugin_category-contact-forms","plugin_category-security-and-spam-protection","plugin_contributors-helpstring","plugin_committers-helpstring"],"banners":{"banner":"https:\/\/ps.w.org\/smartguard-ai-for-gravity-forms\/assets\/banner-772x250.png?rev=3632476","banner_2x":"https:\/\/ps.w.org\/smartguard-ai-for-gravity-forms\/assets\/banner-1544x500.png?rev=3632476","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/smartguard-ai-for-gravity-forms\/assets\/icon-128x128.png?rev=3632476","icon_2x":"https:\/\/ps.w.org\/smartguard-ai-for-gravity-forms\/assets\/icon-256x256.png?rev=3632476","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/smartguard-ai-for-gravity-forms\/assets\/screenshot-1.png?rev=3632476","caption":"Global setup dashboard: API key, context, thresholds, reliability controls, integrations, and privacy settings."},{"src":"https:\/\/ps.w.org\/smartguard-ai-for-gravity-forms\/assets\/screenshot-2.png?rev=3632476","caption":"Explainable entry decisions: status, score, threshold, reason, plus one-click feedback actions."},{"src":"https:\/\/ps.w.org\/smartguard-ai-for-gravity-forms\/assets\/screenshot-3.png?rev=3632476","caption":"Per-form tuning in Gravity Forms: enable\/disable, threshold override, prompt strategy, and model profile."},{"src":"https:\/\/ps.w.org\/smartguard-ai-for-gravity-forms\/assets\/screenshot-4.png?rev=3632476","caption":"Native WordPress plugin integration with SmartGuard AI active in the standard Plugins screen."}],"raw_content":"<!--section=description-->\n<p>SmartGuard AI adds an AI relevance firewall to Gravity Forms.<\/p>\n\n<p>Traditional spam tools mostly ask: \"Does this look like bot traffic?\"\nSmartGuard asks: \"Is this submission relevant for this form and this business?\"<\/p>\n\n<p>That is why it works well for websites that receive many human-written but irrelevant messages.<\/p>\n\n<h3>Why teams install SmartGuard AI<\/h3>\n\n<ul>\n<li>Higher signal quality in Gravity Forms entries, not just bot blocking.<\/li>\n<li>Explainable decisions with score, threshold, reason, model profile, and history.<\/li>\n<li>Faster moderation with direct <code>Confirm spam<\/code> \/ <code>Confirm not spam<\/code> actions.<\/li>\n<li>Better long-term accuracy via adaptive thresholds from real admin feedback.<\/li>\n<li>Scale-ready operations: async queue, retry\/backoff, circuit breaker, and API usage limits.<\/li>\n<li>Integration-ready for agencies and automation stacks (REST, signed webhooks, MCP tools\/resources, HubSpot connector).<\/li>\n<\/ul>\n\n<h3>What you can control<\/h3>\n\n<ul>\n<li>Decision states: <code>flagged<\/code>, <code>passed<\/code>, <code>review<\/code>, <code>skipped<\/code>, <code>queued<\/code>.<\/li>\n<li>Global + per-form control: enable\/disable, threshold override, prompt version, A\/B mode, model profile.<\/li>\n<li>Cost\/risk controls: minimum content length, daily\/weekly\/monthly API limits, pattern cache.<\/li>\n<li>Governance controls: retention settings, excluded fields, audit trail, white-label and multisite defaults.<\/li>\n<\/ul>\n\n<h3>Best fit use cases<\/h3>\n\n<ul>\n<li>Contact forms with recurring irrelevant outreach or low-quality lead spam.<\/li>\n<li>Clinics, legal firms, consultancies, and local services where relevance is critical.<\/li>\n<li>Multi-form setups where each form needs a different strictness level.<\/li>\n<li>Agencies operating multiple client sites with standardized anti-spam operations.<\/li>\n<\/ul>\n\n<h3>Quick setup (about 5 minutes)<\/h3>\n\n<ol>\n<li>Activate SmartGuard AI and ensure Gravity Forms is active.<\/li>\n<li>Add your OpenAI API key.<\/li>\n<li>Set threshold and uncertainty margin.<\/li>\n<li>Submit one test entry and review the score\/reason in the entries list.<\/li>\n<li>Tune per-form thresholds where needed.<\/li>\n<\/ol>\n\n<p>Bundled locales:<\/p>\n\n<ul>\n<li>bg_BG, hr, cs_CZ, da_DK, nl_NL, en_GB, et, fi, fr_FR, de_DE, de_AT, el, hu_HU, ga, it_IT, lv, lt_LT, mt_MT, pl_PL, pt_PT, ro_RO, sk_SK, sl_SI, es_ES, sv_SE, he_IL.<\/li>\n<\/ul>\n\n<p>Requirements:<\/p>\n\n<ul>\n<li>WordPress 5.9 or higher<\/li>\n<li>PHP 7.4 or higher<\/li>\n<li>Gravity Forms 2.5 or higher (required)<\/li>\n<li>OpenAI API key<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<h3>OpenAI API<\/h3>\n\n<p>This plugin connects to the OpenAI API to analyze enabled form submissions and calculate a relevance score.<\/p>\n\n<ul>\n<li>What the service is used for: AI-based spam and relevance scoring for Gravity Forms entries.<\/li>\n<li>Data sent for scoring: submitted field labels and submitted values from the form entry being analyzed, plus the optional website context configured by the site admin.<\/li>\n<li>Data sent for the explicit connection test: only the API authorization header and configured model identifier; no form data or prompt content is sent.<\/li>\n<li>When data is sent: when an enabled form entry is checked by SmartGuard and passes local guardrails, or when an administrator explicitly selects <strong>Test API connection<\/strong> in the plugin settings.<\/li>\n<li>Where data is sent: <code>https:\/\/api.openai.com\/v1\/chat\/completions<\/code> for scoring requests and <code>https:\/\/api.openai.com\/v1\/models\/{configured-model}<\/code> for the read-only connection test.<\/li>\n<li>Service provider: OpenAI.<\/li>\n<li>Terms of Use: https:\/\/openai.com\/policies\/terms-of-use<\/li>\n<li>Privacy Policy: https:\/\/openai.com\/policies\/privacy-policy<\/li>\n<\/ul>\n\n<h3>Custom outbound webhook (optional)<\/h3>\n\n<p>This plugin can send signed SmartGuard events to an endpoint URL configured by the site administrator. The feature is disabled by default.<\/p>\n\n<ul>\n<li>What the service is used for: forwarding decision and feedback events to an automation or integration endpoint selected by the site administrator.<\/li>\n<li>Data sent: delivery ID, event name, timestamp, attempt number, entry ID, form ID, decision status, score, threshold, reason, prompt version\/variant, model profile\/model, or feedback label\/source, depending on the event. Submitted form field values are not included.<\/li>\n<li>When data is sent: only when outbound webhooks are enabled and SmartGuard creates or updates a decision or feedback label; failed deliveries can be retried.<\/li>\n<li>Where data is sent: the custom endpoint URL entered by the site administrator in SmartGuard settings.<\/li>\n<li>Service provider and terms: determined by the configured endpoint. The site administrator is responsible for reviewing that provider's terms and privacy policy before enabling the webhook.<\/li>\n<\/ul>\n\n<h3>HubSpot API (optional)<\/h3>\n\n<p>This plugin includes an optional HubSpot connector that is disabled by default.<\/p>\n\n<ul>\n<li>What the service is used for: forwarding SmartGuard decision and feedback events to a CRM notes endpoint for follow-up workflows.<\/li>\n<li>Data sent: SmartGuard event metadata including entry ID, form ID, status or feedback label, score, threshold, reason, and timestamp. The default connector does not send submitted field values to HubSpot.<\/li>\n<li>When data is sent: only when the site admin enables the HubSpot connector and SmartGuard emits a supported decision or feedback event.<\/li>\n<li>Where data is sent: <code>https:\/\/api.hubapi.com\/crm\/v3\/objects\/notes<\/code> by default, or the custom endpoint URL configured by the site admin.<\/li>\n<li>Service provider: HubSpot for the default endpoint. If a custom endpoint is configured, the same event payload is sent to that configured external service instead.<\/li>\n<li>Terms of Use: https:\/\/legal.hubspot.com\/website-terms-of-use<\/li>\n<li>Privacy Policy: https:\/\/legal.hubspot.com\/privacy-policy<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>smartguard-ai-for-gravity-forms<\/code> folder to <code>\/wp-content\/plugins\/<\/code> or install the plugin ZIP via WordPress admin.<\/li>\n<li>Activate <strong>SmartGuard AI<\/strong> in WordPress.<\/li>\n<li>Ensure Gravity Forms is installed and activated.<\/li>\n<li>Open <strong>SmartGuard AI<\/strong> settings in the WordPress admin menu.<\/li>\n<li>Add your OpenAI API key.<\/li>\n<li>Set spam threshold, uncertainty margin, and API\/cost limits.<\/li>\n<li>Optional: configure adaptive thresholds, async processing, and webhook integration.<\/li>\n<li>Optional: per form, open <strong>Forms -&gt; Settings -&gt; SmartGuard AI<\/strong> and configure form-specific enable\/disable, threshold override, prompt version, A\/B mode, and model profile.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20work%20without%20gravity%20forms%3F\"><h3>Does this plugin work without Gravity Forms?<\/h3><\/dt>\n<dd><p>No. Gravity Forms is required.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20the%20openai%20api%20is%20unavailable%3F\"><h3>What happens if the OpenAI API is unavailable?<\/h3><\/dt>\n<dd><p>The plugin fails open for reliability: entries are not auto-marked as spam when no valid score is returned.<\/p><\/dd>\n<dt id=\"what%20does%20the%20score%20mean%3F\"><h3>What does the score mean?<\/h3><\/dt>\n<dd><p>The score represents how relevant the submission appears for your website context. Lower than threshold is treated as spam.<\/p><\/dd>\n<dt id=\"is%20this%20a%20replacement%20for%20all%20spam%20tools%3F\"><h3>Is this a replacement for all spam tools?<\/h3><\/dt>\n<dd><p>SmartGuard AI is best used as an additional relevance-based layer. You can still combine it with classic protections (honeypots, captcha, blocklists) for stronger coverage.<\/p><\/dd>\n<dt id=\"where%20are%20results%20stored%3F\"><h3>Where are results stored?<\/h3><\/dt>\n<dd><p>The plugin stores decision status, score, threshold, reason, prompt version, confidence, feedback labels, and decision history in Gravity Forms entry meta. Aggregated decision\/feedback logs are stored in WordPress options for analytics, learning, and exports.<\/p><\/dd>\n<dt id=\"why%20does%20an%20entry%20show%20%22skipped%22%20or%20%22review%22%3F\"><h3>Why does an entry show \"Skipped\" or \"Review\"?<\/h3><\/dt>\n<dd><p>SmartGuard uses:\n- <code>Review<\/code> when score is inside the uncertainty margin around threshold.\n- <code>Skipped<\/code> when checks are disabled, content is too short, limits\/circuit prevent API calls, or API response is invalid.<\/p><\/dd>\n<dt id=\"is%20there%20an%20api%20for%20integrations%3F\"><h3>Is there an API for integrations?<\/h3><\/dt>\n<dd><p>Yes. SmartGuard provides REST endpoints for stats, entry details, feedback, review queue, exports, audit logs, and MCP-compatible resources\/tools. Signed outbound webhooks and signed inbound feedback webhook are also available.<\/p><\/dd>\n<dt id=\"is%20there%20wp-cli%20support%3F\"><h3>Is there WP-CLI support?<\/h3><\/dt>\n<dd><p>Yes. Use <code>wp smartguard<\/code> commands for stats, review queue, threshold tuning, feedback import, and connector inspection.<\/p><\/dd>\n<dt id=\"is%20there%20a%20complete%20settings%20reference%3F\"><h3>Is there a complete settings reference?<\/h3><\/dt>\n<dd><p>Yes. Open <strong>SmartGuard AI -&gt; Settings<\/strong> and use the built-in <strong>Settings Reference<\/strong> section. Form-specific controls remain available under <strong>Forms -&gt; Settings -&gt; SmartGuard AI<\/strong>.<\/p><\/dd>\n<dt id=\"can%20translations%20be%20managed%20on%20wordpress.org%3F\"><h3>Can translations be managed on WordPress.org?<\/h3><\/dt>\n<dd><p>Yes. Translations can be maintained on <code>translate.wordpress.org<\/code> (project: <code>smartguard-ai-for-gravity-forms<\/code>), and WordPress delivers approved language packs automatically. This package also includes reviewed German fallback catalogs for <code>de_DE<\/code> and <code>de_AT<\/code>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3.4<\/h4>\n\n<ul>\n<li>Rebuilt 30-day dashboard metrics from privacy-safe Gravity Forms entry metadata, including legacy decisions, skipped checks, and scoring coverage.<\/li>\n<li>Replaced automatic API validation on settings saves with an explicit read-only model-access test that sends no form data or prompt content.<\/li>\n<li>Completed and refreshed German admin translations for Germany and Austria, including localized weekly quality reports.<\/li>\n<\/ul>\n\n<h4>1.3.3<\/h4>\n\n<ul>\n<li>Added WordPress.org-facing external service documentation for OpenAI and the optional HubSpot connector.<\/li>\n<li>Updated plugin contributor metadata for the WordPress.org owner account.<\/li>\n<\/ul>\n\n<h4>1.3.2<\/h4>\n\n<ul>\n<li>Extended settings UI polish with fast section navigation chips and clearer long-form orientation.<\/li>\n<li>Improved settings-page usability on desktop\/mobile with refined spacing and sticky save area.<\/li>\n<li>Added Docker smoke-test report for relevant vs spammy submission behavior.<\/li>\n<li>Removed leftover Firecrawl placeholder file from packaging surface.<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Polished SmartGuard admin UI for faster scanning and easier configuration (structured KPI cards, clearer section layout, improved spacing on desktop\/mobile).<\/li>\n<li>Added scoped admin stylesheet loaded only on SmartGuard settings pages.<\/li>\n<li>Removed unused Firecrawl placeholder class from plugin package.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Added prompt A\/B testing mode with deterministic variant assignment and KPI attribution by variant.<\/li>\n<li>Added per-form model profile selection (<code>cost<\/code>, <code>balanced<\/code>, <code>quality<\/code>) with model metadata tracking.<\/li>\n<li>Added HubSpot reference CRM connector with configurable endpoint and flagged-only filtering.<\/li>\n<li>Added multisite network defaults page with optional enforced white-label branding.<\/li>\n<li>Added WP-CLI command suite (<code>wp smartguard ...<\/code>) for stats, review queue, threshold updates, and feedback.<\/li>\n<li>Added agency\/white-label settings (brand name, support URL\/email, client mode).<\/li>\n<li>Extended REST stats and reporting with prompt-variant\/model-profile comparisons.<\/li>\n<li>Expanded operations and partner documentation (multisite, WP-CLI, HubSpot, agency program).<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Added uncertainty zone with <code>review<\/code> decision state.<\/li>\n<li>Added admin feedback actions (<code>Confirm spam<\/code> \/ <code>Confirm not spam<\/code>) with persisted learning labels.<\/li>\n<li>Added adaptive per-form threshold learning and drift signal state.<\/li>\n<li>Added decision history with prompt version, source, and confidence metadata.<\/li>\n<li>Added REST API core: stats, entry details, feedback, review queue, audit, export.<\/li>\n<li>Added MCP-compatible resources\/tools API layer.<\/li>\n<li>Added signed outbound and inbound webhooks with retry and idempotency.<\/li>\n<li>Added async processing mode, retry\/backoff, circuit breaker, and pattern cache.<\/li>\n<li>Added privacy controls: excluded field types\/labels and retention settings.<\/li>\n<li>Added scheduled weekly report framework and extension connector registry.<\/li>\n<li>Added adapter architecture with Gravity Forms adapter and CF7 skeleton.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Fixed AI status display for entries without SmartGuard meta.<\/li>\n<li>Added per-form SmartGuard enable\/disable and optional form threshold override.<\/li>\n<li>Added AI reason tracking and display in entry list.<\/li>\n<li>Added cost\/rate controls: minimum submission length and daily API request limit.<\/li>\n<li>Improved privacy\/external-service disclosure in plugin settings.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial public release.<\/li>\n<li>Gravity Forms integration for AI-based spam scoring.<\/li>\n<li>Admin settings for API key, context, threshold, and notifications.<\/li>\n<\/ul>","raw_excerpt":"AI spam filtering for Gravity Forms with relevance scoring, explainable decisions, adaptive learning, and integrations.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/en-gb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/284898","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/en-gb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/en-gb.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/en-gb.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=284898"}],"author":[{"embeddable":true,"href":"https:\/\/en-gb.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/helpstring"}],"wp:attachment":[{"href":"https:\/\/en-gb.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=284898"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/en-gb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=284898"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/en-gb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=284898"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/en-gb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=284898"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/en-gb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=284898"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/en-gb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=284898"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}