13 KiB
WPForms to Mailjet Automation - Configuration Guide
Overview
This plugin supports extensive customization through WordPress filters. You can modify settings without touching core plugin files, ensuring your customizations survive plugin updates.
Quick Start
-
Copy the sample configuration file:
cp wpfmj-config-sample.php wpfmj-config.php -
Edit
wpfmj-config.phpwith your preferred settings -
Save and upload - Settings take effect immediately
The wpfmj-config.php file is automatically loaded by the plugin and is excluded from version control.
Available Configuration Options
1. Error Log Retention Period
Filter: wpfmj_error_log_retention_days
Default: 90 days
Range: 7-365 days
Type: Integer
Controls how long resolved error logs are kept before automatic deletion.
add_filter('wpfmj_error_log_retention_days', function($days) {
return 180; // Keep for 6 months
});
Considerations:
- Shorter periods (7-30 days): Saves database space, good for high-volume sites
- Longer periods (90-365 days): Better for audit trails and trend analysis
- Optimal: 90 days balances storage and historical data
2. API Rate Limit
Filter: wpfmj_api_rate_limit
Default: 60 requests/minute
Range: 10-300 requests/minute
Type: Integer
Sets the maximum Mailjet API requests per minute per API key.
add_filter('wpfmj_api_rate_limit', function($limit) {
return 120; // Double the default
});
Considerations:
- Lower limits (10-30): More conservative, prevents rate limit errors
- Default (60): Balanced for most sites
- Higher limits (120-300): For high-traffic sites, but monitor closely
- Mailjet limit: 300 requests/minute maximum
⚠️ Warning: Setting too high may cause Mailjet to reject requests.
3. Maximum Retry Attempts
Filter: wpfmj_max_retry_attempts
Default: 3 attempts
Range: 1-5 attempts
Type: Integer
Number of retry attempts for failed API calls.
add_filter('wpfmj_max_retry_attempts', function($attempts) {
return 5; // Maximum persistence
});
Retry Timing:
- Attempt 1: Immediate
- Attempt 2: After 1 second
- Attempt 3: After 2 seconds
- Attempt 4: After 4 seconds
- Attempt 5: After 8 seconds
Considerations:
- 1 attempt: Fast failure, good for testing
- 3 attempts (default): Balanced approach
- 5 attempts: Maximum reliability, but slower failure detection
4. Email Notification Recipients
Filter: wpfmj_failure_notification_emails
Default: WordPress admin email
Type: Array of email addresses
Customize who receives failure notifications.
add_filter('wpfmj_failure_notification_emails', function($emails) {
return array(
get_option('admin_email'),
'developer@example.com',
'support@example.com',
'monitoring@example.com'
);
});
Use Cases:
- Development team: Add developer emails
- Support team: Add support desk email
- Monitoring: Integrate with ticketing systems
- Multiple admins: Ensure redundancy
5. Disable Email Notifications
Filter: wpfmj_disable_failure_notifications
Default: false (notifications enabled)
Type: Boolean
Completely disable email notifications.
add_filter('wpfmj_disable_failure_notifications', function($disabled) {
return true; // Disable all emails
});
When to disable:
- Using external monitoring tools
- High-volume sites with frequent transient errors
- During development/testing
⚠️ Note: Errors are still logged in the database even when notifications are disabled.
6. Encryption Method
Filter: wpfmj_encryption_method
Default: AES-256-CBC
Type: String
Change the encryption algorithm for API credentials.
add_filter('wpfmj_encryption_method', function($method) {
return 'AES-256-GCM'; // More modern algorithm
});
Available Methods:
AES-256-CBC(default, widely compatible)AES-256-GCM(modern, authenticated encryption)AES-192-CBC- See
openssl_get_cipher_methods()for full list
⚠️ CRITICAL WARNING:
- Only change BEFORE storing any credentials
- Changing after credentials are stored will make them unreadable
- Requires re-entering all API keys if changed later
- Test thoroughly after changing
7. Debug Mode
Filter: wpfmj_debug_mode
Default: false
Type: Boolean
Enable verbose logging for troubleshooting.
add_filter('wpfmj_debug_mode', function($debug) {
return true; // Enable debug logging
});
What gets logged:
- API request details
- Retry attempts with timestamps
- Decryption operations
- Rate limit hits
- Form processing steps
Important:
- Only enable when troubleshooting
- Logs may contain sensitive information
- Disable in production unless necessary
- Check
wp-content/debug.log
8. Cleanup Cron Schedule
Filter: wpfmj_cleanup_schedule
Default: weekly
Type: String
Change how often error log cleanup runs.
add_filter('wpfmj_cleanup_schedule', function($schedule) {
return 'daily'; // Clean up more frequently
});
Available Schedules:
hourly- Every hourtwicedaily- Twice per daydaily- Once per dayweekly- Once per week (default)
Considerations:
- High-volume sites: Use
dailyortwicedaily - Low-volume sites:
weeklyis sufficient - More frequent = less database bloat
Advanced Configuration Examples
Example 1: High-Traffic Site
<?php
// wpfmj-config.php for high-traffic e-commerce site
// Aggressive cleanup to manage database size
add_filter('wpfmj_error_log_retention_days', function($days) {
return 30; // Only 30 days
});
// Higher rate limit for busy periods
add_filter('wpfmj_api_rate_limit', function($limit) {
return 120;
});
// More frequent cleanup
add_filter('wpfmj_cleanup_schedule', function($schedule) {
return 'daily';
});
// Multiple notification recipients
add_filter('wpfmj_failure_notification_emails', function($emails) {
return array(
'dev-team@example.com',
'ops@example.com'
);
});
Example 2: Development Environment
<?php
// wpfmj-config.php for staging/dev environment
// Disable email spam during testing
add_filter('wpfmj_disable_failure_notifications', function($disabled) {
return true;
});
// Enable debug mode
add_filter('wpfmj_debug_mode', function($debug) {
return true;
});
// Lower retry attempts for faster testing
add_filter('wpfmj_max_retry_attempts', function($attempts) {
return 1; // Fail fast
});
Example 3: Enterprise Setup
<?php
// wpfmj-config.php for enterprise with compliance requirements
// Extended retention for audit compliance
add_filter('wpfmj_error_log_retention_days', function($days) {
return 365; // 1 year
});
// Maximum reliability
add_filter('wpfmj_max_retry_attempts', function($attempts) {
return 5;
});
// Security team notifications
add_filter('wpfmj_failure_notification_emails', function($emails) {
return array(
'security@example.com',
'compliance@example.com',
'it-ops@example.com'
);
});
// Use modern encryption
add_filter('wpfmj_encryption_method', function($method) {
return 'AES-256-GCM';
});
Example 4: Minimal Configuration
<?php
// wpfmj-config.php for simple site
// Just increase error retention slightly
add_filter('wpfmj_error_log_retention_days', function($days) {
return 120; // 4 months
});
Environment-Specific Configuration
You can use environment variables or constants for different environments:
<?php
// wpfmj-config.php with environment detection
// Detect environment
$is_dev = (defined('WP_DEBUG') && WP_DEBUG === true);
$is_staging = (strpos($_SERVER['HTTP_HOST'], 'staging') !== false);
if ($is_dev) {
// Development settings
add_filter('wpfmj_disable_failure_notifications', '__return_true');
add_filter('wpfmj_debug_mode', '__return_true');
add_filter('wpfmj_max_retry_attempts', function() { return 1; });
} elseif ($is_staging) {
// Staging settings
add_filter('wpfmj_error_log_retention_days', function() { return 30; });
add_filter('wpfmj_failure_notification_emails', function() {
return array('staging-alerts@example.com');
});
} else {
// Production settings
add_filter('wpfmj_error_log_retention_days', function() { return 90; });
add_filter('wpfmj_api_rate_limit', function() { return 120; });
add_filter('wpfmj_failure_notification_emails', function() {
return array(
'ops@example.com',
'monitoring@example.com'
);
});
}
Monitoring Your Configuration
Check Current Settings
Add this to a test plugin or theme's functions.php temporarily:
add_action('admin_init', function() {
if (current_user_can('manage_options') && isset($_GET['wpfmj_check_config'])) {
echo '<pre>';
echo 'Error Retention: ' . apply_filters('wpfmj_error_log_retention_days', 90) . " days\n";
echo 'API Rate Limit: ' . apply_filters('wpfmj_api_rate_limit', 60) . " req/min\n";
echo 'Max Retries: ' . apply_filters('wpfmj_max_retry_attempts', 3) . " attempts\n";
echo 'Debug Mode: ' . (apply_filters('wpfmj_debug_mode', false) ? 'ON' : 'OFF') . "\n";
echo 'Notifications: ' . (apply_filters('wpfmj_disable_failure_notifications', false) ? 'DISABLED' : 'ENABLED') . "\n";
echo '</pre>';
exit;
}
});
Visit: yoursite.com/wp-admin/?wpfmj_check_config
Troubleshooting Configuration
Configuration Not Loading
- Check file name: Must be exactly
wpfmj-config.php - Check file location: Must be in plugin root directory
- Check syntax: Use PHP linter to verify no errors
- Check filters: Ensure using
add_filter()notadd_action()
Values Not Changing
- Clear caches: Object cache, opcache, page cache
- Check filter priority: Default priority is 10
- Verify filter name: Must match exactly (case-sensitive)
- Test with simple value: Try returning a hardcoded value first
Debug Logging Not Working
-
Enable WordPress debug logging:
// In wp-config.php define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); define('WP_DEBUG_DISPLAY', false); -
Check debug.log location:
wp-content/debug.log -
Verify debug mode filter is applied
Best Practices
DO:
✅ Use wpfmj-config.php for customizations
✅ Keep configuration in version control (except sensitive data)
✅ Document your customizations
✅ Test configuration changes in staging first
✅ Use environment detection for different setups
✅ Monitor logs after configuration changes
DON'T:
❌ Modify core plugin files directly
❌ Store sensitive data in configuration file
❌ Use extremely high rate limits without testing
❌ Disable notifications without alternative monitoring
❌ Change encryption method after storing credentials
❌ Enable debug mode in production long-term
Performance Considerations
| Setting | Impact | Recommendation |
|---|---|---|
| Error Retention (Low) | Less DB storage | Good for high-volume |
| Error Retention (High) | More DB storage | Good for compliance |
| API Rate Limit (Low) | Slower processing | More reliable |
| API Rate Limit (High) | Faster processing | Monitor closely |
| Max Retries (Low) | Fast failure | Development |
| Max Retries (High) | Slow failure | Production |
| Cleanup (Frequent) | More CPU usage | High-volume sites |
| Cleanup (Infrequent) | Less CPU usage | Low-volume sites |
Security Considerations
- Never commit sensitive data: Use environment variables for secrets
- File permissions: Set
wpfmj-config.phpto 644 or 600 - Encryption changes: Only change before first use
- Debug mode: Never leave enabled with sensitive operations
- Email recipients: Ensure all recipients are trusted
Getting Help
If you need assistance with configuration:
- Check debug logs: Enable debug mode temporarily
- Test with defaults: Remove config file to use defaults
- Verify syntax: Use PHP linter on config file
- Review examples: See examples in this guide
- Contact support: Include configuration (without sensitive data)
Version History
1.0.1
- Added configurable error retention period
- Added configurable API rate limiting
- Added configurable retry attempts
- Added configurable email notifications
- Added configurable encryption method
- Added debug mode
- Added cleanup schedule customization
Last Updated: October 16, 2025
Plugin Version: 1.0.1+
Compatibility: WordPress 5.8+, PHP 7.4+