> ## Documentation Index
> Fetch the complete documentation index at: https://docs.markifact.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Adset

> Create a new Meta Ads ad set with budget, targeting, optimization, and promoted object settings

Create a new Meta Ads ad set with budget, targeting, optimization, and promoted object settings.

| | |
| - | - |
| **App** | Meta Ads |
| **Operation ID** | `meta_ads_create_adset` |
| **Type** | Action |
| **Connection** | `meta_ads` (required) |
| **Credits per run** | 1 |
| **Agent / MCP tool** | Yes |
| **Requires approval** | Yes (write operation) |

## Inputs

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `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.5 for $12.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>"} |

### SelectItem

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `value` | string | Yes | - | The value of the selectable item. |
| `label` | string | Yes | - | The label of the selectable item, used for display purposes. If not provided, defaults to the value. |

### SelectableOption

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `value` | string | Yes | - | |
| `label` | string | Yes | - | |

## Output

**Type**: `Dict`

Returns created ad set details.

**Fields**: `adset_id`, `adset_name`, `campaign_id`, `status`


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.