Skip to main content
RapidDev - Software Development Agency
retool-integrationsREST API Resource

How to Integrate Retool with GetResponse

Connect Retool to GetResponse by creating a REST API Resource using your GetResponse API key in the X-Auth-Token header. Build all-in-one marketing dashboards that track contacts, email campaigns, autoresponders, landing pages, and webinar registrations — giving marketing operations teams a faster, more flexible view than GetResponse's native interface.

What you'll learn

  • How to obtain your GetResponse API key and configure it in a Retool REST API Resource
  • How to query GetResponse contacts, lists, campaigns, and autoresponders with filtering
  • How to build an email marketing performance dashboard showing open rates, click rates, and conversion metrics
  • How to track the full marketing funnel from landing page to email conversion
  • How to manage contacts, lists, and campaign data from Retool forms and actions
Book a free consultation
4.9Clutch rating
600+Happy partners
17+Countries served
190+Team members
Beginner14 min read15 minutesMarketingLast updated April 2026RapidDev Engineering Team
TL;DR

Connect Retool to GetResponse by creating a REST API Resource using your GetResponse API key in the X-Auth-Token header. Build all-in-one marketing dashboards that track contacts, email campaigns, autoresponders, landing pages, and webinar registrations — giving marketing operations teams a faster, more flexible view than GetResponse's native interface.

Quick facts about this guide
FactValue
ToolGetResponse
CategoryMarketing
MethodREST API Resource
DifficultyBeginner
Time required15 minutes
Last updatedApril 2026

Build a GetResponse Marketing Operations Dashboard in Retool

GetResponse's native analytics are campaign-centric, but marketing operations teams often need cross-campaign views: all contacts across all lists with engagement scores, funnel conversion rates from landing pages to email opens to sales, autoresponder sequence performance showing where leads drop off, or a bulk contact management tool for re-segmenting the list after a product launch. Retool lets you build these custom views directly against the GetResponse API.

GetResponse API v3 provides comprehensive access to contacts, lists (called 'campaigns' in GetResponse terminology), email campaigns, autoresponders, landing pages, webinars, and automation workflows. Authentication is straightforward: generate an API key in GetResponse settings and pass it in the X-Auth-Token header. No OAuth flow is required, making initial setup fast.

The highest-value Retool use case for GetResponse is a full-funnel marketing dashboard that combines landing page conversion data with email campaign metrics and autoresponder completion rates. Marketing managers can see exactly how many leads a landing page generated, what percentage joined the email list, how they progressed through the welcome autoresponder sequence, and what the final conversion rate was — all in a single dashboard without switching between GetResponse's separate analytics views.

Integration method

REST API Resource

GetResponse connects to Retool via a REST API Resource using API key authentication passed in the X-Auth-Token header. The GetResponse API v3 base URL is https://api.getresponse.com/v3 for standard accounts. Retool proxies all API calls server-side, keeping credentials secure and eliminating any CORS concerns. For GetResponse MAX (enterprise) accounts, the base URL differs slightly.

Prerequisites

  • A GetResponse account with at least one contact list and email campaign created
  • A GetResponse API key (found in GetResponse → My Profile → Integrations & API → GetResponse API)
  • For GetResponse MAX enterprise accounts: your enterprise domain (e.g., app3.getresponse360.com)
  • A Retool account with permission to create Resources
  • Basic familiarity with Retool's query editor and Table component

Step-by-step guide

1

Generate your GetResponse API key

In GetResponse, click your account avatar in the top-right corner and select My Profile from the dropdown. In the profile menu, navigate to the Integrations & API tab. Scroll down to find the GetResponse API section. Click Generate API Key (or copy your existing key if one was previously generated). GetResponse API keys are account-level credentials — they have full read and write access to all data in your GetResponse account including contacts, lists, campaigns, autoresponders, and landing pages. Treat this key like a password: store it in Retool Configuration Variables, never share it, and regenerate it if you suspect it has been compromised. For GetResponse MAX (enterprise) accounts, the API base URL is different: instead of https://api.getresponse.com/v3, you'll use https://api3.getresponse360.pl/v3 or https://api3.getresponse360.com/v3 depending on your regional instance. You'll also need to add an X-Domain header with your enterprise domain value. Contact GetResponse support to confirm your exact enterprise API endpoint. For standard GetResponse accounts, the base URL is simply https://api.getresponse.com/v3 — no additional configuration needed beyond the API key.

