inPIPE by Seresa allows you to generate, store, and manage UTM parameters—both plain and coded. The plugin automatically decodes coded UTM query strings when visitors land on your website, pushing the full UTM data to the dataLayer. This helps bypass ad blockers and improves tracking in Google Analytics, Facebook Ads, and other platforms.
- Generate & manage UTM query strings with ease
- Supports both plain and coded UTM parameters
- Decodes coded UTM links on-site and sends data to the dataLayer
- Reduces tracking disruptions caused by ad blockers
- Works with GA4, GTM, Facebook Ads & more
Use WP inPIPE for more reliable UTM tracking and better data collection!
1.0.9 - 2026-01-20
Server-Side Cookie for Safari ITP Bypass (gorilla_food)
FIXES
- Fixed duplicate error message display on subscription activation page
- Removed redundant error display from
inPipeBaseInput :error prop
- Error now only shows once in the styled red-bordered box
NEW FEATURES
- Gorilla Food Cookie System: Implemented server-side cookie system to bypass Safari ITP 7-day JavaScript cookie limitation
- Server-side PHP
setcookie() creates HTTP cookie that Safari treats as first-party
- 400-day cookie expiration (maximum browser-allowed duration)
- Unique 35-character visitor ID format:
XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX
- Uses 58-character set excluding confusing characters (O, o, l, 0)
- Visitor Identification: New
gorilla_food cookie provides persistent visitor identification
- Survives Safari ITP cookie restrictions that limit JavaScript cookies to 7 days
- Cookie refreshed on every page load to maintain freshness
- Bot detection to skip cookie setting for crawlers
- dataLayer Integration: Gorilla food value automatically pushed to dataLayer
gorilla_food - The unique visitor identifier
is_new_user - Boolean indicating if this is a new visitor (cookie just created)
- Available at priority 1 in
wp_head for all tracking scripts
NEW FILES
includes/core/cookie/index.php - Directory protection
includes/core/cookie/inpipe-gorilla-food-functions.php - Core generation functions and constants
includes/core/cookie/class-inpipe-gorilla-food-manager.php - Cookie management class
includes/core/cookie/class-inpipe-gorilla-food-integration.php - WordPress hooks and dataLayer output
TECHNICAL
- Added
INPIPE_COOKIE_NAME constant (gorilla_food)
- Added
INPIPE_COOKIE_EXPIRY constant (400 days)
- Added
INPIPE_COOKIE_ID_LENGTH constant (35 characters)
- Added
inpipe_generate_gorilla_food() function
- Added
inpipe_generate_random_string() function
- Added
inpipe_validate_gorilla_food() function
- Added
InPipe_Gorilla_Food_Manager class
- Added
InPipe_Gorilla_Food_Integration class with static access methods
- Bootstrap runs at
plugins_loaded priority 5
- Cookie set at
init priority 1 (before headers sent)
- dataLayer output at
wp_head priority 1
PREMIUM INTEGRATION
- Premium plugin's tracking.js now reads
gorilla_food from dataLayer
- All events include
gorilla_food and is_new_user fields
- PHP-collected events also include gorilla_food via
InPipe_Gorilla_Food_Integration::get_gorilla_food()
- Added
inpipe_premium_build_event() helper function for building events with gorilla_food
1.0.8 - 2026-01-15
Redis Stale Cache Recovery
NEW FEATURES
- Added
refresh_settings() method to Settings Manager for Redis stale cache recovery
- Force-reloads settings from database bypassing object cache
- Used by Connections Manager when
client_id appears empty due to stale Redis cache
- Used by Usage Webhook Sender when
subscription_key/subscription_status appear empty
- Prevents "Valid client ID not found" error on Redis-enabled servers (e.g., Cloudways)
- Ensures usage webhooks are scheduled and sent correctly even with stale cache
1.0.7 - 2026-01-13
Auto-Disable Event Tracking for Expired Subscriptions
NEW FEATURES
- Automatic Event Tracking Disable: Event tracking is now automatically disabled when subscription is not active
- Catches cases where subscription expired while site was offline
- Runs on plugin initialization and when subscription status changes
- Only
active and trialing subscriptions can have event tracking enabled
IMPROVEMENTS
- Subscription Data Always Available: Subscription data is now always included in admin settings, not just for active premium users
- Enables proper display of expired/cancelled subscription status in UI
- Allows users to see their subscription status even after it expires
UI ENHANCEMENTS
- Toggle Component Disabled State: Added disabled prop support to base toggle component
- Visual feedback with reduced opacity and grayscale filter
- Prevents interaction when disabled
- Proper ARIA accessibility attributes
BUG FIXES
- Fixed Auto-Refresh After Premium Upgrade: Page now correctly auto-refreshes after successful premium installation
- Backend was missing
safe_to_refresh and require_refresh flags in API response
- Frontend condition was always false, preventing the reload from triggering
CODE CLEANUP
- Removed dead code from Settings Manager:
- Removed unused
$is_premium property
- Removed unused
validate_license() method (~75 lines)
- Premium status now fully handled by
InPipe_Status_Manager
TECHNICAL
- Added
maybe_disable_event_tracking() method to InPipe_Status_Manager
- Updated
on_subscription_changed() to auto-disable tracking when subscription becomes inactive
- Modified
get_vue_admin_settings() to always include subscription data
- Enhanced
inPipeBaseToggle.vue with disabled state styling and handling
- Fixed
handle_premium_install() response to include refresh flags
- Updated
class-inpipe-settings-manager.php - Removed stale-cache check, dead code cleanup
1.0.6 - 2026-01-08
Redis Object Cache Compatibility Fix
BUG FIXES
- Fixed WordPress Hooks Not Registering on Redis Cache Hit: Hooks were incorrectly placed inside cache check blocks, causing them to not register when object cache returned a hit
- WordPress hooks are request-specific and must be registered on every request
- Cache was preventing
add_action() and add_filter() calls from executing on cached requests
- Fixes cron jobs not firing, REST API endpoints not registering, and event tracking not working on Redis/Memcached hosting
AFFECTED FILES
class-inpipe-utm-decoder.php - Fixed init_hooks() method
class-inpipe-premium-event-collector.php - Fixed register_wordpress_hooks(), register_pattern_based_hooks(), and initialize_form_protection() methods
TECHNICAL
- Moved all
add_action() and add_filter() calls outside of cache check if-blocks
- Cache is now only used for debug logging purposes (first-init detection)
- WordPress automatically deduplicates identical hook registrations, making this pattern safe
- Compatible with all object cache backends: Redis, Memcached, APCu, and default (no cache)
1.0.5 - 2026-01-06
Trial Subscription Support & REST API Fix
NEW FEATURES
- Trial Subscription Status Support: Added full support for
trialing subscription status from Stripe
- Trial users now properly recognized as premium users with access to all features
- Premium UI components display correctly during trial period
- Event tracking enabled for trial subscriptions
UI ENHANCEMENTS
- Trial Status Display: Added "Trial Active" status display in subscription management
- New blue badge styling for trial status (
.badge-trialing)
- Status indicator shows "Trial Active" instead of "Unknown"
- Consistent visual styling across all subscription status displays
BUG FIXES
- Fixed REST API 404 Errors on Cached Servers: Removed incorrect route caching that caused 404 errors on servers with persistent object cache (Redis/Memcached)
- Routes must be registered on every
rest_api_init call; caching was preventing registration
- Fixes
/wp-json/inpipe/v1/* endpoints returning 404 on cached hosting environments
- Fixed Premium Detection for Trials: Trial subscriptions now correctly detected as valid premium subscriptions
- Updated
isValid() method to accept trialing status
- Updated
inpipe_has_premium_subscription() SQL query to include trialing
- Fixed
is_active checks in API endpoints to recognize trial subscriptions
- Fixed Subscription Warning Banner: Trial users no longer see incorrect subscription warning messages
- Fixed Event Tracking for Trials: Event tracking now properly schedules for trial subscriptions
TECHNICAL
- Updated
class-inpipe-status-manager.php with trialing status support
- Updated
class-inpipe-api-endpoints-free.php with trialing status checks and removed route caching
- Added
@since 1.0.5 documentation tags to all modified methods
1.0.4 - 2025-12-16
Subscription Type Fix & Webhook Improvements
BUG FIXES
- Fixed Subscription Type Mapping: Subscription type now correctly reads from API response
- Changed from
metadata_plan_name to plan_name field to match actual API response
- Fixes issue where
subscription_type was defaulting to "free" after premium upgrade
- Supported plan types: Trial, Entry, Premium, Professional, Enterprise
IMPROVEMENTS
- Simplified Webhook Handler: Refactored
handle_subscription_webhook() to use action hook pattern
- Now delegates webhook processing to Premium plugin via
inpipe_process_webhook action hook
- Cleaner separation between Free and Premium plugin responsibilities
- Premium plugin hooks in with:
add_action('inpipe_process_webhook', [$this, 'process_webhook'], 10, 3)
1.0.3 - 2025-12-01
CRITICAL Uninstall Fix + Security Improvements + UI Fixes
BUG FIXES
- Fixed Subscription Code Whitespace: Subscription codes with leading/trailing spaces now validate correctly
- Added trim() to subscription code input before validation and API submission
- Prevents "Invalid subscription code format" error when users paste codes with extra whitespace
UI ENHANCEMENTS
- Mobile Responsive Buttons: Fixed upgrade buttons in Settings component for mobile view
- Buttons now stack vertically and take full width on screens 768px and below
CRITICAL BUG FIX
- Fixed Uninstall Table Removal: Resolved critical bug where plugin tables without wp_ prefix were not being removed during uninstallation
- The Issue: Tables like
inpipe_premium_test (without wp_ prefix) were not being deleted
- Root Cause: Code was incorrectly stripping and re-adding the WordPress prefix to ALL table names
- The Fix: Now uses full table names directly from database without prefix manipulation
- Impact: All inpipe tables are now properly removed, regardless of prefix pattern
- Tested: Verified working with wp_inpipe_, inpipe_, and inpipe patterns in Docker WordPress environment
SECURITY ENHANCEMENTS
- Added SQL Injection Protection: Implemented multi-layer security for table DROP operations
- Layer 1: Regex validation (alphanumeric + underscore only)
- Layer 2: Must contain 'inpipe' string
- Layer 3: esc_sql() sanitization before query
- Layer 4: Tables only from trusted SHOW TABLES source
- Layer 5: Verification with prepared statements
- Result: All 12 security validation tests passed
TABLES NOW PROPERLY REMOVED
- wp_inpipe_* (standard FREE tables)
- wp_inpipe_premium_* (PREMIUM with wp_ prefix)
- inpipe_premium_ (PREMIUM without wp_ prefix) - NOW FIXED!*
- inpipe (backup/custom tables)
- All variations (mixed case, numbers, various prefixes)
DOCUMENTATION
- Updated File Headers: Added @since 1.0.3 documentation to uninstall.php
- Added Test Results: Comprehensive Docker test results documented
- Added Security Summary: Full security validation documentation
1.0.3 (Previous) - 2025-11-27
UI Improvements, Component Enhancements & Subscription API Fix
BUG FIXES
- Fixed Subscription Data Mapping: Corrected API response field mapping in subscription verification process
subscription_type now correctly reads from metadata_plan_name (e.g., "Trial", "Pro", "Business")
plan_type now correctly reads from plan field (e.g., "Monthly", "Yearly")
UI ENHANCEMENTS
- Enhanced Loading Spinner: Added professional loading spinner with smooth animation for Vue admin app loading state
- Improved Loading Container: Better styled loading container with centered layout and visual feedback
- Button Disabled States: Added proper disabled button styling with visual feedback for better UX
COMPONENT UPDATES
- Base Button Component: Added loading spinner animation and disabled state styling
- Vue Admin Controller: Enhanced render_admin_app with inline CSS for loading states
- Settings Component: UI cleanups and improved layout
- Subscription Component: Streamlined interface and better visual hierarchy
- Translation Updates: Enhanced Vue translations for better internationalization
TECHNICAL
- Merged upstream changes with local improvements
- Resolved merge conflicts in Vue admin and button components
- Updated doc blocks with @since 1.0.3 tags
1.0.2 - 2025-11-20
Bug Fixes, Uninstall Improvements & UI Updates
BUG FIXES
- Fixed Premium Upgrade File Issue: Resolved file handling error during premium package installation and upgrade process
- Fixed Incomplete Uninstall After Failed Premium Upgrade: Plugin now properly removes ALL database tables with
inpipe_ prefix during uninstall, preventing orphaned premium tables from breaking WordPress admin after failed upgrades
- Fixed Auto-Refresh After Premium Upgrade: Replaced deprecated
window.location.reload(true) with cache-busting URL approach to ensure premium features display immediately after upgrade without requiring manual hard refresh
UI & MESSAGING UPDATES
- Updated Upgrade Messaging: Changed all "Upgrade to Premium" messaging to promote "Premium Transmute Engine™ service for WordPress"
- Enhanced Service Description: Added detailed messaging about seamlessly sending event data to multiple endpoints (GA4, Google Ads, Facebook Ads, Klaviyo, Big Query) processed server-side
- Updated Call-to-Action Buttons: Changed upgrade CTAs to "Learn More" and "Free Trial" buttons with new URLs pointing to Transmute Engine pages
- Improved Link Structure: Made "Get a free trial today" a clickable link in settings component
- Terminology Updates: Changed all references from "endPIPEs" to "outPIPEs" throughout the interface
- Removed Premium Feature Cards: Streamlined subscription component by removing individual feature cards in favor of focused upgrade messaging
- Updated Support URLs: Changed documentation and support links to point to support.seresa.io and Seresa YouTube channel
- Consistent Header Sizing: Standardized header sizes across Settings and Subscription components for better visual hierarchy
- Optimized Button Layout: Compressed upgrade buttons to left-aligned layout for better visual flow
- Refined Description Styling: Adjusted upgrade description text sizing for better readability
IMPROVEMENTS
- Simplified Uninstall Logic: Removed complex conditional cleanup logic - uninstall now unconditionally removes ALL tables starting with
inpipe_ prefix regardless of detection state
- Enhanced Cleanup Reliability: Uninstall process no longer relies on premium detection; uses pure prefix-based table discovery to ensure complete cleanup in all scenarios
- Improved WordPress Core Options Cleanup: Automatically removes inPIPE references from WordPress core options (
uninstall_plugins, recently_activated, cron, _site_transient_update_plugins) during uninstallation
- Modern Browser Compatibility: Updated page reload mechanism to work reliably across all modern browsers by using timestamp-based cache-busting instead of deprecated reload methods
- Enhanced Premium Integration: Improved premium loader functionality and status manager for better premium feature detection and handling
- Improved Vue Admin Interface: Enhanced Vue admin component with improved caching, settings management, and connection handling
- Enhanced Form Components: Significantly improved base input component with 200+ lines of new functionality for better user input handling and validation
- Updated Translation System: Refined Vue translations for better internationalization support with new Transmute Engine™ messaging
- API Endpoint Refinements: Improved API endpoint handling and initialization for more reliable premium integration
- Button Component Enhancement: Added new functionality to base button component for improved user interactions
- Settings Component Updates: Enhanced settings component with improved configuration handling and upgrade messaging
TECHNICAL ENHANCEMENTS
- Updated 10 core files including API endpoints, status manager, Vue admin controller, and Vue components
- Added 374 new lines of functionality with 71 lines of optimization
- Improved premium loader class implementation
- Enhanced API initialization logic
1.0.1 - 2025-07-17
Major Enhancement: Unified Premium Detection System
NEW FEATURES
- Status Manager Integration: Implemented centralized premium detection system for consistent plugin behavior
- Enhanced Uninstall Safety: Added intelligent premium detection during uninstallation with robust fallback mechanisms
- Improved API Reliability: Unified premium detection across all API endpoints and initialization
IMPROVEMENTS
- Premium Detection Consolidation: Replaced 13+ scattered premium detection points with single unified system
- API Endpoints Free: 5 detection points → 1 unified Status Manager call (80% complexity reduction)
- API Initialization: 3 detection points → unified premium detection
- Smart Uninstaller: Enhanced with Status Manager integration plus 4 robust fallback methods
- Enhanced Error Handling: Added comprehensive safety checks and graceful degradation across all components
- Debug Logging: Improved debugging capabilities with detailed Status Manager integration logging
- Code Maintainability: Centralized premium logic reduces maintenance overhead and improves consistency
TECHNICAL ENHANCEMENTS
- API Endpoints: Updated
handle_subscription_webhook(), handle_premium_integration(), handle_premium_install(), and handle_premium_install_status() methods with unified premium detection
- Backup System: Enhanced backup creation and restoration with Status Manager integration
- Uninstall Process: Added
is_uninstall_context_safe() method for secure Status Manager usage during plugin removal
- WordPress Standards: Maintained full compliance with WordPress coding standards and best practices
SECURITY & RELIABILITY
- Uninstall Context Safety: Added pre-flight checks before Status Manager usage during uninstallation
- Database Validation: Enhanced database connection verification and WordPress function availability checks
- Graceful Degradation: Improved fallback mechanisms when Status Manager unavailable
- Exception Handling: Comprehensive error handling prevents fatal errors during premium detection
COMPATIBILITY
- Backward Compatibility: All existing functionality preserved with zero breaking changes
- WordPress Core: Fully compatible with WordPress 5.0+ requirements
- PHP Compatibility: Maintains PHP 7.4+ compatibility with improved error handling
- Performance: Enhanced premium detection with minimal performance overhead
DEVELOPER NOTES
- Class Documentation: Updated DocBlocks with @since 1.0.1 tags for all modified methods
- API Preservation: 100% API functionality maintained - all endpoints continue to work identically
- Hook Integration: All WordPress action and filter hooks preserved without modifications
- Debug Support: Enhanced debugging capabilities for troubleshooting premium detection issues
FILES UPDATED
uninstall.php – Stripped constructor and 4 internal methods: smart uninstaller setup and safety validation
inpipe-by-seresa.php – Removed 15 init, activation, component loading, and logging functions
includes/core/class-inpipe-vue-admin.php – Stripped Vue admin controller constructor and 4 methods for cached settings and connections
includes/core/class-inpipe-status-manager.php – Removed 21 premium detection, validation, and mode management methods
includes/core/class-inpipe-settings-manager.php – Stripped constructor and load_settings logic
includes/core/class-inpipe-feature-manager.php – Stripped InPipe_Feature_Manager core feature loader
includes/free/premium-upgrade/class-inpipe-simple-subscription-verifier.php – Removed verify_with_server
includes/free/premium-upgrade/class-inpipe-premium-integrator.php – Removed integrate_package and rollback_integration
includes/free/premium-upgrade/class-inpipe-package-installer.php – Stripped 6 installer and package handling methods
includes/free/premium-upgrade/class-inpipe-backup-manager.php – Stripped constructor and ensure_wp_constants
includes/core/api/inpipe-api-init.php – Stripped inpipe_init_api_endpoints
includes/core/api/class-inpipe-api-endpoints-free.php – Stripped 8 methods covering public UTM validation, premium integration, webhook handling, backup, and install status
UPGRADE NOTES
- Automatic Enhancement: Existing installations automatically benefit from improved premium detection
- No Configuration Required: Changes are transparent to end users
- Plugin Stability: Enhanced reliability for both free and premium installations
- Debugging Improvements: Better error reporting and diagnostic capabilities
1.0.0 - 2025-07-07