[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f9mvWAP-BvGdd5jRjSyNNTRk4Ry4n7adnTjlBkMPktoI":3,"$fouL0xPfgNOsg29kiAn4XFU-o90sGk6aTOt0z43nqmZU":278,"$fkP95RpsJtVMI3EuU6woMVLIk1aDn2mBqoBxRQNI7HjI":282},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":11,"num_ratings":11,"last_updated":13,"tested_up_to":14,"requires_at_least":15,"requires_php":16,"tags":17,"homepage":22,"download_link":23,"security_score":24,"vuln_count":11,"unpatched_count":11,"last_vuln_date":25,"fetched_at":26,"discovery_status":27,"vulnerabilities":28,"developer":29,"crawl_stats":25,"alternatives":36,"analysis":149,"fingerprints":245},"form-attribution-tracking","Form Attribution Tracking","1.1.2","Ryan Howard","https:\u002F\u002Fprofiles.wordpress.org\u002Fryhowa\u002F","\u003Cp>Track the complete customer journey from first click to conversion with referral and Google Ads attribution data captured in your WordPress forms.\u003C\u002Fp>\n\u003Ch3>Overview\u003C\u002Fh3>\n\u003Cp>Form Attribution Tracking is a WordPress plugin that automatically captures and stores complete attribution data from Google Ads campaigns (and other traffic sources) directly in form submissions. This enables you to connect specific leads back to their originating campaigns, keywords, and ads in Google Ads for accurate conversion tracking and ROI measurement.\u003C\u002Fp>\n\u003Cp>The plugin uses first-touch attribution, meaning it captures the visitor’s original traffic source on their first visit and maintains that data through their entire journey until they convert via a form submission.\u003C\u002Fp>\n\u003Ch3>Key Features\u003C\u002Fh3>\n\u003Ch3>Complete Google Ads Attribution Data\u003C\u002Fh3>\n\u003Cp>Automatically captures 8 attribution fields for every form submission:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Attribution Source\u003C\u002Fstrong> – Traffic source (google, facebook, direct, etc.)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Attribution Medium\u003C\u002Fstrong> – Traffic medium (cpc, organic, referral, etc.)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Attribution Campaign\u003C\u002Fstrong> – Campaign name from utm_campaign\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Attribution Term\u003C\u002Fstrong> – Keyword from utm_term\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Attribution Content\u003C\u002Fstrong> – Ad variation from utm_content\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Google Click ID (GCLID)\u003C\u002Fstrong> – Direct link to the specific Google Ads click\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Landing Page\u003C\u002Fstrong> – The first page the visitor landed on\u003C\u002Fli>\n\u003Cli>\u003Cstrong>First Click Timestamp\u003C\u002Fstrong> – When the visitor first arrived\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Google Ads Conversion Tracking\u003C\u002Fh3>\n\u003Cp>The Google Click ID (GCLID) field enables you to:\u003Cbr \u002F>\n– Import conversions directly back into Google Ads\u003Cbr \u002F>\n– Connect form submissions to specific ad clicks\u003Cbr \u002F>\n– Measure true campaign ROI based on actual leads\u002Fsales\u003Cbr \u002F>\n– Track the complete path from ad click to conversion\u003Cbr \u002F>\n– Attribute conversions to the exact keyword and ad that drove them\u003C\u002Fp>\n\u003Ch3>Smart Tracking Technology\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>First-Touch Attribution\u003C\u002Fstrong> – Captures original source, not last-click\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Cookie Persistence\u003C\u002Fstrong> – Maintains attribution data across multiple sessions (configurable 1-365 days)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>JavaScript + PHP Fallback\u003C\u002Fstrong> – Dual-layer tracking ensures data capture even if JavaScript is disabled\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Dynamic Form Support\u003C\u002Fstrong> – Mutation observer watches for forms loaded via AJAX\u003C\u002Fli>\n\u003Cli>\u003Cstrong>UTM Parameter Detection\u003C\u002Fstrong> – Automatically parses and stores all UTM parameters\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Intelligent Source Categorization\u003C\u002Fstrong> – Recognizes and categorizes traffic from Google, Facebook, LinkedIn, and 15+ other platforms\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Universal Form Plugin Support\u003C\u002Fh3>\n\u003Cp>Works seamlessly with:\u003Cbr \u002F>\n– \u003Cstrong>Gravity Forms\u003C\u002Fstrong>\u003Cbr \u002F>\n– \u003Cstrong>Fluent Forms\u003C\u002Fstrong>\u003Cbr \u002F>\n– \u003Cstrong>Formidable Forms\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Modular architecture makes it easy to extend to other form plugins.\u003C\u002Fp>\n\u003Ch3>Comprehensive Admin Dashboard\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Statistics Dashboard\u003C\u002Fstrong> – View submission counts, attribution source distribution, and recent activity\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Form Management\u003C\u002Fstrong> – See which forms have attribution tracking and bulk-add fields to all forms\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Debug Mode\u003C\u002Fstrong> – Browser console logging for troubleshooting\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Flexible Configuration\u003C\u002Fstrong> – Customize cookie duration and auto-add behavior\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>How It Works\u003C\u002Fh3>\n\u003Ch3>Data Capture Flow\u003C\u002Fh3>\n\u003Col>\n\u003Cli>\n\u003Cp>\u003Cstrong>Visitor Arrives\u003C\u002Fstrong> – When someone visits your site, the JavaScript tracking code immediately captures:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>All UTM parameters from the URL\u003C\u002Fli>\n\u003Cli>Google Click ID (GCLID) if present\u003C\u002Fli>\n\u003Cli>HTTP referrer to determine traffic source\u003C\u002Fli>\n\u003Cli>Current page URL as landing page\u003C\u002Fli>\n\u003Cli>Current timestamp\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Attribution Stored\u003C\u002Fstrong> – All data is packaged as JSON and stored in a first-party cookie with your configured expiration (default 30 days)\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>First-Touch Persistence\u003C\u002Fstrong> – If the visitor returns multiple times before converting, the original attribution data is preserved (not overwritten)\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Form Submission\u003C\u002Fstrong> – When the visitor fills out a form, the tracking code automatically:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Reads the stored attribution data\u003C\u002Fli>\n\u003Cli>Populates hidden fields in the form\u003C\u002Fli>\n\u003Cli>Submits with the complete attribution chain\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>PHP Fallback\u003C\u002Fstrong> – If JavaScript fails to populate fields, the PHP integration captures attribution server-side before form processing\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Integration with Google Ads\u003C\u002Fh3>\n\u003Cp>To enable conversion imports in Google Ads:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Forms will capture the GCLID parameter automatically from your ad URLs\u003C\u002Fli>\n\u003Cli>Export your form submissions (including attribution fields) as CSV\u003C\u002Fli>\n\u003Cli>In Google Ads, navigate to Tools \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Conversions \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Uploads\u003C\u002Fli>\n\u003Cli>Create a conversion action using the GCLID field to match conversions\u003C\u002Fli>\n\u003Cli>Upload your leads with timestamps and GCLIDs\u003C\u002Fli>\n\u003Cli>Google Ads will attribute the conversions to the exact campaigns, ad groups, keywords, and ads that generated them\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>This creates a closed feedback loop between your ad spend and actual business results.\u003C\u002Fp>\n\u003Ch3>Configuration\u003C\u002Fh3>\n\u003Ch3>Settings\u003C\u002Fh3>\n\u003Cp>Access settings via \u003Cstrong>Form Attribution Tracking \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Settings\u003C\u002Fstrong>:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Auto-add to new forms\u003C\u002Fstrong> – Automatically adds all 8 attribution fields when new forms are created\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Cookie Duration\u003C\u002Fstrong> – How long to preserve first-touch attribution data (1-365 days, default 30)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Debug Mode\u003C\u002Fstrong> – Enables detailed logging in browser console for troubleshooting\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Managing Existing Forms\u003C\u002Fh3>\n\u003Cp>Use the \u003Cstrong>Manage Forms\u003C\u002Fstrong> tab to:\u003Cbr \u002F>\n– View all forms and their attribution tracking status\u003Cbr \u002F>\n– Bulk-add attribution fields to all existing forms with one click\u003Cbr \u002F>\n– See which forms already have tracking enabled\u003C\u002Fp>\n\u003Ch3>Statistics\u003C\u002Fh3>\n\u003Cp>The \u003Cstrong>Statistics\u003C\u002Fstrong> tab provides:\u003Cbr \u002F>\n– Total submissions tracked across all forms\u003Cbr \u002F>\n– Breakdown of traffic sources (Google, Facebook, Direct, etc.)\u003Cbr \u002F>\n– Recent form submissions with their attribution data\u003Cbr \u002F>\n– Forms-with-tracking count\u003C\u002Fp>\n\u003Ch3>Usage\u003C\u002Fh3>\n\u003Ch3>For Marketers\u003C\u002Fh3>\n\u003Cp>Once installed and configured, the plugin works automatically. Every form submission will include complete attribution data that you can:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Export to CSV and upload to Google Ads for conversion tracking\u003C\u002Fli>\n\u003Cli>Analyze in your CRM to understand which campaigns drive the best leads\u003C\u002Fli>\n\u003Cli>Use to calculate true cost-per-lead and ROI by campaign\u003C\u002Fli>\n\u003Cli>Review to optimize your landing pages and ad targeting\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>For Developers\u003C\u002Fh3>\n\u003Ch4>JavaScript API\u003C\u002Fh4>\n\u003Cp>The plugin exposes a global API for programmatic access:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`javascript\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u002F\u002F Get full attribution data object\u003Cbr \u002F>\nconst attribution = window.FormAttributionTracking.getAttributionData();\u003Cbr \u002F>\n\u002F\u002F Returns: { utm_source, utm_medium, utm_campaign, utm_term, utm_content, gclid, landing_page, timestamp }\u003C\u002Fp>\n\u003Cp>\u002F\u002F Get just the traffic source (legacy method)\u003Cbr \u002F>\nconst source = window.FormAttributionTracking.getReferralSource();\u003C\u002Fp>\n\u003Cp>\u002F\u002F Manually trigger form field population\u003Cbr \u002F>\nwindow.FormAttributionTracking.populateFormFields();\u003C\u002Fp>\n\u003Cp>\u002F\u002F Access configuration\u003Cbr \u002F>\nconst config = window.FormAttributionTracking.config;\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Ch4>JavaScript Events\u003C\u002Fh4>\n\u003Cp>Listen for when attribution data is populated:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`javascript\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>window.addEventListener(‘attributionDataPopulated’, function(event) {\u003Cbr \u002F>\n    console.log(‘Attribution captured:’, event.detail.attribution);\u003Cbr \u002F>\n    console.log(‘Fields populated:’, event.detail.fieldsCount);\u003Cbr \u002F>\n});\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Ch4>PHP Hooks and Filters\u003C\u002Fh4>\n\u003Cp>Extend or customize the plugin:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u002F\u002F Add custom form plugin integration\u003Cbr \u002F>\nadd_filter(‘attribution_tracking_integrations’, function($integrations) {\u003Cbr \u002F>\n    $integrations[‘CustomForms’] = new CustomFormsIntegration();\u003Cbr \u002F>\n    return $integrations;\u003Cbr \u002F>\n});\u003C\u002Fp>\n\u003Cp>\u002F\u002F React to integration initialization\u003Cbr \u002F>\nadd_action(‘attribution_tracking_integration_initialized’, function($integration_name) {\u003Cbr \u002F>\n    error_log(“Attribution tracking initialized for: ” . $integration_name);\u003Cbr \u002F>\n});\u003C\u002Fp>\n\u003Cp>\u002F\u002F Hook into debug logging\u003Cbr \u002F>\nadd_action(‘form_referral_source_debug_log’, function($message, $context, $source) {\u003Cbr \u002F>\n    error_log(“[$source] $message: ” . print_r($context, true));\u003Cbr \u002F>\n}, 10, 3);\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Ch3>Attribution Field Names\u003C\u002Fh3>\n\u003Cp>The plugin creates these hidden fields in your forms:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>attribution_source\u003C\u002Fcode> – Traffic source identifier\u003C\u002Fli>\n\u003Cli>\u003Ccode>attribution_medium\u003C\u002Fcode> – Marketing medium\u003C\u002Fli>\n\u003Cli>\u003Ccode>attribution_campaign\u003C\u002Fcode> – Campaign name\u003C\u002Fli>\n\u003Cli>\u003Ccode>attribution_term\u003C\u002Fcode> – Keyword\u002Fsearch term\u003C\u002Fli>\n\u003Cli>\u003Ccode>attribution_content\u003C\u002Fcode> – Ad content variation\u003C\u002Fli>\n\u003Cli>\u003Ccode>attribution_gclid\u003C\u002Fcode> – Google Ads Click ID\u003C\u002Fli>\n\u003Cli>\u003Ccode>attribution_landing_page\u003C\u002Fcode> – First page visited\u003C\u002Fli>\n\u003Cli>\u003Ccode>attribution_timestamp\u003C\u002Fcode> – ISO 8601 timestamp of first visit\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>All fields are automatically populated by JavaScript and have PHP fallbacks.\u003C\u002Fp>\n\u003Ch3>Traffic Source Detection\u003C\u002Fh3>\n\u003Cp>The plugin intelligently categorizes traffic sources:\u003C\u002Fp>\n\u003Ch3>UTM Parameters (Highest Priority)\u003C\u002Fh3>\n\u003Cp>If UTM parameters are present in the URL, they are captured exactly as provided.\u003C\u002Fp>\n\u003Ch3>Known Platforms (Automatic Categorization)\u003C\u002Fh3>\n\u003Cp>The plugin recognizes and categorizes referrers from:\u003Cbr \u002F>\n– Google (google.com, google.co.uk, etc.)\u003Cbr \u002F>\n– Facebook (facebook.com, fb.com, m.facebook.com)\u003Cbr \u002F>\n– Twitter\u002FX (twitter.com, x.com, t.co)\u003Cbr \u002F>\n– LinkedIn (linkedin.com, lnkd.in)\u003Cbr \u002F>\n– YouTube (youtube.com, youtu.be)\u003Cbr \u002F>\n– Instagram (instagram.com)\u003Cbr \u002F>\n– TikTok (tiktok.com)\u003Cbr \u002F>\n– Pinterest (pinterest.com, pin.it)\u003Cbr \u002F>\n– Reddit (reddit.com)\u003Cbr \u002F>\n– Bing (bing.com)\u003Cbr \u002F>\n– Yahoo (yahoo.com)\u003Cbr \u002F>\n– DuckDuckGo (duckduckgo.com)\u003C\u002Fp>\n\u003Ch3>Generic Referrals\u003C\u002Fh3>\n\u003Cp>For unlisted referrers, the clean hostname is stored (e.g., “example.com”)\u003C\u002Fp>\n\u003Ch3>Direct Traffic\u003C\u002Fh3>\n\u003Cp>When no referrer or UTM parameters are present, traffic is marked as “direct”\u003C\u002Fp>\n\u003Ch3>Troubleshooting\u003C\u002Fh3>\n\u003Ch3>Attribution Data Not Being Captured\u003C\u002Fh3>\n\u003Col>\n\u003Cli>\u003Cstrong>Enable Debug Mode\u003C\u002Fstrong> in plugin settings\u003C\u002Fli>\n\u003Cli>Open browser console (F12) and check for “[Referral Source]” log messages\u003C\u002Fli>\n\u003Cli>Verify cookies are enabled in the browser\u003C\u002Fli>\n\u003Cli>Check that JavaScript is not being blocked\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Fields Not Populating in Forms\u003C\u002Fh3>\n\u003Col>\n\u003Cli>Enable Debug Mode and check console for “Field populated” messages\u003C\u002Fli>\n\u003Cli>Verify the form fields exist (check Manage Forms tab)\u003C\u002Fli>\n\u003Cli>Test with a fresh browser\u002Fincognito window\u003C\u002Fli>\n\u003Cli>Check that the form HTML includes the expected hidden field names\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Forms Not Showing in Dashboard\u003C\u002Fh3>\n\u003Col>\n\u003Cli>Verify your form plugin (Gravity Forms, Fluent Forms, or Formidable Forms) is active\u003C\u002Fli>\n\u003Cli>Check that you have forms created in that plugin\u003C\u002Fli>\n\u003Cli>Look for PHP errors in debug.log if WP_DEBUG is enabled\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>GCLID Not Being Captured\u003C\u002Fh3>\n\u003Col>\n\u003Cli>Verify your Google Ads URLs include the {gclid} parameter\u003C\u002Fli>\n\u003Cli>Use Google’s Campaign URL Builder to test: https:\u002F\u002Fga-dev-tools.google\u002Fcampaign-url-builder\u002F\u003C\u002Fli>\n\u003Cli>Check that cookies are working (GCLID is stored in the attribution cookie)\u003C\u002Fli>\n\u003Cli>Enable Debug Mode to see what parameters are being captured\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Extending the Plugin\u003C\u002Fh3>\n\u003Ch3>Adding Support for Other Form Plugins\u003C\u002Fh3>\n\u003Cp>Create a new integration class:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003C?php\u003Cbr \u002F>\nnamespace FormAttributionTracking\\Integrations;\u003C\u002Fp>\n\u003Cp>use FormAttributionTracking\\Abstracts\\AbstractFormIntegration;\u003C\u002Fp>\n\u003Cp>class CustomFormPluginIntegration extends AbstractFormIntegration\u003Cbr \u002F>\n{\u003Cbr \u002F>\n    public function isAvailable(): bool {\u003Cbr \u002F>\n        return class_exists(‘CustomFormPlugin’);\u003Cbr \u002F>\n    }\u003C\u002Fp>\n\u003Cpre>\u003Ccode>public function getName(): string {\n    return 'Custom Form Plugin';\n}\n\npublic function getVersion(): string {\n    return '1.0.0';\n}\n\nprotected function registerHooks(): void {\n    \u002F\u002F Hook into your form plugin's save\u002Frender events\n    add_action('custom_form_save', [$this, 'onFormSaved'], 10, 2);\n}\n\npublic function addReferralSourceField(int $formId): bool {\n    \u002F\u002F Implement logic to add hidden fields to forms\n}\n\npublic function removeReferralSourceField(int $formId): bool {\n    \u002F\u002F Implement logic to remove hidden fields\n}\n\npublic function hasReferralSourceField(int $formId): bool {\n    \u002F\u002F Check if form has attribution fields\n}\n\npublic function getAllForms(): array {\n    \u002F\u002F Return array of all forms\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>}\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>Register your integration:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>add_filter(‘attribution_tracking_integrations’, function($integrations) {\u003Cbr \u002F>\n    $integrations[‘CustomFormPlugin’] = new CustomFormPluginIntegration();\u003Cbr \u002F>\n    return $integrations;\u003Cbr \u002F>\n});\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Ch3>Architecture\u003C\u002Fh3>\n\u003Cp>The plugin uses a clean, modern PHP 8+ architecture:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>src\u002F\u003Cbr \u002F>\n├── Contracts\u002F\u003Cbr \u002F>\n│   └── FormIntegrationInterface.php    # Interface all integrations must implement\u003Cbr \u002F>\n├── Abstracts\u002F\u003Cbr \u002F>\n│   └── AbstractFormIntegration.php     # Base class with common functionality\u003Cbr \u002F>\n├── Integrations\u002F\u003Cbr \u002F>\n│   ├── GravityFormsIntegration.php     # Gravity Forms support\u003Cbr \u002F>\n│   ├── FluentFormsIntegration.php      # Fluent Forms support\u003Cbr \u002F>\n│   └── FormidableFormsIntegration.php  # Formidable Forms support\u003Cbr \u002F>\n├── Views\u002F\u003Cbr \u002F>\n│   └── admin-page.php                  # Admin dashboard template\u003Cbr \u002F>\n└── Plugin.php                          # Main plugin orchestration class\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Ch3>Privacy & Compliance\u003C\u002Fh3>\n\u003Cp>This plugin stores first-party cookies to maintain attribution data. Consider these compliance aspects:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Cookie Duration\u003C\u002Fstrong>: Configurable 1-365 days (default 30)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Data Stored\u003C\u002Fstrong>: Marketing attribution data only (no PII)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>First-Party Cookies\u003C\u002Fstrong>: Data stays on your domain\u003C\u002Fli>\n\u003Cli>\u003Cstrong>User Control\u003C\u002Fstrong>: Respects browser cookie settings\u003C\u002Fli>\n\u003Cli>\u003Cstrong>GDPR\u003C\u002Fstrong>: Consider adding cookie consent notices per your requirements\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Data Retention\u003C\u002Fstrong>: Attribution data is only stored in form submissions per your form plugin’s data retention policies\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Support & Contributing\u003C\u002Fh3>\n\u003Cp>For bug reports, feature requests, or contributions:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Plugin Author: Ryan Howard\u003C\u002Fli>\n\u003Cli>Website: https:\u002F\u002Fwww.ryanhoward.dev\u003C\u002Fli>\n\u003Cli>Text Domain: form-attribution-tracking\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>License\u003C\u002Fh3>\n\u003Cp>This plugin is licensed under the GPL v2 or later.\u003C\u002Fp>\n","Track the complete customer journey from first click to conversion with referral and Google Ads attribution data captured in your WordPress forms.",0,205,"2025-11-17T16:46:00.000Z","6.8.5","6.0","8.0",[18,19,20,21],"attribution","forms","referral","tracking","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fform-attribution-tracking\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fform-attribution-tracking.1.1.2.zip",100,null,"2026-04-06T09:54:40.288Z","no_bundle",[],{"slug":30,"display_name":7,"profile_url":8,"plugin_count":31,"total_installs":32,"avg_security_score":33,"avg_patch_time_days":34,"trust_score":33,"computed_at":35},"ryhowa",7,30120,99,3,"2026-05-20T01:43:38.318Z",[37,63,86,110,130],{"slug":38,"name":39,"version":40,"author":41,"author_profile":42,"description":43,"short_description":44,"active_installs":45,"downloaded":46,"rating":47,"num_ratings":48,"last_updated":49,"tested_up_to":50,"requires_at_least":51,"requires_php":52,"tags":53,"homepage":51,"download_link":58,"security_score":59,"vuln_count":60,"unpatched_count":11,"last_vuln_date":61,"fetched_at":62},"track-the-click","Track The Click","0.4.0","tracktheclick","https:\u002F\u002Fprofiles.wordpress.org\u002Ftracktheclick\u002F","\u003Ch4>Tracking clicks\u003C\u002Fh4>\n\u003Cp>Track The Click helps website owners better understand how site visitors interact with links on their site.  The main function of the plugin is to track clicks as they occur on a WordPress website in real time.  Track The Click uses client side Javascript to record all outbound click events and record them to a local database.  Once the data is recorded, Track The Click offers a number of views, to interpret and analyze the click behavior.\u003C\u002Fp>\n\u003Ch4>Why track outbound clicks?\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Improve affiliate link performance\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>By tracking and recording where and how your visitors click and leave your site, you can optimize your website and pages for increased affiliate revenue.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Demonstrate advertising value\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>If you have website sponsors or advertisers, the external click data can be invaluable.  Your clients might not be sophisticated enough to check their own website analytics, so you can provide them with the data yourself; how well did the ad perform, how many users left your sites for theirs through the ad in question?  From that they can develop a Return On Investment number for the cost of your campaign.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>See where your site visitors go next\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>If the bulk of your visitors are leaving your website for a specific destination, maybe there’s room for extra content on your own site.  Why send your traffic elsewhere if you can meet your visitors’ needs yourself?\u003C\u002Fp>\n\u003Cp>\u003Cstrong>See which pages are driving external traffic\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Using the Track The Click plugin you can review which of your website’s posts and pages are sending the most external traffic. These may be potential sources of new affiliate revenue.\u003C\u002Fp>\n\u003Ch4>Why Track The Click?\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Simple. Easy. Quick.\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Once you install the plugin you can begin tracking clicks within 60 seconds.  You don’t need to subscribe to our site, our newsletter, or any other signup form.  Download, install, start.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Made by bloggers for bloggers\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>We made the plugin because we were also frustrated by the lack of ways of track clicks on our sites.  Track The Click is the result of that frustration.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Free and lightweight\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>The basics of the plugin are 100% free.  The plugin is also made with site speed first and foremost in mind. We won’t add 1000s of lines of bloated code to your website.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Data insights\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>We’re constantly working to show you as much data around your link click as possible.  What time of the day was the click?  What page did the click leave on, what was the anchor of that click?  We’re always looking to add more and more data.\u003C\u002Fp>\n\u003Ch4>Core features\u003C\u002Fh4>\n\u003Cp>The basic functions of the plugin are free, these include:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Unlimited link click tracking\u003C\u002Fli>\n\u003Cli>Local tracking and reporting of clicks\u003C\u002Fli>\n\u003Cli>No limit on storage of link click data\u003C\u002Fli>\n\u003Cli>Track outbound link clicks in all areas of your site: header, body, widgets and footer\u003C\u002Fli>\n\u003Cli>Two standard views\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>The free version comes with two views.  Each view represents a different way to see your outbound link profile.  The two free views are the link and domain view as follows.  The standard free view is the link view.  For every outbound click on your WordPress website this shows:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Link URL\u003C\u002Fli>\n\u003Cli>Anchor text of the link clicked\u003C\u002Fli>\n\u003Cli>Post or page on your website where the link occurred\u003C\u002Fli>\n\u003Cli>Total of link clicks in specified time period\u003C\u002Fli>\n\u003C\u002Ful>\n","Track how many clicks your links get.",8000,67983,94,18,"2024-09-05T07:56:00.000Z","6.6.5","","7.0",[54,55,20,56,57],"click-tracking","link","seo","track-outbound-link","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Ftrack-the-click.0.4.0.zip",91,1,"2023-09-26 00:00:00","2026-04-16T10:56:18.058Z",{"slug":64,"name":65,"version":66,"author":67,"author_profile":68,"description":69,"short_description":70,"active_installs":71,"downloaded":72,"rating":73,"num_ratings":34,"last_updated":74,"tested_up_to":75,"requires_at_least":76,"requires_php":77,"tags":78,"homepage":84,"download_link":85,"security_score":24,"vuln_count":11,"unpatched_count":11,"last_vuln_date":25,"fetched_at":62},"call-tracking-metrics","CallTrackingMetrics","2.1.8","taf2","https:\u002F\u002Fprofiles.wordpress.org\u002Ftaf2\u002F","\u003Cp>CallTrackingMetrics integrates with your WordPress site to provide powerful call tracking and attribution.\u003C\u002Fp>\n","CallTrackingMetrics integrates with your WordPress site to provide powerful call tracking and attribution.",3000,129535,74,"2026-02-16T14:22:00.000Z","6.9.4","6.5","8.2",[79,80,81,82,83],"advertising","call-tracking","conversation-analytics","google-ads","marketing-attribution","https:\u002F\u002Fcalltrackingmetrics.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcall-tracking-metrics.2.1.8.zip",{"slug":87,"name":88,"version":89,"author":90,"author_profile":91,"description":92,"short_description":93,"active_installs":94,"downloaded":95,"rating":24,"num_ratings":96,"last_updated":97,"tested_up_to":14,"requires_at_least":98,"requires_php":51,"tags":99,"homepage":105,"download_link":106,"security_score":107,"vuln_count":108,"unpatched_count":11,"last_vuln_date":109,"fetched_at":62},"activedemand","ActiveDEMAND","0.2.47","ActiveDEMAND Online Agency Marketing Automation","https:\u002F\u002Fprofiles.wordpress.org\u002Fponiard\u002F","\u003Cp>Adds the \u003Ca href=\"https:\u002F\u002Fwww2.activedemand.com\u002Fs\u002FvaiXT\" rel=\"nofollow ugc\">ActiveDEMAND\u003C\u002Fa> tracking script to your website. As well this plugin gives you the ability to use shortcodes to embed ActiveDEMAND webforms into your widgets, pages, posts, and sidebars.\u003C\u002Fp>\n\u003Ch4>Personalize your WordPress visitor Experience with ActiveDEMAND\u003C\u002Fh4>\n\u003Cblockquote>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww2.activedemand.com\u002Fs\u002FN8DSB\" rel=\"nofollow ugc\">Dynamically change website content based on users GEO-IP location, utm_source\u002Fmedium, any visitor history\u002Fcontext\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww2.activedemand.com\u002Fs\u002F3RDMj\" rel=\"nofollow ugc\">Embed web forms on any page\u002Fpost\u002Fsidebar etc\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww2.activedemand.com\u002Fs\u002F0b1aD\" rel=\"nofollow ugc\">Add custom popups and opt in bars\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww2.activedemand.com\u002Fs\u002FYkfq2\" rel=\"nofollow ugc\">Automatically send emails to people who fill out forms\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww2.activedemand.com\u002Fs\u002FbNjo5\" rel=\"nofollow ugc\">Track visitors, link clicks etc\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww2.activedemand.com\u002Fs\u002FN8DSB\" rel=\"nofollow ugc\">GEO IP lookup of all visitors, email opens, phone calls, etc\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww2.activedemand.com\u002Fs\u002FTKVri\" rel=\"nofollow ugc\">Full attribution of marketing activities\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww2.activedemand.com\u002Fs\u002FgomgB\" rel=\"nofollow ugc\">Appointment Scheduling\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>For the full list of capabilities, visit \u003Ca href=\"https:\u002F\u002Fwww2.activedemand.com\u002Fs\u002FvaiXT\" rel=\"nofollow ugc\">www.ActiveDEMAND.com\u003C\u002Fa>!\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F9VsHjxMsHHk?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp>Fully automate your marketing with \u003Ca href=\"https:\u002F\u002Fwww2.activedemand.com\u002Fs\u002FvaiXT\" rel=\"nofollow ugc\"> ActiveDEMAND\u003C\u002Fa>.\u003C\u002Fp>\n","ActiveDEMAND, the easy way to add Web Forms, Dynamic Content, and Popups to your WordPress site.",1000,41003,6,"2025-10-15T20:37:00.000Z","2.8",[100,101,102,103,104],"dynamic-content","geo-ip","opt-in-forms","popup-builder","tracking-script","https:\u002F\u002Fwww2.activedemand.com\u002Fs\u002FGnf5n","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Factivedemand.0.2.47.zip",92,4,"2025-04-16 00:00:00",{"slug":111,"name":112,"version":113,"author":114,"author_profile":115,"description":116,"short_description":117,"active_installs":94,"downloaded":118,"rating":11,"num_ratings":11,"last_updated":119,"tested_up_to":14,"requires_at_least":120,"requires_php":121,"tags":122,"homepage":128,"download_link":129,"security_score":107,"vuln_count":11,"unpatched_count":11,"last_vuln_date":25,"fetched_at":62},"affiliatewp-affiliate-info","AffiliateWP – Affiliate Info","1.2.0","Syed Balkhi","https:\u002F\u002Fprofiles.wordpress.org\u002Fsmub\u002F","\u003Cp>Affiliate Info allows you to show affiliate information based on the affiliate\u003Cbr \u002F>\ncurrently being tracked. When a user clicks an affiliate’s referral URL and\u003Cbr \u002F>\narrives on your website, the affiliate’s ID is stored by AffiliateWP.\u003Cbr \u002F>\nAffiliate Info simply shows information based on the tracked affiliate.\u003C\u002Fp>\n\u003Cp>Let’s say you have an affiliate named John who shares his referral URL.\u003Cbr \u002F>\nAny user that clicks on John’s referral link can now see a variety of information\u003Cbr \u002F>\nabout John, anywhere on your website.\u003C\u002Fp>\n\u003Cp>You can show:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>John’s WordPress display name\u003C\u002Fli>\n\u003Cli>John’s website URL\u003C\u002Fli>\n\u003Cli>John’s email address (be careful with this!)\u003C\u002Fli>\n\u003Cli>John’s gravatar image\u003C\u002Fli>\n\u003Cli>John’s WordPress username\u003C\u002Fli>\n\u003Cli>John’s biographical info (from his WordPress profile)\u003C\u002Fli>\n\u003Cli>John’s Twitter username\u003C\u002Fli>\n\u003Cli>John’s Facebook URL\u003C\u002Fli>\n\u003Cli>John’s Google+ URL\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>There are currently 9 shortcodes to show the information above:\u003C\u002Fp>\n\u003Col>\n\u003Cli>[affiliate_info_name]\u003C\u002Fli>\n\u003Cli>[affiliate_info_website]\u003C\u002Fli>\n\u003Cli>[affiliate_info_email]\u003C\u002Fli>\n\u003Cli>[affiliate_info_gravatar]\u003C\u002Fli>\n\u003Cli>[affiliate_info_username]\u003C\u002Fli>\n\u003Cli>[affiliate_info_bio]\u003C\u002Fli>\n\u003Cli>[affiliate_info_twitter]\u003C\u002Fli>\n\u003Cli>[affiliate_info_facebook]\u003C\u002Fli>\n\u003Cli>[affiliate_info_googleplus]\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>There’s also 2 shortcodes that you can embed the above in:\u003C\u002Fp>\n\u003Col>\n\u003Cli>[affiliate_info_referred] – show content only when an affiliate is being tracked\u003C\u002Fli>\n\u003Cli>[affiliate_info_not_referred] – show content only when an affiliate is not being tracked. Useful for providing a fallback.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>If you’re a developer you can access this information directly with some useful\u003Cbr \u002F>\nPHP functions.\u003C\u002Fp>\n\u003Cp>Affiliate Info also works in tandem with AffiliateWP’s Credit Last Referrer option\u003Cbr \u002F>\nwhich means the information will change each time a new referral URL is used.\u003C\u002Fp>\n\u003Cp>Some potential uses for this add-on include:\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Showing the customer who referred them\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Show a custom message based on the affiliate being tracked. For example,\u003Cbr \u002F>\n“You’ve been referred by John” or “Your site representative is John”.\u003C\u002Fp>\n\u003Cp>For example:\u003C\u002Fp>\n\u003Cp>Your site representative is [affiliate_info_name]\u003C\u002Fp>\n\u003Cp>If no affiliate is being tracked it will just show “Your site representative is ”\u003Cbr \u002F>\nso use the [affiliate_info_referred] shortcode to make sure nothing is shown when\u003Cbr \u002F>\nno affiliate is being tracked.\u003C\u002Fp>\n\u003Cp>For example:\u003C\u002Fp>\n\u003Cp>[affiliate_info_referred]Your site representative is [affiliate_info_name][\u002Faffiliate_info_referred]\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Allow the site visitor to contact the affiliate\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>There may be instances where your affiliates are in direct contact with your customers. Show the affiliate’s email address, or add a form (Gravity Forms or another form plugin) which sends an email to the affiliate being tracked.\u003C\u002Fp>\n\u003Cp>Note, if you’re going to show any form of email address out in the wild, make sure you protect it using one of the many plugins available on the WordPress repo.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Create a landing page\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Create a landing page for your products that show the current tracked affiliate’s information. This is especially useful if an affiliate does not have a website, or you want more control over how your products are advertised. Affiliates can link directly to your landing page with their referral URL, and their information will be displayed.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>What is AffiliateWP?\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Faffiliatewp.com\u002F\" title=\"AffiliateWP\" rel=\"nofollow ugc\">AffiliateWP\u003C\u002Fa> provides a complete affiliate management system for your WordPress website that seamlessly integrates with all major WordPress e-commerce and membership platforms. It aims to provide everything you need in a simple, clean, easy to use system that you will love to use.\u003C\u002Fp>\n","Display information based on the affiliate's referral URL.",22763,"2025-05-08T18:59:00.000Z","5.2","7.4",[123,124,125,126,127],"affiliate-details","affiliate-info","affiliatewp","referral-tracking","show-referrer","https:\u002F\u002Faffiliatewp.com\u002Faddons\u002Faffiliate-info\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Faffiliatewp-affiliate-info.1.2.0.zip",{"slug":131,"name":132,"version":133,"author":114,"author_profile":115,"description":134,"short_description":135,"active_installs":136,"downloaded":137,"rating":138,"num_ratings":139,"last_updated":140,"tested_up_to":14,"requires_at_least":120,"requires_php":121,"tags":141,"homepage":146,"download_link":147,"security_score":33,"vuln_count":60,"unpatched_count":11,"last_vuln_date":148,"fetched_at":62},"affiliatewp-external-referral-links","AffiliateWP – External Referral Links","1.2.2","\u003Cblockquote>\n\u003Cp>This plugin was built to be used in conjunction with \u003Ca href=\"https:\u002F\u002Faffiliatewp.com\u002F\" title=\"AffiliateWP\" rel=\"nofollow ugc\">AffiliateWP\u003C\u002Fa>.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>Like other affiliate plugins, AffiliateWP must be installed on the same domain as your e-commerce system (Easy Digital Downloads, WooCommerce etc) to properly track visits and referrals.\u003C\u002Fp>\n\u003Cp>This plugin allows your affiliates to promote any landing page (or site) that exists on a completely separate domain. Simply install this plugin on the external WordPress site and your affiliates can now promote it using the site’s URL and their affiliate ID or username appended (eg \u002F?ref=123 or \u002F?ref=john). If a customer uses the affiliate’s referral URL, any outbound links to your e-commerce store will automatically include the affiliate’s ID or username. If the customer then makes a purchase on your e-commerce store, the proper affiliate will be awarded commission. The affiliate’s ID\u002Fusername is stored in a cookie so even if the customer moves between pages on your site, the outbound links will still have the affiliate’s ID\u002Fusername appended.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Faffiliatewp.com\u002Faddons\u002Fexternal-referral-links\u002F\" rel=\"nofollow ugc\">More information\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>What is AffiliateWP?\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Faffiliatewp.com\u002F\" title=\"AffiliateWP\" rel=\"nofollow ugc\">AffiliateWP\u003C\u002Fa> provides a complete affiliate management system for your WordPress website that seamlessly integrates with all major WordPress e-commerce and membership platforms. It aims to provide everything you need in a simple, clean, easy to use system that you will love to use.\u003C\u002Fp>\n","Allows affiliates to promote external landing pages by including the affiliate's ID or username in any outbound links to your e-commerce store.",800,18763,60,2,"2025-08-27T17:05:00.000Z",[125,142,143,144,145],"cross-domain-tracking","external-referral-links","external-sites","promote-other-sites","https:\u002F\u002Faffiliatewp.com\u002Faddons\u002Fexternal-referral-links\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Faffiliatewp-external-referral-links.1.2.2.zip","2025-09-22 00:00:00",{"attackSurface":150,"codeSignals":220,"taintFlows":240,"riskAssessment":241,"analyzedAt":244},{"hooks":151,"ajaxHandlers":202,"restRoutes":217,"shortcodes":218,"cronEvents":219,"entryPointCount":34,"unprotectedCount":11},[152,158,164,168,172,176,181,185,190,194,198],{"type":153,"name":154,"callback":155,"file":156,"line":157},"action","plugins_loaded","closure","attribution-tracking.php",35,{"type":153,"name":159,"callback":160,"priority":161,"file":162,"line":163},"fluentform\u002Finserted_new_form","onFormCreated",10,"src\\Integrations\\FluentFormsIntegration.php",61,{"type":153,"name":165,"callback":166,"priority":161,"file":162,"line":167},"fluentform\u002Fbefore_insert_submission","populateReferralSource",64,{"type":153,"name":169,"callback":160,"priority":161,"file":170,"line":171},"frm_after_create_form","src\\Integrations\\FormidableFormsIntegration.php",62,{"type":173,"name":174,"callback":166,"priority":161,"file":170,"line":175},"filter","frm_pre_create_entry",65,{"type":153,"name":177,"callback":178,"priority":161,"file":179,"line":180},"gform_after_save_form","onFormSaved","src\\Integrations\\GravityFormsIntegration.php",28,{"type":153,"name":182,"callback":183,"priority":161,"file":179,"line":184},"gform_pre_submission","populateReferralSourceFallback",29,{"type":153,"name":186,"callback":187,"file":188,"line":189},"admin_menu","addAdminMenu","src\\Plugin.php",107,{"type":153,"name":191,"callback":192,"file":188,"line":193},"admin_init","registerSettings",108,{"type":153,"name":195,"callback":196,"file":188,"line":197},"admin_enqueue_scripts","enqueueAdminScripts",109,{"type":153,"name":199,"callback":200,"file":188,"line":201},"wp_enqueue_scripts","enqueueFrontendScripts",112,[203,209,213],{"action":204,"nopriv":205,"callback":206,"hasNonce":207,"hasCapCheck":207,"file":188,"line":208},"form_attribution_tracking_bulk_action",false,"handleBulkAction",true,115,{"action":210,"nopriv":205,"callback":211,"hasNonce":207,"hasCapCheck":205,"file":188,"line":212},"form_attribution_tracking_get_forms","getForms",116,{"action":214,"nopriv":205,"callback":215,"hasNonce":207,"hasCapCheck":207,"file":188,"line":216},"form_attribution_tracking_get_stats","getStats",117,[],[],[],{"dangerousFunctions":221,"sqlUsage":222,"outputEscaping":232,"fileOperations":11,"externalRequests":11,"nonceChecks":238,"capabilityChecks":34,"bundledLibraries":239},[],{"prepared":223,"raw":34,"locations":224},22,[225,228,230],{"file":188,"line":226,"context":227},715,"$wpdb->get_var() with variable interpolation",{"file":188,"line":229,"context":227},803,{"file":188,"line":231,"context":227},885,{"escaped":233,"rawEcho":60,"locations":234},33,[235],{"file":188,"line":236,"context":237},366,"raw output",5,[],[],{"summary":242,"deductions":243},"The \"form-attribution-tracking\" plugin v1.1.2 demonstrates a strong security posture based on the provided static analysis.  It shows excellent adherence to security best practices with a high percentage of prepared SQL statements and properly escaped output.  The absence of dangerous functions, file operations, and external HTTP requests further bolsters its security.  Crucially, all identified AJAX entry points are protected by nonce and capability checks, and there are no REST API routes or shortcodes that could introduce vulnerabilities. The lack of any recorded CVEs and a clean vulnerability history indicates a well-maintained and secure plugin over time.\n\nWhile the static analysis reveals no immediate critical or high-severity risks, the small number of analyzed taint flows (zero) means that complex or subtle vulnerabilities might not have been detected.  However, given the plugin's small attack surface and robust implementation of standard security measures, the overall risk is currently assessed as very low.  The plugin appears to be a safe and well-developed option for its intended functionality.",[],"2026-03-17T07:24:18.185Z",{"wat":246,"direct":257},{"assetPaths":247,"generatorPatterns":251,"scriptPaths":252,"versionParams":253},[248,249,250],"\u002Fwp-content\u002Fplugins\u002Fform-attribution-tracking\u002Fresources\u002Fcss\u002Fadmin.css","\u002Fwp-content\u002Fplugins\u002Fform-attribution-tracking\u002Fresources\u002Fjs\u002Fadmin.js","\u002Fwp-content\u002Fplugins\u002Fform-attribution-tracking\u002Fresources\u002Fjs\u002Ffrontend.js",[],[249,250],[254,255,256],"form-attribution-tracking\u002Fresources\u002Fcss\u002Fadmin.css?ver=","form-attribution-tracking\u002Fresources\u002Fjs\u002Fadmin.js?ver=","form-attribution-tracking\u002Fresources\u002Fjs\u002Ffrontend.js?ver=",{"cssClasses":258,"htmlComments":261,"htmlAttributes":266,"restEndpoints":271,"jsGlobals":274,"shortcodeOutput":277},[259,260],"form-attribution-tracking-admin-wrap","attribution-tracking-settings-section",[262,263,264,265],"\u003C!-- Form Attribution Tracking Plugin -->","\u003C!-- Load admin scripts -->","\u003C!-- Load frontend scripts -->","\u003C!-- Main Plugin class -->",[267,268,269,270],"data-attribution-tracking-cookie-duration","data-attribution-tracking-debug-mode","data-attribution-tracking-field-name","data-attribution-tracking-auto-add",[272,273],"\u002Fwp-json\u002Fform-attribution-tracking\u002Fv1\u002Fsettings","\u002Fwp-json\u002Fform-attribution-tracking\u002Fv1\u002Flog",[275,276],"formAttributionTrackingAdmin","formAttributionTrackingFrontend",[],{"error":207,"url":279,"statusCode":280,"statusMessage":281,"message":281},"http:\u002F\u002Flocalhost\u002Fapi\u002Fplugins\u002Fform-attribution-tracking\u002Fbundle",404,"no bundle for this plugin yet",{"slug":4,"current_version":6,"total_versions":96,"versions":283},[284,289,296,303,310,317],{"version":6,"download_url":23,"svn_tag_url":285,"released_at":25,"has_diff":205,"diff_files_changed":286,"diff_lines":25,"trac_diff_url":287,"vulnerabilities":288,"is_current":207},"https:\u002F\u002Fplugins.svn.wordpress.org\u002Fform-attribution-tracking\u002Ftags\u002F1.1.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fform-attribution-tracking%2Ftags%2F1.1.1&new_path=%2Fform-attribution-tracking%2Ftags%2F1.1.2",[],{"version":290,"download_url":291,"svn_tag_url":292,"released_at":25,"has_diff":205,"diff_files_changed":293,"diff_lines":25,"trac_diff_url":294,"vulnerabilities":295,"is_current":205},"1.1.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fform-attribution-tracking.1.1.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fform-attribution-tracking\u002Ftags\u002F1.1.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fform-attribution-tracking%2Ftags%2F1.1.0&new_path=%2Fform-attribution-tracking%2Ftags%2F1.1.1",[],{"version":297,"download_url":298,"svn_tag_url":299,"released_at":25,"has_diff":205,"diff_files_changed":300,"diff_lines":25,"trac_diff_url":301,"vulnerabilities":302,"is_current":205},"1.1.0","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fform-attribution-tracking.1.1.0.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fform-attribution-tracking\u002Ftags\u002F1.1.0\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fform-attribution-tracking%2Ftags%2F1.0.2&new_path=%2Fform-attribution-tracking%2Ftags%2F1.1.0",[],{"version":304,"download_url":305,"svn_tag_url":306,"released_at":25,"has_diff":205,"diff_files_changed":307,"diff_lines":25,"trac_diff_url":308,"vulnerabilities":309,"is_current":205},"1.0.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fform-attribution-tracking.1.0.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fform-attribution-tracking\u002Ftags\u002F1.0.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fform-attribution-tracking%2Ftags%2F1.0.1&new_path=%2Fform-attribution-tracking%2Ftags%2F1.0.2",[],{"version":311,"download_url":312,"svn_tag_url":313,"released_at":25,"has_diff":205,"diff_files_changed":314,"diff_lines":25,"trac_diff_url":315,"vulnerabilities":316,"is_current":205},"1.0.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fform-attribution-tracking.1.0.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fform-attribution-tracking\u002Ftags\u002F1.0.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fform-attribution-tracking%2Ftags%2F1.0.0&new_path=%2Fform-attribution-tracking%2Ftags%2F1.0.1",[],{"version":318,"download_url":319,"svn_tag_url":320,"released_at":25,"has_diff":205,"diff_files_changed":321,"diff_lines":25,"trac_diff_url":25,"vulnerabilities":322,"is_current":205},"1.0.0","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fform-attribution-tracking.1.0.0.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fform-attribution-tracking\u002Ftags\u002F1.0.0\u002F",[],[]]