=== BaseCloud UTM Tracker === Contributors: basecloud Tags: utm, tracking, analytics, forms, marketing Requires at least: 5.0 Tested up to: 6.8 Stable tag: 3.0.3 Requires PHP: 7.4 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Advanced UTM tracking with automated webhook injection for Gravity Forms, Elementor, WPForms, and Contact Form 7. == Description == **BaseCloud UTM Tracker v3.0** is the ultimate UTM tracking and webhook management solution for WordPress. Replace Gravity Forms webhook add-on with unlimited custom webhooks, full merge tag support, and automatic UTM injection for the "Big 4" form plugins. = 🎯 THE COLLECTOR: Advanced Cookie Tracking = Automatically captures and stores UTM parameters from your marketing campaigns in secure, persistent cookies. = 📦 THE COURIER: Automated Webhook Injection = **Game Changer!** Automatically injects UTM data into ALL form webhook submissions - works with Gravity Forms, Elementor Pro, WPForms, and Contact Form 7! = The "Big 4" Form Support = * **Gravity Forms** - Full integration with async webhook support * **Elementor Pro Forms** - Webhook injection for page builder forms * **WPForms** - Complete webhook automation * **Contact Form 7** - Classic form plugin support = Key Features = * **🚀 Zero Manual Configuration** - Works automatically after activation * **🎯 COLLECTOR System** - Advanced cookie-based tracking for 8 parameters * **📦 COURIER System** - Automatic webhook injection for all major form plugins * **⚡ Async Webhook Support** - Works with background processing (critical for Gravity Forms) * **🔄 Real-Time Diagnostics** - Animated status dashboard shows system health * **📊 Entry Meta Storage** - UTM data saved with each Gravity Forms submission * **🎨 Beautiful Dashboard** - Modern, animated interface with live status indicators * **🔒 Privacy Compliant** - Secure cookies with proper SameSite and HTTPS support * **📱 iOS 14+ Support** - Tracks gbraid and wbraid for enhanced Apple privacy tracking = Tracked Parameters (8 Total) = 1. **referrer** - Previous page URL 2. **utm_source** - Campaign source (Google, Facebook, etc.) 3. **utm_medium** - Marketing medium (CPC, email, social) 4. **utm_campaign** - Campaign name 5. **utm_term** - Campaign keywords 6. **gclid** - Google Click ID 7. **gbraid** - Google Brand Engagement (iOS 14+) 8. **wbraid** - Web to App Brand Engagement (iOS 14+) = How THE COURIER Works = 1. Visitor arrives with UTM parameters in URL 2. COLLECTOR captures and stores data in cookies 3. Visitor submits a Gravity Form 4. COURIER automatically injects all UTM data into webhook payload 5. Your CRM receives complete attribution data - automatically! = Perfect For = * **Digital Marketing Agencies** - Complete campaign attribution without manual setup * **E-commerce Sites** - Track ROI from every marketing channel * **Lead Generation** - Automatic UTM data in your CRM * **SaaS Companies** - Understand customer acquisition sources * **PPC Campaigns** - Full Google Ads and Facebook Ads tracking = What's NEW in v2.0.0? = * 🎯 **COLLECTOR System** - Advanced cookie tracking engine * 📦 **COURIER System** - Automatic webhook injection (no manual fields!) * 🎨 **Animated Dashboard** - Real-time system diagnostics with animations * 📊 **Entry Meta Storage** - UTM data saved with each form submission * 🔧 **Excluded Webhooks** - Option to exclude specific webhook URLs * ✨ **iOS 14+ Support** - gbraid and wbraid parameter tracking * 🚀 **Zero Configuration** - Works automatically after activation = Gravity Forms Integration (THE COURIER) = **🚀 No Manual Field Creation Required!** The COURIER system automatically injects all UTM data into Gravity Forms webhook submissions. Simply: 1. Enable "Gravity Forms Integration" in plugin settings 2. Set up your Gravity Forms webhooks as normal 3. The COURIER automatically adds UTM data to every webhook request **Optional:** You can still create visible fields with parameter names (referrer, utm_source, etc.) if you want users to see the data. The COLLECTOR will populate them automatically. **Excluded Webhooks:** Configure specific webhook URLs to exclude from UTM injection (useful for internal notifications). = Technical Features = * **Lightweight** - Minimal impact on site performance * **Standards Compliant** - Follows WordPress coding standards * **Secure** - Proper data sanitization and validation * **Translatable** - Ready for internationalization * **Mobile Friendly** - Works across all devices and browsers * **Entry Meta Storage** - UTM data stored with each Gravity Forms entry * **Webhook Automation** - Zero configuration webhook injection * **Animated UI** - Real-time system status with smooth animations = Use Cases = **Marketing Attribution**: Track which campaigns generate the most leads and sales - automatically! **CRM Integration**: UTM data flows seamlessly to your CRM via Gravity Forms webhooks. **A/B Testing**: Compare performance between different campaign variations. **ROI Analysis**: Calculate return on investment for different marketing channels. **Customer Journey**: Understand how visitors discover and interact with your site. == Installation == = Automatic Installation = 1. Log in to your WordPress admin panel 2. Navigate to Plugins > Add New 3. Search for "BaseCloud UTM Tracker" 4. Click "Install Now" and then "Activate" 5. Done! The COLLECTOR and COURIER are now active. = Manual Installation = 1. Download the plugin ZIP file 2. Log in to your WordPress admin panel 3. Navigate to Plugins > Add New > Upload Plugin 4. Choose the ZIP file and click "Install Now" 5. Activate the plugin = Configuration = 1. Navigate to **UTM Tracker** in your WordPress admin menu 2. Verify the **System Status** shows COLLECTOR and COURIER as Active 3. (Optional) Adjust cookie duration (default: 7 days) 4. (Optional) Add webhook URLs to exclude from UTM injection 5. Save settings **That's it!** The plugin works automatically - no manual field creation needed. == Frequently Asked Questions == = Do I need to create hidden fields in my Gravity Forms? = **No!** That's the magic of v2.0. The COURIER system automatically injects UTM data into webhook submissions. You don't need to create any fields. = What UTM parameters are tracked? = All 8 parameters: * referrer - Previous page URL * utm_source - Campaign source * utm_medium - Marketing medium * utm_campaign - Campaign name * utm_term - Keywords * gclid - Google Click ID * gbraid - Google Brand Engagement (iOS 14+) * wbraid - Web to App tracking (iOS 14+) = How long are UTM parameters stored? = UTM data is stored in cookies for the duration you specify in settings (1-365 days, default is 7 days). = Does this work with other form plugins besides Gravity Forms? = The COURIER system is specifically designed for Gravity Forms webhooks. The COLLECTOR (cookie tracking) works with any form plugin, but automatic webhook injection requires Gravity Forms. = Is the plugin GDPR compliant? = The plugin uses functional cookies necessary for tracking campaign attribution. You should include UTM tracking in your privacy policy and cookie notice. = Can I exclude certain webhooks from UTM injection? = Yes! In the plugin settings, add webhook URLs (one per line) to the "Excluded Webhook URLs" field. This is useful for internal notifications or universal webhooks. = Does this affect site performance? = No! The plugin is optimized for performance with minimal JavaScript and efficient server-side processing. = Will this work with Elementor popups? = Yes! The COLLECTOR includes special support for Elementor popup forms with automatic field population after popup opens. = Can I see the UTM data somewhere? = UTM data is stored in cookies and automatically populates Gravity Forms fields. You can view this data in your form submissions or integrate with analytics tools. == Screenshots == 1. **Plugin Settings** - Clean, professional admin interface for configuring UTM tracking 2. **Gravity Forms Integration** - UTM data automatically populates form fields 3. **Dashboard Menu** - Easy access with custom BaseCloud branding 4. **Cookie Storage** - Secure storage of UTM parameters for attribution == Changelog == = 3.0.3 = * 🎯 **Smart Field Matching** - Enhanced merge tag parser with intelligent field detection and normalization * **Field Aliases** - Automatic mapping for common field variations (phone = telephone/mobile/contact number) * **Special Character Support** - Properly handles ampersands, hyphens in field labels like "Name & Surname" * **Better Empty Handling** - Unmatched merge tags replaced with empty string instead of showing literal {FieldName} * **3-Tier Matching** - Exact match → Partial match → Alias-based matching for maximum compatibility * FIXED: Merge tags like {Phone} now properly match fields named "Contact Number", "Telephone", "Mobile" * FIXED: Complex field labels with special characters (& - .) now match simple merge tags = 3.0.2 = * FIXED: Webhook Edit/Delete buttons causing page reload - Added type="button" attribute to prevent form submission * IMPROVED: Webhook management stability and user experience = 3.0.1 = * Enhanced save button styling with border accent * Simplified version management (removed unnecessary constant) * Improved code maintainability and deployment infrastructure * Updated changelog formatting for better readability = 3.0.0 = * Complete rewrite with modern architecture * Enhanced visual effects with improved logo glow and pulse animation * Fixed entry date merge tags to display actual submission timestamps * Improved field detection with smart label matching * Added email tracking for notification success monitoring * Enhanced merge tag parser for entry properties and UTM data * Modern glassmorphism UI design * Webhook management with intuitive inline editor = 2.3.3 = **🔧 Critical Fixes + 🎨 Futuristic UI Upgrade** • **FIXED: Entry Date Merge Tag** - Now properly displays actual submission timestamp instead of literal text • **FIXED: Field Detection** - Use simple merge tags like {Name}, {Email}, {Phone} instead of field IDs • **FIXED: Smart Field Matching** - Intelligent partial matching for field labels (e.g., "Name & Surname" matches {Name}) • **NEW: Email Tracking** - Track if email notifications were successfully sent to client inbox • **NEW: Email Data in Webhook** - Includes email_sent (boolean), email_count, and email_notifications array • **NEW: Email Notification Details** - Shows recipient, subject, timestamp, and success status for each email • **IMPROVED: Merge Tag Parser** - Enhanced to recognize Entry Properties: {Entry Date}, {Entry ID}, {User IP}, {Source URL}, {Form Title} • **IMPROVED: Field Label Support** - Use exact field names from your forms - no more guessing field IDs! • **UI: Glassmorphism Design** - Beautiful frosted glass effect with backdrop blur on all containers • **UI: Animated Glow Effects** - Pulsing borders and glow animations on active webhooks • **UI: Shimmer Animations** - Sweeping light effects across containers • **UI: Floating Logo** - Animated logo with glow drop shadow • **UI: Gradient Buttons** - Enhanced buttons with hover shine effects and smooth transitions • **UI: In-Form Help** - Added helpful merge tag documentation directly in the webhook editor • **UI: Enhanced Shadows** - Improved depth with multi-layer shadows and lighting effects • **UI: Smooth Transitions** - Cubic-bezier easing for professional animations **Available Merge Tags:** - **Entry Properties:** {Entry Date}, {Entry ID}, {User IP}, {Source URL}, {Form Title} - **Field Names:** {Name}, {Email}, {Phone}, {Surname}, {Message} - use any field label from your form! - **UTM Parameters:** {utm_source}, {utm_campaign}, {utm_medium}, {utm_term}, {gclid}, {referrer}, {gbraid}, {wbraid} **Email Tracking Example:** ```json { "email_sent": true, "email_count": 2, "email_notifications": [ { "success": true, "to": "client@example.com", "subject": "New Form Submission", "timestamp": "2026-02-12 14:30:00" } ] } ``` = 3.0.0 = **🚀 WEBHOOK MANAGEMENT REVOLUTION - Complete Gravity Forms Webhook Replacement** • **NEW: Custom Webhook Builder** - Replace Gravity Forms webhook add-on with unlimited custom webhooks • **NEW: Merge Tag Support** - Full Gravity Forms merge tag integration ({Name:1}, {Email:6}, {entry_id}, etc.) • **NEW: Dynamic Field Mapping** - Select specific fields or send all form data automatically • **NEW: Two-Column Dashboard** - Professional layout with settings on left, webhooks on right • **NEW: Unlimited Webhooks** - Add as many webhooks as needed for each form submission • **NEW: Request Method Selection** - Support for GET, POST, PUT, PATCH, DELETE methods • **NEW: Individual Webhook Toggle** - Enable/disable webhooks without deleting configuration • **NEW: In-Place Editing** - Edit webhook configurations inline with smooth animations • **NEW: BaseCloud Logo** - Professional branding with icon instead of Lottie animation • **IMPROVED: Webhook System** - Complete webhook management replaces need for Gravity Forms webhook add-on • **IMPROVED: UTM Injection** - All custom webhooks automatically include UTM parameters • **IMPROVED: UI/UX** - Wider layout (1400px) with responsive grid design • **REMOVED: Denied Webhooks** - Exclusion list removed in favor of individual webhook control **Webhook Features:** - Unlimited custom webhooks per installation - Full Gravity Forms merge tag support - All Fields or Select Fields body options - Automatic UTM parameter injection - GET, POST, PUT, PATCH, DELETE methods - JSON request format - Enable/disable individual webhooks - In-place editing with live preview **Supported Merge Tags:** {FieldLabel:ID}, {entry_id}, {entry_date}, {form_id}, {form_title}, {utm_source}, {utm_campaign}, {gclid}, {referrer}, and more! **Breaking Changes:** None - Fully backward compatible with v2.x = 2.3.3 = **Lottie Logo Fix** • Fixed Lottie player script loading order to display logo properly • Changed script loading from footer to header for immediate availability • Resolved warning icon display issue on page load = 2.3.2 = **Animated Logo Addition** • Added animated BaseCloud Lottie logo to settings page header • Enhanced brand presence with looping logo animation • Improved visual consistency with BaseCloud brand identity = 2.3.1 = **API Endpoint Update** • **UPDATED: Default Webhook URL** - Migrated from legacy portal.basecloudglobal.com to new api.basecloudglobal.com endpoint • **IMPROVED: URL Format** - New webhook URLs use /webhook/ path structure for better API organization • **ENHANCED: Security** - Updated default excluded webhook to new API endpoint (https://api.basecloudglobal.com/webhook/92b3163196af061b6d009264) • **BACKWARD COMPATIBLE** - No impact on existing installations or custom excluded URLs **Technical Changes:** • Default denied URL updated to api.basecloudglobal.com domain • Activation hook updated with new default webhook URL • Maintained full backward compatibility with existing configurations = 2.3.0 = **🎨 DARK THEME UI REDESIGN - BaseCloud Branding** • **NEW: Dark Theme Interface** - Complete UI redesign with navy blue (#0f2c52) background and green (#4bc46a) accents • **NEW: Toggle Switches** - Modern toggle switches replace checkboxes for cleaner interface • **NEW: Gradient Effects** - Beautiful gradient borders and hover effects throughout • **ENHANCED: BaseCloud Branding** - Professional color scheme matching BaseCloud Global identity • **IMPROVED: Status Indicators** - Pulsing green status dots for active systems • **ADDED: Dark Cards** - Settings sections now use elegant dark cards with subtle shadows • **REDESIGNED: Button Styling** - Primary green buttons with hover effects and shadows • **UPDATED: Typography** - Improved font hierarchy with better contrast on dark background • **OPTIMIZED: Visual Hierarchy** - Better spacing and organization for improved UX • **POLISHED: Animations** - Smooth transitions and hover effects for modern feel **Design Elements:** • CSS variables for consistent theming (--bc-bg, --bc-card, --bc-green, --bc-border) • Gradient borders on cards and input fields • Box shadows for depth and dimension • Pulsing animations for status indicators • Modern toggle switch component with smooth transitions **Breaking Changes:** • None - fully backward compatible with v2.2.0 = 2.2.0 = **🚀 THE "BIG 4" FORM AUTOMATOR - Multi-Plugin Support** • **NEW: Elementor Pro Integration** - Automatic webhook injection for Elementor forms • **NEW: WPForms Integration** - Complete webhook automation for WPForms • **NEW: Contact Form 7 Integration** - Classic form plugin support with data injection • **CRITICAL: Async Webhook Support** - Fixed Gravity Forms background processing (Priority 1 save) • **ENHANCED: Database Storage** - UTM data now saved to database BEFORE async webhook queue • **IMPROVED: Multi-Plugin Dashboard** - Real-time status for all 4 form plugins • **FIXED: Cookie Availability in Async** - Reads from database when cookies unavailable • **ADDED: Form Plugin Detection** - Automatic detection of installed form plugins • **OPTIMIZED: Webhook Injection Logic** - Universal injection method for all form types • **UPDATED: Settings Panel** - Individual toggles for each form plugin integration **Technical Improvements:** • Priority 1 execution for `gform_after_submission` (runs before async queue at Priority 10) • Force database read in `inject_gf_webhook` for reliable async operation • Added `is_url_denied()` helper method for cleaner deny list checking • Support for JSON and array body formats in webhooks • Elementor filter: `elementor_pro/forms/webhook/request_args` • WPForms filter: `wpforms_webhooks_request_args` • CF7 filter: `wpcf7_posted_data` **Breaking Changes:** • None - fully backward compatible with v2.0.0 = 2.0.0 = **🚀 GAME CHANGER: Complete Automation Revolution** • **NEW: THE COURIER System** - Automatic UTM injection into Gravity Forms webhooks - NO manual fields needed! • **NEW: THE COLLECTOR System** - Advanced cookie-based tracking engine with enhanced reliability • **NEW: Animated Dashboard** - Real-time system diagnostics with smooth animations and status indicators • **NEW: Entry Meta Storage** - UTM data automatically saved with each Gravity Forms submission • **NEW: Excluded Webhooks** - Configure specific webhook URLs to bypass UTM injection • **NEW: System Health Monitor** - Live COLLECTOR and COURIER status with animated feedback • **ENHANCED: iOS 14+ Support** - Full gbraid and wbraid parameter tracking for Apple privacy • **IMPROVED: Zero Configuration** - Works automatically after activation - no setup required • **ADDED: Webhook Automation** - All 8 parameters auto-injected into webhook payloads • **REDESIGNED: Modern UI** - Beautiful gradient designs, hover effects, and smooth transitions • **REMOVED: Manual Field Creation** - No longer needed! COURIER handles everything automatically • **OPTIMIZED: Performance** - Streamlined code for faster page loads • **UPDATED: Cookie Names** - Standardized naming (removed bc_ prefix) for better CRM compatibility **Breaking Changes:** • Removed auto_create_fields option (no longer needed with COURIER system) • Removed tracked_parameters option (all 8 parameters now tracked by default) • Changed gclid cookie from bc_gclid to gclid for CRM compatibility = 1.2.2 = **Enhanced Secret Sauce - CRM/Webhook Integration Update** • **NEW: Google Brand Engagement Tracking** - Added gbraid and wbraid parameters for iOS 14+ tracking • **IMPROVED: GCLID Cookie Naming** - Changed from bc_gclid to gclid for better CRM/webhook compatibility • **ENHANCED: Field Population** - Streamlined secret sauce code with optimized field population • **UPDATED: Default Parameters** - Now includes referrer, utm_source, utm_medium, utm_campaign, utm_term, gclid, gbraid, wbraid • **IMPROVED: Event Triggering** - Added input and change events for better form integration • **OPTIMIZED: Label-Based Population** - Streamlined field detection for text fields set to hidden visibility • **ENHANCED: Popup Integration** - Improved Elementor popup support with better event handling = 1.2.1 = **🔧 Critical Gravity Forms Integration Fix** • **FIXED: Proper Field Creation** - Auto-created fields now use text fields with hidden visibility (WordPress best practice) • **NEW: Server-Side Population** - Added reliable server-side field population using Gravity Forms filters • **IMPROVED: Dynamic Population** - Fields now properly support "Allow field to be populated dynamically" setting • **ENHANCED: Parameter Name Support** - Correct parameter names (gclid, utm_source, etc.) for dynamic population • **ADDED: Triple Population Method** - Server-side + parameter matching + label fallback for 100% reliability • **FIXED: Field Detection** - Smart field detection prevents overwriting existing data • **IMPROVED: Form Compatibility** - Better compatibility with all Gravity Forms features and add-ons = 1.2.0 = **🚀 Major Feature Release - Enhanced Tracking & Automation** • **NEW: Referrer Tracking** - Automatically captures and stores the previous page URL (document.referrer) • **NEW: Auto-Create Hidden Fields** - Automatically adds UTM hidden fields to new Gravity Forms • **Enhanced JavaScript Engine** - Improved "secret sauce" code with modern ES6 features • **Smart Cookie Logic** - Only sets cookies if they don't exist, preventing data overwriting • **Advanced Popup Support** - Enhanced integration with Elementor and other page builders • **Automatic Field Detection** - Intelligent field creation with duplicate prevention • **Form-Level Settings** - Per-form control for UTM field creation in Gravity Forms admin • **Updated Default Parameters** - Now includes referrer tracking by default • **Improved Field Population** - Better support for multiple forms and popup scenarios • **Enhanced Admin UI** - Added referrer field to the field reference guide = 1.1.6 = **Major UI Enhancement** • Modern dashboard layout with real-time status indicators • Enhanced admin interface with responsive grid design • Added visual status cards showing tracking configuration at-a-glance • Improved success messages and user feedback • Professional styling with better visual hierarchy • Enhanced field reference guide with color-coded categories • Added quick stats display for cookie duration and integrations • Mobile-responsive admin interface • Better documentation integration and support links = 1.1.5 = **Release Update** • Bug fixes and improvements • Updated version for deployment = 1.1.4 = **Release Update** • Bug fixes and improvements • Updated version for deployment = 1.1.3 = **GitHub Actions Deployment Trigger** • Re-triggered automated deployment to WordPress.org • Ensure assets are properly deployed via GitHub Actions • Force deployment pipeline activation • Test automated SVN commit process = 1.1.2 = **Assets and Deployment Fix** • Added GitHub Actions workflow for automated WordPress.org deployment • Corrected asset filenames to meet WordPress.org requirements • Fixed plugin branding assets (banners and icons) • Established automated deployment pipeline matching Security Manager = 1.1.1 = **Deployment System Enhancement** • Updated deployment script to use Git-based approach • Removed SVN dependencies for cleaner deployment process • Added plugin network compatibility information • Improved deployment workflow matching Security Manager = 1.1.0 = **Admin Interface Enhancement** • Updated admin menu title from "UTM Tracker" to "UTM Analytics" • Enhanced admin interface terminology for better clarity • Improved user experience in WordPress dashboard navigation • Minor version bump for interface improvements = 1.0.3 = **Description Enhancement** • Enhanced plugin description with improved clarity • Added emphasis on secure cookie storage • Improved analytics terminology for better user understanding • Minor text improvements for professional presentation = 1.0.2 = **Assets Update** * Added professional plugin assets (banners and icons) * Enhanced WordPress.org directory presentation * Improved plugin branding and visual identity * Updated deployment workflow for assets = 1.0.1 = **Minor Update & Testing** * Improved GitHub repository integration and documentation * Enhanced deployment workflow testing * Minor code optimizations for better performance * Updated repository links and branding consistency = 1.0.0 = **Initial Release** * Complete UTM parameter tracking system * Gravity Forms integration for automatic field population * Configurable cookie duration (1-365 days) * Custom parameter tracking support * Professional admin interface with BaseCloud branding * HTTPS and security best practices * WordPress coding standards compliance * Translation ready == Upgrade Notice == = 1.0.0 = Initial release of BaseCloud UTM Tracker. Install now to start tracking your marketing campaign performance! == Privacy Policy == BaseCloud UTM Tracker uses cookies to store UTM parameters for campaign attribution. This data helps website owners understand which marketing campaigns are most effective. The plugin: * Stores UTM parameters in browser cookies * Does not collect personal information * Uses secure, same-site cookies * Allows configuration of cookie duration * Follows WordPress privacy best practices Website owners should include UTM tracking in their privacy policy and inform users about the use of functional cookies for campaign attribution. == Support == For support, feature requests, or bug reports, please visit: * **Plugin Support**: [WordPress.org Support Forum](https://wordpress.org/support/plugin/basecloud-utm-tracker/) * **Professional Support**: [BaseCloud Global](https://www.basecloudglobal.com/support/) * **Documentation**: [Plugin Documentation](https://www.basecloudglobal.com/docs/utm-tracker/) == About BaseCloud == BaseCloud Global is a technology company focused on creating powerful, user-friendly WordPress solutions for businesses and marketers. Our plugins are designed with performance, security, and usability in mind. Visit us at [basecloudglobal.com](https://www.basecloudglobal.com/) for more WordPress solutions.