Update an Ad Group
Updates an ad group’s editable fields. Only the keys you send are changed.
Authorizations
A company API key, company scoped JWT, app API key, or user OAuth token. You must prepend your key/token with the word 'Bearer', which will look like Bearer ***************************
Headers
Pins the request to a dated API version.
"2026-07-18"
Path Parameters
The ad group ID.
Body
Saved audiences to deliver to or exclude. Can't be combined with demographics.automatic.
How delivery bids in the ad auction: minimum_cost gets the most results for the budget, average_target keeps the average cost per result near desired_cost_per_result, and maximum_target never bids above it.
minimum_cost, average_target, maximum_target This ad group's budget, in the ad account's currency. Omit when the budget is set on the campaign instead.
Whether budget_amount is spent per day (daily) or over the ad group's full run (lifetime).
daily, lifetime The pixel event optimized for. A standard event, or any custom pixel event name.
purchase, add_to_cart, initiated_checkout, add_payment_info, complete_registration, lead, content_view, search, contact, customize_product, donate, find_location, schedule, start_trial, submit_application, subscribe Where the result you're optimizing for happens: website (your site), profile (your social media profile), messaging (a direct-message conversation), on_ad (engagement with the ad itself), or a lead form (instant_forms, instant_forms_and_messenger, website_and_instant_forms). The lead form itself is set on the ad.
website, profile, messaging, on_ad, instant_forms, instant_forms_and_messenger, website_and_instant_forms Age, gender, and automatic-audience targeting.
Cost per result to aim for (average_target) or never exceed (maximum_target).
Interest, behavior, and demographic targeting, using categories from the ad platform's targeting taxonomy. At most 100 entries per section. Can't be combined with demographics.automatic, and unavailable to campaigns with special_ad_categories. Send the complete intended state — a section you omit is cleared.
Device platforms and operating systems to target.
When the ad group stops delivering, as an ISO 8601 timestamp. Omit to run until paused.
Cap on how often one person sees ads from this ad group. Only available with reach optimization.
Languages to target, as ISO 639 codes such as en or es. Empty or omitted targets all languages.
Apps the conversation opens in. Required when conversion_location is messaging.
messenger, instagram, whatsapp Minimum the ad group tries to spend each day.
The result the ad group's delivery is optimized to get the most of.
conversions, link_clicks, landing_page_views, reach, impressions, engagement, conversations, video_views, thruplay, two_second_views, page_likes, social_profile, ad_recall_lift, event_responses, reminders_set, lead_generation, quality_lead, value, profile_and_page_engagement automatic to let the ad platform choose placements, or the list of platforms and positions to target. Omit a platform's positions to target all of them.
Valid positions per platform:
facebook:feed,right_hand_column,marketplace,search,profile_feed,notification,story,instream_video,facebook_reels,facebook_reels_overlay,biz_disco_feedinstagram:stream,story,explore,explore_home,reels,profile_feed,profile_reels,ig_searchmessenger:storyaudience_network:classic,rewarded_videothreads:threads_streamwhatsapp:status
automatic Locations to target and exclude.
When the ad group starts delivering, as an ISO 8601 timestamp. Omit to start as soon as it's active.
Initial status (default: active).
active, paused The display name of the ad group.
Response
ad group updated
The ad campaign this ad group belongs to.
USD value attributed to add-to-cart events. Sums the value sent with each event, normalized to USD; events without a value contribute 0.
Whop pixel-attributed add-to-cart events, last-click.
Saved audiences this ad group delivers to or excludes.
How delivery bids in the ad auction: minimum_cost gets the most results for the budget, average_target keeps the average cost per result near desired_cost_per_result, and maximum_target never bids above it.
minimum_cost, average_target, maximum_target, null "minimum_cost"
This ad group's budget, in the ad account's currency. null when the budget is set on the campaign instead.
Whether budget_amount is spent per day (daily) or over the ad group's full run (lifetime).
daily, lifetime, null "daily"
Clicks divided by impressions, between 0 and 1.
The number of clicks.
USD value attributed to complete-registration events. Sums the value sent with each event, normalized to USD; events without a value contribute 0.
Whop pixel-attributed complete-registration events, last-click.
USD value attributed to contact events. Sums the value sent with each event, normalized to USD; events without a value contribute 0.
Whop pixel-attributed contact events, last-click.
The pixel event optimized for. A standard event, or any custom pixel event name.
purchase, add_to_cart, initiated_checkout, add_payment_info, complete_registration, lead, content_view, search, contact, customize_product, donate, find_location, schedule, start_trial, submit_application, subscribe Where the result you're optimizing for happens: website (your site), profile (your social media profile), messaging (a direct-message conversation), on_ad (engagement with the ad itself), or a lead form (instant_forms, instant_forms_and_messenger, website_and_instant_forms).
website, profile, messaging, on_ad, instant_forms, instant_forms_and_messenger, website_and_instant_forms, null "website"
Spend divided by attributed add-to-cart events; null when they are not the goal and none are attributed.
Spend divided by clicks; 0 when there are no clicks.
Spend divided by attributed complete-registration events; null when they are not the goal and none are attributed.
Spend divided by attributed contact events; null when contacts are not the goal and none are attributed.
Spend divided by attributed leads; null when leads are not a goal and none are attributed.
Spend per 1,000 impressions; 0 when there are no impressions.
Spend divided by attributed purchases; null when purchases are not a goal and none are attributed.
Spend divided by Whop pixel-attributed results; null when nothing Whop-attributable is being optimized for.
Spend divided by attributed schedule events; null when schedules are not the goal and none are attributed.
Spend divided by attributed submit-application events; null when they are not the goal and none are attributed.
Spend divided by attributed view-content events; null when they are not the goal and none are attributed.
When the ad group was created, as an ISO 8601 timestamp.
Whop pixel-attributed custom (merchant-defined) conversion events, last-click, across all custom event names.
Whop pixel-attributed custom conversions, keyed by your event name with its last-click count as the value. Empty when no named custom events are attributed. Custom events fired without a name are counted in custom_conversions but omitted here, so these values sum to at most custom_conversions.
Conversion value attributed to each custom event, keyed by event name like custom_event_counts. Sums the value passed to whop.track, normalized to USD; events fired without a value contribute 0.
Whether ads in this ad group are delivering right now, and if not, why. When several states apply at once, the highest-precedence one is returned.
all_ads_rejected, rejected, draft, no_ads, campaign_paused, paused, processing, issues, scheduled, completed, ads_off, learning_limited, learning, active "all_ads_rejected"
Age, gender, and automatic-audience targeting.
Cost per result to aim for (average_target) or never exceed (maximum_target). null for minimum_cost bidding.
Interest, behavior, and demographic targeting, using categories from the ad platform's targeting taxonomy. Can't be combined with automatic audience targeting, and unavailable to campaigns with special_ad_categories.
Device platforms and operating systems targeted.
Whether the ad platform automatically mixes and matches this ad group's creatives and copy to find the best-performing combinations.
When the ad group stops delivering, as an ISO 8601 timestamp. null when it runs until paused.
Platform-reported impressions divided by reach.
Cap on how often one person sees ads from this ad group. Only available with reach optimization; null when uncapped.
Unique identifier for the ad group, prefixed adgrp_.
The number of impressions.
Languages targeted, as ISO 639 codes such as en or es. A region-specific locale with no ISO code appears as its numeric platform locale key. Empty targets all languages.
USD value attributed to lead events. Sums the value sent with each event, normalized to USD; events without a value contribute 0.
Whop pixel-attributed leads, last-click.
Apps the conversation opens in when conversion_location is messaging. Empty for other conversion locations.
messenger, instagram, whatsapp Minimum the ad group tries to spend each day. null when no floor is set.
The result the ad group's delivery is optimized to get the most of.
conversions, link_clicks, landing_page_views, reach, impressions, engagement, conversations, video_views, two_second_views, page_likes, social_profile, ad_recall_lift, event_responses, reminders_set, lead_generation, quality_lead, value, profile_and_page_engagement, null "conversions"
USD value of pixel-attributed purchases.
Whop pixel-attributed purchases, last-click.
The number of unique people who saw this.
Locations targeted and excluded.
The Whop pixel conversion event whose attributed count represents results — the optimization goal, or the highest-volume attributed event for campaigns that budget per ad group. Null when the goal isn't a Whop-attributed event.
purchase, lead, schedule, submit_application, contact, complete_registration, view_content, add_to_cart, custom, null "purchase"
The merchant-defined event name when result_event is custom; null for the standard events.
The Whop pixel-attributed count behind result_event. When a campaign's ad groups optimize different goals there is no single result_event (it is null), and this is instead the sum of each ad group's own attributed results. Null when nothing Whop-attributable is being optimized for.
Purchase value divided by spend, both in USD (a currency-neutral ratio); 0 when there is no spend.
USD value attributed to schedule events. Sums the value sent with each event, normalized to USD; events without a value contribute 0.
Whop pixel-attributed schedule events, last-click.
The amount charged, in spend_currency.
The ISO 4217 currency code of all monetary metrics.
When the ad group starts delivering, as an ISO 8601 timestamp. null when it starts as soon as it's active.
Whether the ad group is enabled. active and paused are set by you; rejected means it failed ad review.
active, paused, rejected "active"
USD value attributed to submit-application events. Sums the value sent with each event, normalized to USD; events without a value contribute 0.
Whop pixel-attributed submit-application events, last-click.
Display name of the ad group.
Unique clicks divided by impressions, between 0 and 1.
The number of unique clicks.
When the ad group was last updated, as an ISO 8601 timestamp.
USD value attributed to view-content events. Sums the value sent with each event, normalized to USD; events without a value contribute 0.
Whop pixel-attributed view-content events, last-click.

