GA4 “Some of the Selected Fields Cannot Be Queried Together” Error: Troubleshooting Guide
If you request Google Analytics 4 data through Windsor.ai, in Claude, ChatGPT, Looker Studio, Sheets or the API, and the request comes back with this message:
Some of the selected fields cannot be queried together in GA4. Please remove transactions to make the request compatible for example. The request's dimensions & metrics are incompatible. To learn more, see https://ga-dev-tools.web.app/ga4/dimensions-metrics-explorer/
the GA4 Data API refused that combination of fields. The message is Windsor’s fixed sentence with Google’s hint spliced in, which is why it reads oddly: “Please remove transactions” is Google’s suggestion of one field to drop, and “for example” means it is one possible fix, not the only one. Nothing is wrong with your connection or your property.
This is the second most common GA4 error we see, behind unknown field names (covered in the GA4 “Unexpected field(s)” guide). Almost every case comes down to one of six field mix-ups, and each has a one-line fix. The field named in the hint changes with what you selected, so treat the quoted messages below as representative.
Why this happens
GA4 does not store its data as one flat table. Every dimension and metric has a scope: user, session, event or item. Some reports also sit in their own tables, such as the Search Console link and the advertising cost report. The GA4 Data API rejects any request that mixes fields from scopes that cannot be joined in one call. Google publishes the rules in the GA4 Dimensions & Metrics Explorer, which is the same link the error message points to.
Two Windsor specifics make the error harder to read than it needs to be:
- The hint uses Google’s API name in camelCase, while you selected Windsor’s flattened name. “Please remove itemViewEvents” refers to Windsor’s item_view_events, “remove sourceMedium” refers to source_medium, “add sessionCampaignName” means add campaign. The quick reference table at the end maps them.
- One Windsor name hides a scope you did not choose. source_medium is Google’s event-scoped sourceMedium, not the session-scoped one, while source, medium, campaign and session_source_medium map to the session-scoped dimensions. That single inconsistency causes more of these errors than any real GA4 restriction. Case 1 below covers it.
For the complete list of fields Windsor supports for this connector, see the Google Analytics 4 field reference.
Each fix below is something you can hand to an AI assistant. Claude, ChatGPT, Claude Code, Cursor and Codex can all call Windsor more than once and merge the results. Describe the conflict and the join key from the case below, and it takes it from there.
Common causes, in order of how often we see them
1. source_medium or default_channel_group with ecommerce, engagement or event metrics
Example errors: “Please remove transactions”, “Please remove ecommercePurchases”, “Please remove eventCount”, or a hint with no field name at all (“Please remove to make the request compatible”), when the request contains source_medium.
Windsor’s source_medium maps to GA4’s event-scoped sourceMedium, the traffic source Google credits for a key event. In our tests it combines with sessions, users, conversions (key events) and purchase_revenue, but not with transactions, ecommerce_purchases, event_count, engaged_sessions or average_session_duration. The session-scoped session_source_medium combines with all of those.
- Fix: swap source_medium for session_source_medium. The single fields source, medium, campaign and campaign_name already map to the session-scoped dimensions, so those need no change. default_channel_group also behaved as session-scoped in our tests (it ran with sessions and transactions), so leave it as it is unless the hint names it.
- This runs in one request: date, session_default_channel_group, sessions, totalusers, newusers, conversions, totalrevenue, transactions, ecommerce_purchases.
- Keep source_medium only when you specifically want the traffic source credited for a key event, next to conversions.
- Ask your assistant: “Use session_source_medium instead of source_medium for this GA4 request, then run it again.”
2. Event-level ecommerce metrics with item dimensions
Example errors: “Please remove itemViewEvents”, “Please remove addToCarts”, “Please remove ecommercePurchases” or “Please remove transactions” when the request contains item_name, item_id, item_category, item_brand or item_list_name.
GA4 keeps two families of ecommerce metrics. The event-scoped ones count events: item_view_events, add_to_carts, ecommerce_purchases, transactions, purchase_revenue. The item-scoped ones count units per product: items_viewed, items_added_to_cart, items_checked_out, items_purchased, item_revenue. Item dimensions only combine with the item-scoped family.
- Fix: for a per-product report use item_name with items_viewed, items_added_to_cart, items_purchased and item_revenue. For totals by day or channel use the event-scoped metrics with date and session_source_medium, and leave item dimensions out.
- This runs in one request: date, item_name, items_viewed, items_added_to_cart, items_purchased, item_revenue.
- A funnel per product (viewed, added to cart, purchased) is the item-scoped set above. A funnel for the whole site is the event-scoped set. Do not mix the two in one call.
- Ask your assistant: “Use the item-scoped metrics items_viewed, items_added_to_cart, items_purchased and item_revenue with item_name. Pull site-wide transactions and purchase_revenue in a second request by date, then present both.”
3. Event counts mixed with product or ecommerce fields
Example error: “Please remove eventCount” when event_name and event_count are requested with item_name or with source_medium.
event_count and event_name work as a pair, and they combine with date, session dimensions and site-wide ecommerce metrics: date, event_name, event_count, session_source_medium runs in one request, and so does date, event_name, event_count, transactions. Add an item dimension such as item_name, or the event-scoped source_medium, and the request fails.
- Fix: keep item dimensions out of the event report. Put product fields in a second request and join on date. If source_medium is in the request, swap it for session_source_medium.
- To count one event as a key event, use conversions with event_name and a filter on the event name, rather than inventing a per-event metric.
- Ask your assistant: “Pull event_name and event_count by date in one Windsor request and the product metrics in another, then join them by date.”
4. Search Console fields with landing_page, page_path, search_term or date
Example errors: “Please remove landingPage”, “Please remove pagePath”, “Please remove searchTerm” or “Please remove date” when the request contains organic_google_search_clicks, organic_google_search_impressions or organic_google_search_average_position.
These metrics come from the Search Console link inside GA4, which Google exposes as a separate report. It accepts only its own dimensions, landing_page_plus_query_string for pages, and it does not accept date. Windsor adds date to every GA4 request so that results can be split by day, which means the Search Console metrics currently fail through the GA4 connector even when you did not select date yourself. We are looking at this on the connector side.
- Fix: use the Google Search Console connector instead. It returns query, page, clicks, impressions, CTR and position by date, which is more than the GA4 link offers, and it combines with your GA4 data in the same conversation or report.
- Ask your assistant: “Pull clicks, impressions and position by page and date from the searchconsole connector, and sessions by landing_page from GA4, then join them on the page path.”
5. Ads cost metrics without a campaign dimension
Example error: “Please add sessionCampaignName to make the request compatible” when the request contains advertiser_ad_cost, advertiser_ad_clicks or advertiser_ad_impressions.
GA4’s advertising cost metrics only exist per campaign. Google requires a campaign dimension in the request, and the hint names it by its API name.
- Fix: add campaign (or campaign_name, both map to sessionCampaignName). This runs in one request: date, campaign, advertiser_ad_cost, advertiser_ad_clicks.
- For Google Ads campaigns specifically, google_ads_campaign_name works as the dimension too.
- Ask your assistant: “Add campaign to the GA4 request with advertiser_ad_cost and run it again.”
6. Too many scopes in one request
Example: a request that combines session_source_medium, sessions, event_name, event_count and item_name fails with “Please remove eventCount”, even though every pair in it is fine on its own.
When a request mixes session, event and item scopes at once, GA4 names the first metric it cannot reconcile. Removing that one field often moves the error to the next.
- Fix: split by scope. One request for sessions and users by traffic source, one for events, one for products. Join them on date.
- Ask your assistant: “Split this GA4 request into one call per scope (session, event, item), run each, and join the results by date.”
General troubleshooting checklist
- Read the hint. “Please remove X” names Google’s API field; find the Windsor name for it in the table below.
- If the request contains source_medium, switch to session_source_medium first. That fixes most cases on its own.
- Check whether item dimensions (item_name, item_id, item_category) sit next to event-scoped metrics (transactions, add_to_carts, item_view_events, ecommerce_purchases). Swap to the items_ metrics or move the item dimension to its own request.
- Check for Search Console metrics (organic_google_search_*). Move those to the Search Console connector.
- Check for advertiser_ad_* metrics. Add campaign.
- If the hint is empty, the request pairs source_medium with engagement metrics (engaged_sessions, average_session_duration). Switch the source dimension as in step 2.
- Still failing? Paste the Windsor field names into the GA4 Dimensions & Metrics Explorer using the API names from the table. If Google rejects the combination there too, it is a GA4 restriction, not a Windsor one.
- Split the request along scope lines and join on date, or on session_source_medium when both requests carry it.
Quick reference: Windsor field, GA4 API name and what it combines with
Every row below was checked against a live GA4 property through Windsor in September 2026.
| Windsor field | GA4 API name in the hint | Scope | Combines with |
|---|---|---|---|
| source_medium | sourceMedium | Event (source credited for a key event) | sessions, users, conversions, purchase_revenue. Not transactions, ecommerce_purchases, event_count, engaged_sessions or average_session_duration |
| session_source_medium, source, medium, campaign, session_default_channel_group, default_channel_group | sessionSourceMedium, sessionSource, sessionMedium, sessionCampaignName, sessionDefaultChannelGroup | Session | Everything except item dimensions and Search Console metrics |
| transactions, purchase_revenue, ecommerce_purchases, add_to_carts, item_view_events | transactions, purchaseRevenue, ecommercePurchases, addToCarts, itemViewEvents | Event | date, session dimensions, event_name and event_count. Not item dimensions |
| items_viewed, items_added_to_cart, items_checked_out, items_purchased, item_revenue | itemsViewed, itemsAddedToCart, itemsCheckedOut, itemsPurchased, itemRevenue | Item | item_name, item_id, item_category, item_brand, item_list_name, date |
| event_name, event_count | eventName, eventCount | Event | date, session dimensions, transactions. Not item dimensions or source_medium |
| organic_google_search_clicks, organic_google_search_impressions, organic_google_search_average_position | organicGoogleSearchClicks, organicGoogleSearchImpressions, organicGoogleSearchAveragePosition | Search Console link | landing_page_plus_query_string only, and no date. Use the Search Console connector |
| advertiser_ad_cost, advertiser_ad_clicks, advertiser_ad_impressions | advertiserAdCost, advertiserAdClicks, advertiserAdImpressions | Advertising | Requires campaign (sessionCampaignName) in the request |
Still stuck?
If you have swapped the fields as above and still see the error, reach out to support with:
- The full error message, verbatim, including the hint.
- The Windsor field list you requested.
- The GA4 property and the date range.
- Whether the same fields work in the GA4 Dimensions & Metrics Explorer.
That is the fastest way for us to identify a new restriction and add it to this guide.
Related reading
- GA4 “Unexpected field(s)” error: Windsor field names vs GA4 API names
- GA4 request errors: dimension and metric limits, date presets and filters
- Data discrepancies in Google Analytics 4
- Google Ads “Fields Cannot Be Queried Together” error
- Connect Google Analytics 4 to Claude
- Google Analytics 4 field reference
Tired of juggling fragmented data? Get started with Windsor.ai today to create a single source of truth