Marketing managers and agencies using RD Station Marketing accumulate data from landing pages, emails, workflows, and leads across eighteen distinct tables. Kondado replicates these tables to Via Kondado, and through MCP (Model Context Protocol), ChatGPT and Claude can query this data using natural language questions. Instead of exporting CSVs or manually building reports, you ask "which landing page converts more?" and receive the answer with KSQL automatically generated over your real data.
Kondado replicates eighteen literal tables from RD Station Marketing to Via Kondado, including the rdstation_leads family, contact tables with conversion and opportunity events, landing pages, pop-ups, forms, emails, and three analytics tables. The Kondado MCP endpoint connects ChatGPT and Claude via OAuth 2.1, allowing natural language KSQL queries over these replicated datasets. Every question becomes a practical business decision, from shutting down a low-converting landing page to calculating real CPL per campaign by crossing Google Ads.
How Kondado MCP works with RD Station Marketing
Kondado's MCP is a data channel, not a support assistant. It exposes the replicated tables on Via Kondado so ChatGPT and Claude can execute read-only KSQL queries. To start analyzing RD Station Marketing data in ChatGPT, follow three steps.
- Replicate RD Station Marketing to Via Kondado. Create a pipeline in Kondado selecting RD Station Marketing as your data source and Via Kondado as the destination. Replication is incremental for fourteen of the eighteen tables, with mandatory webhook for the
rdstation_leadsfamily and RD Station OAuth forrdstation_contatos,rdstation_emails,rdstation_landing_pages, and the three analytics tables. - Connect the MCP client to Kondado's endpoint. In Claude Desktop, ChatGPT custom GPT, or Cursor, add an MCP connection pointing to
https://mcp.kondado.io/mcpvia OAuth 2.1. - Select the correct Via Kondado. If you manage multiple accounts, choose which environment the AI agent can access before making the first query.
After these three steps, you can ask questions in Portuguese or English that the LLM translates into KSQL queries over RD Station Marketing's eighteen tables. Kondado maintains the data source catalog updated with all available fields for replication.
10 questions that become decisions
Each question below corresponds to a real marketing manager pain point mapped from support tickets. MCP receives the natural language question, translates it to KSQL, and executes directly over the RDMK tables on Via Kondado.
Which landing page in my RD Station generated the most conversions in the last 90 days?
Ask ChatGPT in natural language. MCP translates to the KSQL below, crossing rdstation_landing_pages with rdstation_assets_analytics.
SELECT
lp.title,
aa.visits_count,
aa.conversion_count,
aa.conversion_rate
FROM rdstation_landing_pages lp
JOIN rdstation_assets_analytics aa
ON aa.asset_id = lp.id AND aa.asset_type = 'LandingPage'
WHERE aa.metric_start_date >= CURRENT_DATE - INTERVAL '90 days'
ORDER BY aa.conversion_count DESC;
Decision unlocked: turn off landing pages with conversion_rate < 2%; double down on creatives from the top 3.
Which email workflows saw the biggest drop in open rate in the last 30 days?
MCP queries rdstation_workflow_emails_analytics, comparing the recent window against the previous quarter.
WITH recent AS (
SELECT workflow_id, workflow_name, AVG(email_opened_rate) AS open_30d
FROM rdstation_workflow_emails_analytics
WHERE metric_start_date >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY 1,2
),
baseline AS (
SELECT workflow_id, AVG(email_opened_rate) AS open_90d
FROM rdstation_workflow_emails_analytics
WHERE metric_start_date BETWEEN CURRENT_DATE - INTERVAL '120 days' AND CURRENT_DATE - INTERVAL '30 days'
GROUP BY 1
)
SELECT r.workflow_name, r.open_30d, b.open_90d, (r.open_30d - b.open_90d) AS delta
FROM recent r JOIN baseline b USING(workflow_id)
ORDER BY delta ASC;
Decision: rewrite subject line and template for workflows with delta < -5pp.
Who are my high fit_score leads that no one has touched yet?
MCP queries rdstation_leads, filtering by qualification and absence of opportunity marking.
SELECT id, email, name, company, job_title, fit_score, interest, lead_stage, public_url
FROM rdstation_leads
WHERE fit_score = 'a'
AND interest >= 60
AND opportunity = FALSE
AND last_marked_opportunity_date IS NULL
ORDER BY interest DESC, number_conversions DESC
LIMIT 50;
Decision: hand the list to the SDR. ChatGPT can also generate per-lead personalized emails in the same session.
Which channel or UTM brings my most qualified lead?
MCP joins rdstation_contatos_eventos_conversoes_traffic_source with rdstation_contatos and rdstation_leads to correlate UTM source with average fit_score.
SELECT
ts.traffic_source_param_value AS utm_source,
COUNT(DISTINCT l.email) AS leads,
AVG(CASE WHEN l.fit_score = 'a' THEN 3 WHEN l.fit_score = 'b' THEN 2 ELSE 1 END) AS avg_fit_score,
SUM(CASE WHEN l.opportunity THEN 1 ELSE 0 END) AS opportunities
FROM rdstation_contatos_eventos_conversoes_traffic_source ts
JOIN rdstation_contatos c ON ts.contact_uuid = c.uuid
JOIN rdstation_leads l ON l.email = c.email
WHERE ts.traffic_source_param_key = 'utm_source'
GROUP BY 1
ORDER BY avg_fit_score DESC, opportunities DESC;
Decision: reallocate paid media budget to the utm_source with the best fit + opportunity combination.
How do I join RD Station Marketing and RD Station CRM in the same AI context?
This question requires joining rdstation_leads (from the RDMK data source) with rdstation_crm_contacts and rdstation_crm_deals (from the RD Station CRM data source, a separate Kondado data source, do not confuse).
SELECT
l.email,
l.first_conversion_date,
d.created_at AS deal_created,
d.amount,
d.deal_stage_name,
DATEDIFF('day', l.first_conversion_date, d.created_at) AS days_from_lead_to_deal
FROM rdstation_leads l
LEFT JOIN rdstation_crm_contacts c ON c.email = l.email
LEFT JOIN rdstation_crm_deals d ON d.contact_id = c.id
WHERE l.first_conversion_date >= CURRENT_DATE - INTERVAL '180 days'
ORDER BY days_from_lead_to_deal DESC NULLS LAST;
Decision: SDR SLA (if days_from_lead_to_deal > 30, the lead went cold); identify bottlenecks between MQL and SQL.
What is the real CPL when combining Google Ads spend and RD leads per campaign?
MCP joins rdstation_contatos_eventos_conversoes and rdstation_contatos_eventos_conversoes_traffic_source with google_ads_campaign_daily. Important: the JOIN is by utm_campaign (name), never by id, explained in the next section.
WITH leads_per_campaign AS (
SELECT
ts.traffic_source_param_value AS utm_campaign,
COUNT(DISTINCT ec.contact_uuid) AS leads
FROM rdstation_contatos_eventos_conversoes ec
JOIN rdstation_contatos_eventos_conversoes_traffic_source ts
ON ts.contact_uuid = ec.contact_uuid AND ts.event_number = ec.event_number
WHERE ts.traffic_source_param_key = 'utm_campaign'
AND ec.event_timestamp >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY 1
),
spend AS (
SELECT campaign_name, SUM(cost_micros)/1e6 AS cost
FROM google_ads_campaign_daily
WHERE date >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY 1
)
SELECT s.campaign_name, s.cost, lp.leads, s.cost / NULLIF(lp.leads, 0) AS cpl
FROM spend s
LEFT JOIN leads_per_campaign lp ON lp.utm_campaign = s.campaign_name
ORDER BY cpl DESC;
Decision: reallocate budget toward campaigns with below-average CPL; pause those above.
Which pop-ups and forms are still worth keeping active?
MCP joins rdstation_pop_ups, rdstation_forms, and rdstation_assets_analytics to list active assets with low recent conversion.
SELECT
asset.type AS type,
asset.title,
aa.conversion_count,
CASE WHEN aa.conversion_count < 5 THEN 'discontinue' ELSE 'keep' END AS recommendation
FROM (
SELECT id, title, status, 'Popup' AS type FROM rdstation_pop_ups WHERE status = 'active'
UNION ALL
SELECT id, title, status, 'Form' AS type FROM rdstation_forms WHERE status = 'active'
) asset
LEFT JOIN rdstation_assets_analytics aa
ON aa.asset_id = asset.id AND aa.asset_type = asset.type
AND aa.metric_start_date >= CURRENT_DATE - INTERVAL '60 days'
ORDER BY aa.conversion_count DESC NULLS LAST;
Decision: retire inactive pop-ups and forms from the portfolio, less is more.
What is the current snapshot of my RDMK + RD Station CRM funnel?
Strategic analysis that combines visitors, conversions, MQL/SQL, and deals in a single query.
SELECT
COUNT(DISTINCT aa.asset_id) FILTER (WHERE aa.metric_start_date >= CURRENT_DATE - INTERVAL '30 days') AS active_assets,
SUM(aa.visits_count) FILTER (WHERE aa.metric_start_date >= CURRENT_DATE - INTERVAL '30 days') AS visits,
COUNT(DISTINCT ec.contact_uuid) FILTER (WHERE ec.event_timestamp >= CURRENT_DATE - INTERVAL '30 days') AS conversions,
COUNT(DISTINCT l.id) FILTER (WHERE l.opportunity = TRUE) AS opportunities,
COUNT(DISTINCT d.id) FILTER (WHERE d.win = TRUE) AS deals_won
FROM rdstation_assets_analytics aa
FULL OUTER JOIN rdstation_contatos_eventos_conversoes ec ON TRUE
FULL OUTER JOIN rdstation_leads l ON l.email = (
SELECT email FROM rdstation_contatos WHERE uuid = ec.contact_uuid LIMIT 1
)
FULL OUTER JOIN rdstation_crm_deals d ON d.contact_id = l.id;
Decision: automated weekly report for the CEO or marketing director, with LLM-generated narrative.
Which leads opened email but did not convert in the last 30 days?
MCP joins rdstation_email_analytics with rdstation_contatos_eventos_conversoes to identify retarget opportunities.
SELECT
c.uuid,
c.email,
ea.campaign_name,
ea.email_opened_count
FROM rdstation_contatos c
JOIN rdstation_email_analytics ea ON ea.metric_start_date >= CURRENT_DATE - INTERVAL '30 days'
LEFT JOIN rdstation_contatos_eventos_conversoes ec
ON ec.contact_uuid = c.uuid
AND ec.event_timestamp >= CURRENT_DATE - INTERVAL '30 days'
WHERE ea.email_opened_count > 0
AND ec.contact_uuid IS NULL
ORDER BY ea.email_opened_count DESC;
Decision: export the list to Meta Custom Audience or Google Customer Match and run a retarget campaign.
Which custom fields in my RD Station carry a strong qualification signal?
MCP queries rdstation_contatos_custom_fields at runtime and correlates each dynamic column with opportunity = TRUE in rdstation_leads. Custom fields are discovered at query time (no pre-configuration), because the RDMK data source introspects the RD Station API on every run.
SELECT
cf.field_name,
cf.field_value,
COUNT(DISTINCT l.id) AS leads_in_group,
AVG(CASE WHEN l.opportunity THEN 1.0 ELSE 0.0 END) AS opportunity_rate
FROM rdstation_contatos_custom_fields cf
JOIN rdstation_contatos c ON c.uuid = cf.uuid
JOIN rdstation_leads l ON l.email = c.email
GROUP BY 1, 2
HAVING COUNT(DISTINCT l.id) >= 20
ORDER BY opportunity_rate DESC;
Decision: ChatGPT identifies the custom field with the strongest predictive power and recommends including it in the official scoring.
Watch out when crossing with Google Ads and Meta Ads
Crossing RD Station Marketing data with Google Ads or Meta Ads is powerful, but it has two technical traps that invalidate the analysis if ignored.
Learning 104: the JOIN is by name, never by id. The campaign__id field that appears in rdstation_contatos_eventos_conversoes_traffic_source is an internal hash from RD Station (hexadecimal format like 6543210fedcba), and does not match the numeric campaign_id from Google Ads or the campaign_id from Meta. If you try to join by ids, you get zero matches. The correct join is by utm_campaign (the literal value the advertiser set), comparing against campaign_name on the Ads side.
Learning 125: if utm_campaign = '{campaignname}' appears as a literal, it is the advertiser's problem, not Kondado's. This placeholder means the Google Ads ValueTrack is not active on the ad's final URL. The fix is on the Google Ads side (add {campaign} or {campaignid} to the URL with ValueTrack), not on Kondado nor MCP. When you ask about CPL and ChatGPT returns a row with '{campaignname}' as utm, that is the signal.
Dynamic custom fields: what MCP discovers at runtime
Custom fields in RD Station Marketing are unique per customer. A health insurance operator may have plano_saude and dependentes; a fashion e-commerce may have tamanho_preferido and categoria_favorita. The Kondado RDMK data source replicates these fields into two tables, rdstation_leads_custom_fields and rdstation_contatos_custom_fields, with schema discovered on every run. No manual configuration: the data source calls contacts/fields at replication time and materializes each field as a column on Via Kondado.
When you connect MCP, ChatGPT receives the latest schema of both tables. Ask "which custom field in my RD predicts opportunity best?" and the LLM queries the columns that exist today, no manual notice needed. This is a deep differentiator that a static report or an ETL with fixed mapping does not deliver: the analysis adapts automatically when the marketing team adds a new field in RD Station.
Base64 UTM decoding in rdstation_contatos_eventos_conversoes_traffic_source
RD Station Marketing stores UTM parameters from each conversion in encoded format. The Kondado data source decodes that base64 string at runtime, materializing each parameter as a row in rdstation_contatos_eventos_conversoes_traffic_source with traffic_source_param_key and traffic_source_param_value columns. Result: you query WHERE traffic_source_param_key = 'utm_source' and receive the literal value the advertiser set, no parsing required.
This decoding enables attribution analysis that the RD Station Marketing UI does not allow, because the UI shows UTMs as a single string and does not expose per-parameter filters. Through MCP, ChatGPT can aggregate conversions by utm_source, utm_medium, utm_campaign, and utm_content separately, compare performance across UTMs, and even detect inconsistencies (utm_medium written as "cpc" in one campaign and "CPC" in another).
Why use Via Kondado as the destination for RD Station Marketing
Via Kondado is the canonical destination that the Kondado MCP server queries. Kondado replicates the eighteen RD Station Marketing tables to the customer's Via Kondado, and the endpoint https://mcp.kondado.io/mcp exposes those tables so ChatGPT and Claude execute KSQL queries via OAuth 2.1. No intermediate warehouse, no spreadsheet, no extra ETL. You connect MCP in Claude Desktop or ChatGPT custom GPT and start asking.
Frequently Asked Questions
Does Kondado MCP store my questions or data?
No. MCP is a read-only channel. Your questions are processed by the LLM (ChatGPT or Claude) and KSQL queries execute directly over your data on Via Kondado, without intermediate storage.
Do I need to know SQL to use MCP?
No. MCP translates natural language questions to KSQL automatically. You ask "which landing pages converted more" and the system generates and executes the query.
Which RD Station Marketing tables are available on Via Kondado?
Eighteen literal tables maintained by Kondado with explicit per-field schema:
rdstation_leadsrdstation_leads_tagsrdstation_leads_first_conversion_contentrdstation_leads_last_conversion_contentrdstation_leads_custom_fieldsrdstation_contatosrdstation_contatos_custom_fieldsrdstation_contatos_eventos_conversoesrdstation_contatos_eventos_conversoes_traffic_sourcerdstation_contatos_eventos_oportunidadesrdstation_contatos_funisrdstation_emailsrdstation_landing_pagesrdstation_pop_upsrdstation_formsrdstation_email_analyticsrdstation_workflow_emails_analyticsrdstation_assets_analytics
Tables prefixed with rdstation_crm_ belong to the RD Station CRM data source, which is a separate Kondado data source.
Can I connect data sources beyond RD Station Marketing?
Yes. Kondado offers more than eighty data sources. You can cross RD Station Marketing with Google Ads, Meta Ads, VTEX, Shopify, Bling, Omie, and other data sources on the same Via Kondado, enabling analyses such as real CPL per campaign (RDMK + Google Ads) or ROAS by source (RDMK + Meta Ads + revenue from Bling).
Which Kondado plans include MCP?
MCP is part of Via Kondado, Kondado's canonical data destination. Check Kondado pricing for current details on limits and features.
Start analyzing your marketing data with AI
Connect your RD Station Marketing to Via Kondado and start asking natural language questions about your marketing data. No CSV exports, no manual reports, just ask and decide. Sign up for free and start your 14-day free trial.
How to connect RD Station Marketing to ChatGPT via Kondado MCP
Replicate RD Station Marketing to Via Kondado and connect ChatGPT, Claude, or Cursor to the MCP endpoint via OAuth 2.1 in three steps.
Replicate RD Station Marketing to Via Kondado
Create a pipeline in Kondado selecting RD Station Marketing as your data source and Via Kondado as the destination. Replication is incremental for fourteen of the eighteen tables, with mandatory webhook for the rdstation_leads family and RD Station OAuth for rdstation_contatos, rdstation_emails, rdstation_landing_pages, and the three analytics tables.
Connect the MCP client to Kondado's endpoint
In Claude Desktop, ChatGPT custom GPT, or Cursor, add an MCP connection pointing to https://mcp.kondado.io/mcp via OAuth 2.1. The authorization flow opens in your browser and binds the client to your Via Kondado.
Select the correct Via Kondado
If you manage multiple Kondado accounts, choose which environment the AI agent can access before making the first query. Each OAuth session is bound to a specific Via Kondado.
