GetResponse and WordPress: The Source Data Gap
GetResponse is a well-established email marketing and automation platform used by small businesses, ecommerce operators, and digital marketers. It handles email campaigns, autoresponders, landing pages, webinars, and marketing automation. Many GetResponse users also have a WordPress site as their primary web presence, using it for blog content, lead capture forms, and general brand marketing.
The attribution gap shows up when a subscriber who originally found you through a paid ad or an organic blog post ends up in your GetResponse account without any record of where they came from. You know you have 3,000 subscribers. You may not know whether 2,000 of them came from organic search or 500 of them came from the Facebook campaign you ran last quarter.
This guide covers how to capture UTM source data on your WordPress site and pass it to GetResponse subscriber records, so your email list carries the channel and campaign data you need to understand what’s actually working.
What You Can Do With Source Data in GetResponse
GetResponse supports custom contact fields, which is where UTM data lives once it’s captured. With source data on subscriber records, you can:
- Segment by acquisition channel. Create a list segment for subscribers from Google Ads, a different one for organic search, and another for Facebook campaigns. Send targeted content to each segment or compare their engagement metrics to understand which channels produce your most active subscribers.
- Build source-specific automation workflows. GetResponse’s marketing automation supports conditions on custom contact fields. A workflow can branch on “lead source equals facebook” to send a different sequence than the one sent to subscribers who found you through organic search. Someone who clicked an ad is in a different context than someone who found your content by searching.
- Report on campaign performance beyond clicks. If you tagged a specific email campaign that drove traffic to your opt-in page, filter subscribers by that campaign’s UTM to see how many subscribers it produced. This connects ad spend and send volume to actual list growth.
- Understand list quality over time. Engagement rate by source often reveals that organic subscribers open at higher rates and unsubscribe at lower rates than paid traffic subscribers. Knowing this changes how you evaluate the cost of list acquisition.
Step 1: Tag Your Marketing Links With UTMs
Source tracking only works if your traffic comes from tagged links. A UTM-tagged URL looks like:
https://yoursite.com/blog-post/?utm_source=facebook&utm_medium=paid_social&utm_campaign=q3-awareness&utm_content=carousel-ad
Add UTM parameters to:
- Every paid ad (Facebook, Instagram, Google, YouTube)
- Every email campaign link that sends traffic to your WordPress site
- Partner and affiliate links where you control the URL
- Social posts during tracked campaigns
Organic search traffic doesn’t need manual UTM tags — it appears in your data with empty UTM fields, which is useful context in itself (a subscriber whose fields are empty either came from organic search or direct traffic). The important thing is that every channel you pay for or actively promote gets tagged.
Step 2: Capture UTMs in a Cookie on WordPress
UTM parameters in a URL only exist on the first pageview. A JavaScript snippet that fires on page load reads those parameters and stores them in a cookie before the visitor navigates away:
document.addEventListener('DOMContentLoaded', function() {
const params = new URLSearchParams(window.location.search);
const utmParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term'];
utmParams.forEach(function(param) {
const val = params.get(param);
if (val) {
document.cookie = param + '=' + encodeURIComponent(val)
+ '; path=/; max-age=7776000; SameSite=Lax';
}
});
if (!readCookie('landing_page')) {
document.cookie = 'landing_page=' + encodeURIComponent(window.location.href)
+ '; path=/; max-age=7776000; SameSite=Lax';
}
});
function readCookie(name) {
const m = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
return m ? decodeURIComponent(m[2]) : '';
}
The 90-day expiry (max-age 7776000 seconds) means the source data persists even if the visitor returns days later before subscribing. Install this script using WPCode, your theme’s functions.php via wp_enqueue_scripts, or another WordPress custom code method.
Step 3: Create Custom Fields in GetResponse
GetResponse lets you create custom contact fields to store additional data beyond the default fields. In your GetResponse account, go to Contacts > Custom Fields and create text fields for:
- lead_source (from utm_source)
- lead_medium (from utm_medium)
- lead_campaign (from utm_campaign)
- lead_content (from utm_content)
- lead_keyword (from utm_term)
- landing_page (the first URL the visitor hit)
Note the field IDs that GetResponse assigns — you’ll need them when configuring the API or integration.
Step 4: Connect Your WordPress Forms to GetResponse With Hidden UTM Fields
The connection method depends on your form setup:
Option A: GetResponse’s WordPress plugin with native forms. GetResponse has an official WordPress plugin that lets you embed subscription forms directly on your WordPress pages. Add hidden fields to the form for each UTM custom field, and use JavaScript to populate those hidden fields from cookies when the page loads:
document.addEventListener('DOMContentLoaded', function() {
const fieldMap = {
'lead_source': 'utm_source',
'lead_medium': 'utm_medium',
'lead_campaign': 'utm_campaign',
'lead_content': 'utm_content',
'lead_keyword': 'utm_term',
'landing_page': 'landing_page'
};
Object.entries(fieldMap).forEach(function([fieldName, cookieName]) {
const val = readCookie(cookieName);
if (val) {
const input = document.querySelector('[name="' + fieldName + '"]');
if (input) input.value = val;
}
});
});
Replace the field names in the map with the actual input names from your GetResponse form’s HTML.
Option B: WordPress form plugins with GetResponse integration. WPForms, Gravity Forms, and Fluent Forms all have GetResponse add-ons or can connect via Zapier. Add hidden UTM fields to your form, populate them from cookies with the same JavaScript, and map those fields to GetResponse custom fields in the integration settings.
Option C: GetResponse API directly. GetResponse’s REST API allows you to add contacts with custom field values programmatically. If you have a developer, a form submission webhook can call the GetResponse API directly with the UTM data from hidden fields, giving you the most reliable integration without depending on a third-party connection layer.
Step 5: Verify the Full Pipeline
Test before you trust the data:
- Open an incognito window and visit:
yoursite.com/?utm_source=test&utm_medium=email&utm_campaign=tracking-check - Navigate to another page (confirm UTM cookies are written via DevTools > Application > Cookies)
- Submit your subscription form with a test email address
- Find the contact in GetResponse and check their custom fields — lead_source should show “test”, lead_medium should show “email”, lead_campaign should show “tracking-check”
If the fields are empty, isolate each step: Are the cookies being written? Are the hidden fields being populated by JavaScript? Is the integration mapping the fields to the correct GetResponse custom field IDs?
Using Source Data in GetResponse
Once source data is on contact records:
Segment your list by source. In GetResponse, create segments based on custom field values. “Subscribers from Google Ads” (lead_source = google, lead_medium = cpc), “Organic subscribers” (lead_source empty or lead_medium = organic), “Facebook campaign subscribers” (lead_campaign contains your campaign name). Segments let you analyze engagement by channel and send targeted campaigns to specific groups.
Automation workflow conditions. In GetResponse’s marketing automation, add conditions that check custom field values. “If lead_source equals facebook” can route a contact into a different workflow branch — a sequence calibrated for paid-traffic subscribers who may need more nurturing before they trust you enough to buy.
Campaign performance tracking. If you run a specific campaign (a product launch, a free training) and tag all traffic from it with a unique utm_campaign value, you can filter GetResponse contacts by that campaign value to count how many subscribers the campaign produced. Combine with revenue data to calculate list-growth cost per subscriber by campaign.
The Per-Form Maintenance Problem
This setup works well but has a maintenance cost. Every new opt-in form you add to your WordPress site needs the hidden UTM fields and the JavaScript to populate them. Every time you change your GetResponse form layout or add a new custom field, the integration needs to be updated to match. For sites with multiple opt-in forms and evolving campaigns, this becomes a recurring development task.
A WordPress attribution plugin handles the capture-and-pass pipeline automatically across all forms without per-form configuration. Source data flows to GetResponse (and other connected platforms) from every new form you add without additional setup.
If you want UTM source data flowing from your WordPress site into GetResponse subscriber records without maintaining the setup form by form, Sales Provenance is the faster path.