Getting User Agent with Contact Form 7 Submissions
Basic Solution
The simplest way to capture the user agent and send it with CF7 submissions is by using the wpcf7_mail_sent
hook. Here's how to implement it:
This code sends the user agent to your development email whenever a form is submitted:
add_action('wpcf7_mail_sent', 'send_user_agent_info');
function send_user_agent_info($contact_form) {
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$submission = WPCF7_Submission::get_instance();
if ($submission) {
$posted_data = $submission->get_posted_data();
$form_title = $contact_form->title();
wp_mail(
'your-dev-email@example.com',
'Form Submission User Agent Info - ' . $form_title,
'User Agent: ' . $user_agent . "\n\nForm ID: " . $contact_form->id()
);
}
}
Enhanced Solution with Additional Data
This version includes more details and better formatting:
add_action('wpcf7_mail_sent', 'send_detailed_submission_info');
function send_detailed_submission_info($contact_form) {
$submission = WPCF7_Submission::get_instance();
if ($submission) {
$user_agent = sanitize_text_field($_SERVER['HTTP_USER_AGENT']);
$ip_address = $submission->get_meta('remote_ip');
$form_title = $contact_form->title();
$message = sprintf(
"Form Submission Details\n\n" .
"Form: %s\n" .
"Form ID: %d\n" .
"User Agent: %s\n" .
"IP Address: %s\n" .
"Date: %s",
$form_title,
$contact_form->id(),
$user_agent,
$ip_address,
current_time('mysql')
);
wp_mail(
'your-dev-email@example.com',
'Form Submission Details - ' . $form_title,
$message
);
}
}
Security Considerations
- Always sanitize the user agent string using
sanitize_text_field()
- Consider GDPR implications when storing user data
- Limit email notifications to prevent spam
- Use WordPress's built-in
wp_mail()
function for sending emails
Alternative Solutions
Using Additional Mail Templates
CF7 allows multiple mail templates. You could add a second mail template in your form settings dedicated to technical information:
- Go to form settings
- Add a new mail template
- Include this special mail tag:
[_remote_ip]
- Add your development email as the recipient
Helpful Plugins
-
Contact Form 7 Database Addon – CFDB7
- Stores all form submissions in the database
- Includes user agent information automatically
- Provides export functionality
-
Advanced CF7 DB
- Similar to CFDB7 but with additional features
- Includes user agent and IP tracking
- Offers detailed analytics
Common Pitfalls
- Don't rely solely on
$_SERVER['HTTP_USER_AGENT']
as it can be spoofed
- Avoid sending sensitive information via email
- Don't store user agent data longer than necessary
- Be cautious with email volume to prevent server overload
Remember to test your implementation thoroughly, especially with different browsers and devices to ensure consistent data collection.
For production environments, consider implementing rate limiting and logging to prevent abuse of the email notification system.