Pro tip: GetResponse allows only one active API key per account. If you regenerate the key, any existing integrations using the old key will stop working. If multiple team members need API access, use GetResponse's sub-account or user management features rather than sharing a single API key.

Expected result: You have your GetResponse API key copied and ready to enter in Retool.

2

Create the GetResponse REST API Resource in Retool

In Retool, navigate to the Resources tab and click Add Resource. Select REST API from the connector list. Name: GetResponse API Base URL: https://api.getresponse.com/v3 For GetResponse MAX enterprise accounts, use your specific enterprise API URL instead. Authentication: Do NOT use the Bearer Token option. GetResponse requires a custom header format. Select No Authentication and instead add a Custom Header: - Header Key: X-Auth-Token - Header Value: api-key YOUR_API_KEY (include the literal text 'api-key ' followed by your actual key) For better security, store the API key in Retool Configuration Variables first: Settings → Configuration Variables → create GETRESPONSE_API_KEY → mark as secret. Then use the header value: api-key {{ retoolContext.configVars.GETRESPONSE_API_KEY }}. Add another header: Content-Type: application/json. For GetResponse MAX, also add: X-Domain: YOUR_ENTERPRISE_DOMAIN. Click Create Resource. Test with a GET query to /accounts — this returns your GetResponse account information. A 200 OK with account details confirms authentication. If you get 401, verify the X-Auth-Token header format includes the 'api-key ' prefix before your API key.

Pro tip: The GetResponse X-Auth-Token header format is 'api-key YOUR_KEY' — the prefix 'api-key ' (with space) is required. Without it, authentication fails with a 401 response even if the API key itself is correct.

Expected result: The GetResponse REST API Resource is created. GET /accounts returns your account name, email, and plan details.

3

Query contact lists and contacts with filtering

GetResponse uses the term 'campaigns' internally for what users see as 'contact lists' in the UI. Create a getCampaigns query: GET /campaigns to fetch all contact lists. The response is an array of campaign objects with: campaignId, name, createdOn, dayOfCycle (autoresponder cycle day for new contacts), subscribersCount, and languageCode. Create a getContacts query: GET /contacts with the following URL parameters: - campaignId: {{ select_list.value || '' }} (filter by selected list) - sort[createdOn]: desc (newest first) - page: {{ Math.floor(table_contacts.pagination.offset / 100) + 1 }} - perPage: 100 - fields: contactId,name,email,createdOn,campaign,tags,scoring,engagementScore The fields parameter reduces response size by fetching only the columns you need. GetResponse contacts include: contactId, name, email, campaign (object with campaignId and name), tags (array of tag strings), scoring (lead score), and engagementScore (0-100 engagement rating). Create a searchContacts query for lookup by email: GET /contacts?email={{ input_email.value }} — this returns contacts exactly matching the email address, useful for the detail view when a user searches for a specific contact.

transformer_contacts.js
1// Transformer for GetResponse contacts
2const contacts = data || [];
3return contacts.map(contact => ({
4 id: contact.contactId,
5 name: contact.name || 'No Name',
6 email: contact.email,
7 list: contact.campaign?.name || 'Unknown',
8 list_id: contact.campaign?.campaignId || '',
9 tags: (contact.tags || []).join(', '),
10 score: contact.scoring || 0,
11 engagement: contact.engagementScore || 0,
12 subscribed_at: contact.createdOn ? new Date(contact.createdOn).toLocaleDateString() : '',
13 engagement_label: contact.engagementScore >= 70 ? 'Highly Engaged'
14 : contact.engagementScore >= 40 ? 'Engaged'
15 : contact.engagementScore >= 10 ? 'Low Engagement'
16 : 'Inactive'
17}));

Pro tip: Always use the fields parameter in GetResponse contact queries to request only the columns you need. Fetching all fields for large lists can significantly increase response size and query time.

Expected result: The contacts Table shows all contacts for the selected list with engagement scores, tags, and subscription dates. The list dropdown is populated from getCampaigns.

4

Fetch email campaigns and performance statistics

GetResponse uses the term 'newsletters' for one-time email campaigns (as opposed to autoresponders which are sequence-based). Create a getNewsletters query: GET /newsletters with parameters: - sort[createdOn]: desc - page: 1 - perPage: 25 - fields: newsletterId,name,status,createdOn,sendOn,statistics The statistics field embeds delivery metrics in the response: statistics.sent, statistics.opened (with unique and total sub-fields), statistics.clicked, statistics.bounced, and statistics.unsubscribed. Create a transformer to compute percentage metrics from the raw statistics counts. GetResponse provides unique opens and total opens separately — use unique opens for the open rate calculation. For campaign-level detail, create getNewsletterDetail: GET /newsletters/{{ table_campaigns.selectedRow.data.id }} to fetch the full campaign with subscriber-level activity data. For autoresponders (drip sequences), create a getAutoresponders query: GET /autoresponders?campaignId={{ select_list.value }} — this returns the autoresponder steps for the selected list with: subject, sendDelay (days after subscription), clicksCount, opensCount, and subscribersCount.

