Facebook Ads “Field Not Valid” and “Fields Incompatible” Errors: Troubleshooting Guide

If you request Facebook (Meta) Ads data through Windsor.ai and see a message like:

Sorry, some of the fields you have selected are not valid. Error message: (#100) adset is not valid for fields param. please check https://developers.facebook.com/docs/marketing-api/reference/ads-insights/ for all valid values

the field name you asked for does not exist in Facebook’s Marketing API under that spelling. Windsor passes the field straight through, so nothing is wrong with your connection or your ad account. This is the single most common Facebook error we see: it accounted for 2,835 failed requests across 1,658 teams in one week of production traffic.

A second, smaller family of errors happens when the fields you picked are individually valid but can’t be requested together, either a breakdown (gender, age, platform) that conflicts with certain metrics, or two breakdown dimensions that conflict with each other. Both are covered below.

Why this happens

Facebook’s ad reporting API doesn’t expose one field per concept. Instead, most metrics are split into families by two independent axes:

  • What kind of number. actions_* is a count, action_values_* is the revenue/value behind it, cost_per_action_type_* is cost per action, unique_actions_* is the deduplicated count.
  • Which attribution source. The same event (a purchase, a lead) is tracked separately per source: omni_purchase (blended across every source), offsite_conversion_fb_pixel_purchase (your website pixel only), onsite_conversion_purchase (checkout inside Facebook/Instagram), app_custom_event_fb_mobile_purchase (in-app), offline_conversion_purchase (offline events you upload).

That means “purchases” alone isn’t a field, Windsor’s Facebook connector exposes 847 fields, and roughly 300 of them are variations on this actions/action_values/cost_per_action_type pattern across dozens of event types. A person or an AI assistant guessing a plain-English name (purchases, revenue, roas, adset) almost always lands on a name that looks right but isn’t one of the 847. This guide covers the structural fields (campaign, ad, ad set, budget, status, creative) with confirmed exact fixes. A follow-up guide will cover the purchases/leads/revenue family, which needs a live account to confirm the right default per attribution source.

Facebook’s naming is also inconsistent about which concept gets the plain name: ad_name and adset_name exist, but there’s no plain ad or adset field, while campaign alone does return the campaign name.

For the complete list of fields Windsor supports for this connector, see the Facebook Ads field reference. Each fix below is something you can hand to an AI assistant: describe what you actually selected and the join key, and Claude, ChatGPT or Copilot can split the request and merge the results itself.

Common causes, in order of how often we see them

1. Structural fields: campaign, ad, ad set, budget, status, and creative details

These are the highest-volume wrong guesses, and each has one exact fix. All are checked against Windsor’s live Facebook field schema.

You typed Use this Windsor field What it returns
adset, adname (meaning the ad set) adset_name Ad Set Name
ad, adname (meaning the ad) ad_name Ad Name
cost spend Amount Spent
clicks_all clicks Clicks
daily_budget, campaign_budget, budget adset_daily_budget or campaign_daily_budget Daily budget at the ad set or campaign level (Facebook budgets can live on either)
lifetime_budget adset_lifetime_budget or campaign_lifetime_budget Lifetime budget, same either/or
budget_remaining adset_budget_remaining or campaign_budget_remaining Remaining budget
account_spend_cap spend_cap Account Spend Cap
billing_event adset_billing_event Ad Set Billing Event
targeting adset_targeting Ad Set Targeting Spec (raw targeting JSON)
promoted_object adset_promoted_object Ad Set Promoted Object
destination_type adset_destination_type Ad Set Destination Type
delivery_status, disable_reason status (ad level), adset_effective_status, campaign_effective_status Delivery status per level. Windsor exposes plain status only at the ad level; ad set and campaign use their own effective_status field
configured_status campaign_configured_status Only confirmed at the campaign level in the schema; ad and ad set expose status / effective_status instead
creative_name name Ad Creative Name (the plain “name” field is the creative’s name, not the ad’s)
ad_creative_body, creative_body, message body Ad Creative Body text
ad_creative_title, ad_creative_link_title title Ad Creative Title
ad_creative_link_url, destination_url link or link_url Ad Creative Link URL
ad_creative_thumbnail_url, creative_thumbnail_url thumbnail_url Ad Creative Thumbnail URL
ad_creative_id creative_id Creative ID
ad_creative_call_to_action_type call_to_action_type Call To Action Type (e.g. Shop Now, Learn More)
yearmonth year_month Yearmonth
landing_page_views actions_landing_page_view Landing Page Views, it’s an action count, not a standalone field
post_reactions actions_post_reaction Post Reactions
messaging_conversation_started_7d, messaging_conversations_started actions_onsite_conversion_messaging_conversation_started_7d Messaging conversations started. The _7d suffix is part of the exact field id, not optional

Ask your assistant: “Look up the Windsor field id for [concept] in the Facebook field reference before requesting it, don’t guess the plain-English name.”

2. Breakdowns (age, gender, platform) incompatible with omni or ranking fields

Example error: “Breakdown fields [{gender, age}] are incompatible with ‘omni’ and ‘ranking’ fields {action_values_omni_purchase, actions_omni_purchase}”.

Demographic and placement breakdowns, gender, age, country, publisher_platform, platform_position, impression_device, run on Facebook’s delivery/insights pipeline. The omni_* actions and action_values fields, and Facebook’s ranking-quality fields, are computed on a different pipeline that doesn’t support being sliced by those breakdowns in the same request.

  • Fix: pull the breakdown together with non-omni metrics (spend, clicks, impressions, and the source-specific actions_offsite_conversion_fb_pixel_purchase / actions_onsite_conversion_purchase fields all work fine with breakdowns), and pull the omni_* fields in a separate request without the breakdown. Join on campaign/ad set/ad and date.
  • Ask your assistant: “Split this into one Windsor request with the gender/age breakdown and non-omni metrics, and another with the omni_ purchase fields and no breakdown, then join them by campaign and date.”

3. Two breakdown dimensions that can't combine with each other

Example error: “Sorry, the fields you have selected are not compatible with each other… Current combination of data breakdown columns (action_type, image_asset, video_asset) is invalid.”

This is separate from case 2: it’s two breakdown dimensions conflicting with each other, not a breakdown conflicting with a metric. action_type (splitting actions by type) is one of the pickier ones, it doesn’t combine with every creative-asset breakdown (image_asset, video_asset, and similar).

  • Fix: request one breakdown dimension at a time. If you need both action_type and a creative-asset breakdown, run them as two requests and join on ad and date.
  • Ask your assistant: “Request action_type and the creative-asset breakdown as two separate Windsor calls, then join the results by ad and date.”

One more limit worth knowing: the 37-month lookback

Example error: “(#N) The start date of the time range cannot be beyond 37 months from the current date.” This is Facebook’s own Marketing API limit, not a Windsor restriction, and it’s the third most common Facebook-specific error we see (317 occurrences, 219 teams in one week). If you need older history, it isn’t retrievable through the Ads Insights API at all; only data pulled and stored going forward will cover it.

General troubleshooting checklist

  1. If the error names a field you typed in plain English (adset, cost, budget, status), check the quick reference table above or the Facebook field reference before guessing again.
  2. If the error mentions breakdown fields being incompatible with omni or ranking fields, split the omni_* metrics into their own request without the breakdown.
  3. If the error mentions two breakdown columns being incompatible with each other, request one breakdown dimension per call.
  4. If the date range fails with a 37-month message, that’s Facebook’s own API limit; shorten the range.
  5. Still failing? Check the field directly against Facebook’s own Ads Insights API reference, the link the error message itself points to.

Still stuck?

If you’ve matched the field names and split the request as above and still see the error, reach out to support with:

  • The full error message, verbatim, including the field or breakdown names.
  • The exact Windsor field list you requested.
  • Whether the same fields work directly against the Facebook Ads Insights API.

That’s the fastest way for us to identify a genuinely new restriction and add it to this guide.

Related reading

Tired of juggling fragmented data? Get started with Windsor.ai today to create a single source of truth

Let us help you streamline data integration and AI insights, so you can focus on what matters: growth strategy.
g logo
fb logo
big query data
youtube logo
power logo
looker logo