account | DynamicAccount | Yes | - | Ad account to use. Accepts account ID or option object; value may be with or without ‘act_’ prefix (for example ‘act_1234567890’ or ‘1234567890’) |
campaign_id | string or SelectItem | Yes | - | Campaign ID where the ad set will be created |
adset_name | string | Yes | - | Ad set name shown in Ads Manager. Maximum 400 characters |
status | string or SelectableOption | No | - | Initial delivery status after creation. If omitted, runner defaults to PAUSED |
destination_type | string or SelectableOption | Yes | - | ODAX destination type. Must be compatible with optimization_goal and promoted_object fields. For native Calls ad sets, use PHONE_CALL with optimization_goal QUALITY_CALL and promoted_object {“page_id”:“YOUR_REGIONAL_PAGE_ID”}. Set the intended Page during creation. |
optimization_goal | string or SelectableOption | Yes | - | Optimization goal used for delivery and learning. Must align with destination_type and billing_event |
billing_event | string or SelectableOption | Yes | - | Billing event used by Meta for charging/optimization. Must be valid for the selected goal |
bid_strategy | string or SelectableOption | No | - | Bid strategy. If omitted, runner defaults to LOWEST_COST_WITHOUT_CAP |
bid_amount | number | No | - | Bid amount in the account currency exactly as shown in Ads Manager (e.g. 2.5 for $2.50, 15000 for COP 15,000); the backend applies Meta’s currency offset automatically, never multiply yourself. Required when bid_strategy is COST_CAP or LOWEST_COST_WITH_BID_CAP. |
budget_type | string or SelectableOption | No | - | Budget mode: CAMPAIGN (use campaign budget), DAILY, or LIFETIME |
budget_value | number | No | - | Budget amount in the account currency exactly as shown in Ads Manager (e.g. 25 for 25,12.5for12.50, 300000 for COP 300,000); the backend applies Meta’s currency offset automatically, never multiply yourself. Required for DAILY and LIFETIME; ignored for CAMPAIGN. |
attribution_setting | string or SelectableOption | No | - | Optional conversion attribution setting for optimization. Don’t set this unless you know you need it; Meta’s default attribution setting is typically recommended and sufficient for most use cases. If set, must be compatible with the selected optimization_goal. |
is_incremental_attribution_enabled | boolean | No | - | Optional incremental attribution optimization flag. Omit this to let Meta use the standard attribution optimization behavior. If enabled, meta will ignore any attribution_setting provided |
is_dynamic_creative | boolean | No | - | Enable Dynamic Creative for this ad set. This can only be set when the ad set is created and cannot be changed afterward. Enable it when the ad creative will use asset_feed_spec with multiple creative assets. |
start_time | integer or string | No | - | Optional start date/time: Unix seconds, YYYY-MM-DD, or an ISO datetime such as 2026-10-01 09:00 (UTC). Accepts a value from a previous node, for example a Sheets cell. |
end_time | integer or string | No | - | Optional end date/time: Unix seconds, YYYY-MM-DD, or an ISO datetime such as 2026-10-31 23:59 (UTC). Required when budget_type is LIFETIME. Accepts a value from a previous node, for example a Sheets cell. |
promoted_object | object or string | No | - | The object this ad set promotes, as a Meta promoted_object JSON object. Required for certain objectives (for example website/app conversions, page likes, product sales). Pass only the Meta fields you need; do not wrap them in any discriminator. Meta validates the supplied fields and their combinations. Common keys: custom_conversion_id, pixel_id, custom_event_type, custom_event_str, page_id, application_id, object_store_url, product_set_id, product_catalog_id, offline_conversion_data_set_id, event_id. custom_event_type must be a valid Meta CustomEventType value, for example PURCHASE, LEAD, COMPLETE_REGISTRATION, ADD_TO_CART, INITIATED_CHECKOUT, CONTENT_VIEW, SUBSCRIBE, or OTHER (use OTHER with custom_event_str for a custom event). Pixel event example: {“pixel_id”: “1234567890”, “custom_event_type”: “PURCHASE”}. Custom conversion example: {“custom_conversion_id”: “1234567890”}. A custom conversion is not a named custom pixel event; do not invent custom_event_str or add OTHER just to reference a custom conversion. |
targeting | object or string | Yes | - | The Meta targeting spec for this ad set, as a JSON object sent to Meta as-is. Only geo_locations is required. Every other key below is optional: omit any you don’t explicitly need and Meta applies its own defaults (for example broad age range, all genders, automatic placements). Do not send keys just to restate Meta’s defaults. Use the keys below as needed: - geo_locations (required): object with any of countries (ISO 3166-1 alpha-2, e.g. [‘US’,‘GB’]), regions ([{key}]), cities ([{key, radius, distance_unit}]), zips ([{key}]), custom_locations ([{latitude, longitude, radius, distance_unit}]), geo_markets ([{key, name}]). location_types (e.g. [‘home’,‘recent’]). - excluded_geo_locations: same shape as geo_locations, to exclude areas. - age_min (13-65), age_max (13-65), omit for meta’s default of 18-65+ - genders: [1] for male, [2] for female, omit for all. - locales: list of Meta locale IDs (languages). - interests / behaviors: lists of {id, name} from Meta’s targeting search. - flexible_spec: list of AND-grouped objects, each with interests/behaviors/demographics arrays (OR within each); used for detailed targeting. - exclusions: object with interests/behaviors to exclude. - custom_audiences / excluded_custom_audiences: lists of {id} for saved, lookalike, or retargeting audiences. - publisher_platforms: subset of [‘facebook’,‘instagram’,‘messenger’,‘audience_network’,‘threads’]; omit for automatic (Advantage+) placements. - device_platforms: [‘mobile’,‘desktop’]. - facebook_positions / instagram_positions / messenger_positions / audience_network_positions / threads_positions: per-platform placement lists; only valid when the matching publisher platform is set. - targeting_automation: for constrained audience setups in Housing, Employment, Credit, or Financial Products/Services campaigns, explicitly send {“advantage_audience”: 1} to enable Advantage+ Audience or {“advantage_audience”: 0} to disable it. Use the JSON numbers 1 or 0, not strings or booleans. Example: {“geo_locations”: {“countries”: [“US”]}, “age_min”: 25, “age_max”: 45, “genders”: [2], “interests”: [{“id”: “6003107902433”, “name”: “Yoga”}]} |
dsa_beneficiary | string | No | - | Optional DSA beneficiary text for EU ad transparency requirements |
dsa_payor | string | No | - | Optional DSA payor text for EU ad transparency requirements |
regional_regulated_categories | array of string | No | - | Optional ad transparency categories required by some countries, for example [“BRAZIL_REGULATION”]. Set it together with regional_regulation_identities. |
regional_regulation_identities | object or string | No | - | Optional verified identity IDs for the declared regional_regulated_categories, for example {“universal_beneficiary”: “<identity_id>”, “universal_payer”: “<identity_id>“} |