transformer_campaigns.js
1// Transformer for email campaign performance
2const newsletters = data || [];
3return newsletters.map(nl => {
4 const stats = nl.statistics || {};
5 const sent = stats.sent || 0;
6 const opened = stats.opened?.unique || 0;
7 const clicked = stats.clicked?.unique || 0;
8 const bounced = (stats.bounced?.soft || 0) + (stats.bounced?.hard || 0);
9 const unsubscribed = stats.unsubscribed || 0;
10
11 const openRate = sent > 0 ? ((opened / sent) * 100).toFixed(1) : '0.0';
12 const clickRate = sent > 0 ? ((clicked / sent) * 100).toFixed(1) : '0.0';
13 const bounceRate = sent > 0 ? ((bounced / sent) * 100).toFixed(1) : '0.0';
14 const ctr = opened > 0 ? ((clicked / opened) * 100).toFixed(1) : '0.0';
15
16 return {
17 id: nl.newsletterId,
18 name: nl.name,
19 status: nl.status,
20 sent_at: nl.sendOn ? new Date(nl.sendOn).toLocaleDateString() : '',
21 total_sent: sent.toLocaleString(),
22 open_rate: `${openRate}%`,
23 click_rate: `${clickRate}%`,
24 bounce_rate: `${bounceRate}%`,
25 click_to_open: `${ctr}%`,
26 unsubscribed
27 };
28});

Pro tip: GetResponse provides separate unique and total counts for opens and clicks. Use unique opens/clicks for industry-standard rate calculations to avoid inflating metrics from the same person opening multiple times.

Expected result: The campaigns Table shows all email campaigns with open rate, click rate, bounce rate, and click-to-open rate. Selecting a campaign shows the full statistics breakdown.

5

Build contact management actions and full-funnel reporting

Build contact management actions using GetResponse's write endpoints. Create an updateContact query: PATCH /contacts/{{ table_contacts.selectedRow.data.id }} with body: { "campaign": { "campaignId": "{{ select_newList.value }}" }, "tags": {{ JSON.stringify(input_tags.value.split(',').map(t => t.trim())) }} }. This moves the selected contact to a different list and updates their tags. For bulk tagging, create a JavaScript query that loops over selected Table rows and patches each contact. Use Promise.all() for parallel execution with a concurrency limit of 5 contacts at a time. For the full-funnel landing page report, create a getLandingPages query: GET /landing-pages?page=1&perPage=25. Landing pages return: landingPageId, name, url, visits, uniqueVisits, campaignId (the list they feed), and conversionRate. Join landing page data with campaign subscriber growth: for each landing page's campaignId, compute the subscriber count growth over the landing page's active period from the getCampaigns data. This shows funnel conversion from visitor → subscriber → email engagement in a single Retool view. For marketing operations teams building GetResponse dashboards combined with internal CRM data, webinar registration tracking, and automated list segmentation workflows, RapidDev's team can help architect the complete Retool solution.

transformer_funnel.js
1// Transformer: join landing pages with campaign subscription data
2const pages = getLandingPages.data || [];
3const campaigns = getCampaigns.data || [];
4
5const campaignMap = {};
6campaigns.forEach(c => { campaignMap[c.campaignId] = c; });
7
8return pages.map(page => {
9 const campaign = campaignMap[page.campaignId] || {};
10 const conversionRate = page.visits > 0
11 ? ((page.uniqueConversions || 0) / page.uniqueVisits * 100).toFixed(1)
12 : '0.0';
13 return {
14 id: page.landingPageId,
15 name: page.name,
16 url: page.url || '',
17 total_visits: (page.visits || 0).toLocaleString(),
18 unique_visits: (page.uniqueVisits || 0).toLocaleString(),
19 conversion_rate: `${conversionRate}%`,
20 list_name: campaign.name || 'None',
21 list_subscribers: campaign.subscribersCount || 0
22 };
23});

Pro tip: GetResponse webinar endpoints are under /webinars/ — fetch webinar registrations and attendees separately if you need to track the webinar → email subscriber conversion funnel in addition to landing page conversions.

Expected result: A full-funnel dashboard view shows landing pages with visitor-to-subscriber conversion rates alongside email campaign performance metrics. Bulk contact tagging actions work from the contacts Table.

Common use cases

Build an email campaign performance dashboard

Create a Retool dashboard showing all GetResponse email campaigns with open rate, click rate, bounce rate, and unsubscribe rate. Filter by date range and list. Marketing managers can quickly identify underperforming campaigns, compare performance across lists, and drill into recipient-level data for a selected campaign.

Retool Prompt

Build a Retool email campaign analytics dashboard. Show all GetResponse campaigns with: campaign name, list name, send date, total sent, open rate (%), click rate (%), bounce rate (%), and unsubscribe rate (%). Sort by send date descending. Add date range filters. When a campaign is selected, show a Table of top-clicked links sorted by click count.

Copy this prompt to try it in Retool

Build a contact list management and segmentation tool

Build a Retool panel showing all GetResponse contacts across all lists with search, tag filtering, and bulk operations. Marketing ops teams can re-segment contacts by adding or removing tags, move contacts between lists, and export specific segments — all faster than navigating GetResponse's contact search interface.

Retool Prompt

Build a Retool contact management panel for GetResponse. Show all contacts with: name, email, list name, tags, subscription date, and engagement score. Add search by email or name. Add tag filters. Include bulk operations: select multiple contacts, add a tag, remove a tag, or move to a different list. Show a count of contacts per list in a summary row.

Copy this prompt to try it in Retool

Build a full-funnel marketing dashboard combining landing pages and email

Create a Retool tool that combines GetResponse landing page visitor and conversion data with email list growth metrics. Show how many visitors each landing page received, how many subscribed, the subscription rate, and how those new subscribers are progressing through the welcome autoresponder sequence.

Retool Prompt

Build a Retool marketing funnel dashboard. Show each GetResponse landing page with: page name, total visits, total conversions, conversion rate. When a landing page is selected, show the email list it feeds and the autoresponder sequence stats: email 1 open rate, email 2 open rate, email 3 open rate (funnel drop-off). Add a combined bar chart showing the funnel from visit → subscribe → open email 1 → open email 2.

Copy this prompt to try it in Retool

Troubleshooting

401 Unauthorized despite correct API key in the header

Cause: GetResponse requires the X-Auth-Token header with a specific format: 'api-key YOUR_KEY'. Missing the 'api-key ' prefix (with space) causes authentication to fail even if the key is correct.

Solution: In the Retool REST API Resource configuration, verify the X-Auth-Token header value starts with 'api-key ' (note the space) followed by the actual API key: api-key abc123yourkeyhere. Switch from Bearer Token authentication to Custom Headers mode if you set it up as Bearer — GetResponse does not accept standard Bearer token format.

typescript
1// Correct X-Auth-Token header format:
2// Key: X-Auth-Token
3// Value: api-key YOUR_API_KEY_HERE
4// (include 'api-key ' prefix with a space before the key)

GetResponse MAX enterprise API returns 404 for all endpoints

Cause: Enterprise GetResponse MAX accounts use a different API base URL and require an additional X-Domain header. Using the standard https://api.getresponse.com/v3 URL for a MAX account returns 404.

Solution: Update your Retool Resource base URL to your enterprise endpoint: https://api3.getresponse360.pl/v3 or https://api3.getresponse360.com/v3. Also add an X-Domain header with your enterprise domain name. Contact GetResponse support to confirm your exact API endpoint URL and domain value.

typescript
1// GetResponse MAX headers:
2// X-Auth-Token: api-key YOUR_KEY
3// X-Domain: YOUR_ENTERPRISE_DOMAIN
4// Base URL: https://api3.getresponse360.com/v3

Contact list query returns 'No items found' despite contacts existing in GetResponse

Cause: The campaignId filter parameter may be using an incorrect list ID, or the contacts query is missing the required filter parameters. GetResponse's API requires valid campaign IDs in the format returned by the /campaigns endpoint.

Solution: First run GET /campaigns without any filters to confirm your list IDs. Then use the exact campaignId string value (not an integer — GetResponse uses alphanumeric campaign IDs like 'abC123') in the /contacts?campaignId= filter. Verify the campaignId value from the getCampaigns response.

typescript
1// GetResponse campaign IDs are alphanumeric strings:
2// GET /contacts?campaignId=abC123xyz
3// NOT: ?campaignId=1234 (integer format is wrong)

Newsletter statistics show zeros for all metrics despite the campaign being sent

Cause: GetResponse statistics are not immediately available after sending. There is typically a processing delay of minutes to hours before open and click statistics are computed. Also, the fields parameter must include 'statistics' to receive metrics in the newsletter list response.

Solution: Add fields=newsletterId,name,status,createdOn,sendOn,statistics to your newsletters query URL parameters. For recently sent campaigns, statistics may show zeros for up to several hours after sending. Add a 'Last Updated' column to your Table and note that very recent campaigns may have incomplete statistics.

typescript
1// Add fields parameter to newsletters query:
2// GET /newsletters?sort[createdOn]=desc&fields=newsletterId,name,status,sendOn,statistics

Best practices

  • Store your GetResponse API key in Retool Configuration Variables (Settings → Configuration Variables) marked as secret — the X-Auth-Token header value should reference {{ retoolContext.configVars.GETRESPONSE_API_KEY }} rather than the literal key.
  • Always include the 'api-key ' prefix (with trailing space) in the X-Auth-Token header — GetResponse authentication fails silently with a 401 if this prefix is missing.
  • Use the fields parameter in all contact and newsletter queries to request only needed columns — this reduces response payload size significantly for accounts with large lists.
  • Cache the getCampaigns (list) query for 5 minutes since list names and IDs change rarely — this avoids redundant API calls every time filters or dropdowns reference the campaign list.
  • Use GetResponse's unique opens and unique clicks for rate calculations rather than total counts — unique metrics provide industry-standard open rate and CTR figures that match what GetResponse shows in its native UI.
  • Implement server-side pagination with perPage: 100 (GetResponse's maximum) for contacts — large GetResponse accounts may have hundreds of thousands of contacts that would overwhelm client-side pagination.
  • For bulk contact operations, use a JavaScript query with controlled concurrency rather than parallel API calls — GetResponse has rate limits that trigger 429 responses when too many simultaneous requests are made.
  • When building webinar reports, always fetch webinar attendee data separately from registrant data — GetResponse tracks registration and actual attendance independently, and the gap between them is a key metric for webinar conversion analysis.

Alternatives

Frequently asked questions

Does Retool have a native GetResponse connector?

No, Retool does not have a dedicated native connector for GetResponse. You connect via a REST API Resource using GetResponse's API key in a custom X-Auth-Token header. The setup takes about 15 minutes and provides access to all GetResponse API v3 endpoints including contacts, lists, newsletters, autoresponders, landing pages, and webinars.

How do I add contacts to a GetResponse list from Retool?

Use POST /contacts with a JSON body: { name: 'Full Name', email: 'email@example.com', campaign: { campaignId: 'your_list_id' }, tags: [{ name: 'tag1' }] }. If the contact already exists in GetResponse, they will be added to the new list without creating a duplicate. GetResponse returns 202 Accepted for successful contact creation — not 201 — since contact creation is processed asynchronously.

Can I query GetResponse webinar registration data from Retool?

Yes. Use GET /webinars to list all webinars, then GET /webinars/{webinarId}/registrations to fetch registrants and GET /webinars/{webinarId}/attendees to fetch actual attendees. The difference between registrations and attendees is your webinar show rate. These endpoints are available on GetResponse accounts with the Webinar feature enabled.

What is GetResponse's API rate limit?

GetResponse allows 30 API requests per second per API key. If you exceed this, you'll receive a 429 Too Many Requests response with a Retry-After header. For Retool dashboards with multiple queries running on page load, use query caching (1–5 minutes) to reduce the load. For bulk operations, implement sequential processing with a small delay between requests rather than parallel calls.

How do I track autoresponder sequence performance in Retool?

Use GET /autoresponders?campaignId={listId} to fetch all autoresponder steps for a list. Each step includes sendDelay (day the email is sent after subscription), subject, and statistics with opensCount, clicksCount, and subscribersCount for that step. Compare opensCount / subscribersCount across steps to visualize the engagement drop-off as contacts progress through the sequence.

RapidDev

Talk to an Expert

Our team has built 600+ apps. Get personalized help with your project.

Book a free consultation

Integrations are where projects stall

We wire Retool integrations like this one every week — auth, webhooks, edge cases included. Fixed-price builds from $13K, delivered in 6–10 weeks.

Talk to an integration engineer

We put the rapid in RapidDev

Need a dedicated strategic tech and growth partner? Discover what RapidDev can do for your business! Book a call with our team to schedule a free, no-obligation consultation. We'll discuss your project and provide a custom quote at no cost.