> ## 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 Promotion Asset

> Create promotion assets and attach them to Google Ads entities at account, campaign, or ad group level

Create promotion assets and attach them to Google Ads entities at account, campaign, or ad group level

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

## Inputs

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `account` | GadsAccountItem or object or array of object or string or integer | Yes | - | Select the Google Ads account, ask user for it if not provided |
| `update_type` | string or SelectableOption | Yes | - | Choose whether to create a single promotion asset or use bulk mode, when using bulk mode you need to provide structured\_data with the promotion assets details. |
| `level` | string or SelectableOption | No | - | Choose where to attach the promotion asset. Required for single mode |
| `campaign_ids` | array of string or SelectItem | No | - | Select one or more campaigns (required when level is CAMPAIGN) |
| `ad_group_ids` | array of string or SelectItem | No | - | Select one or more ad groups (required when level is AD\_GROUP) |
| `status` | string or SelectableOption | No | - | Status of the promotion asset link. Available options: ENABLED, PAUSED. Default: ENABLED |
| `promotion_target` | string | No | - | Item. Required. A freeform description of what the promotion is targeting |
| `final_url` | string | No | - | Final URL. Required. Landing page URL for the promotion asset |
| `language_code` | string | No | - | Language code from Google Ads language options |
| `currency_code` | string | No | - | Currency code. Required. Three-character ISO 4217 currency code |
| `occasion` | string or SelectableOption | No | - | Promotion occasion |
| `discount_type` | string or SelectableOption | No | - | Promotion type. Required. One of money\_amount\_off, percent\_off, up\_to\_money\_amount\_off, up\_to\_percent\_off |
| `discount_value` | number | No | - | Discount value in normal units. Required. For money discount types use amount in currency units (e.g. 10.5), for percent discount types use percentage (e.g. 20) |
| `promotion_trigger` | string or SelectableOption | No | - | Promotion details trigger type. Optional |
| `promotion_code` | string | No | - | Promotion code users should use |
| `orders_over_amount` | number | No | - | Minimum order amount in normal currency units for eligibility |
| `promotion_barcode_type` | string or SelectableOption | No | - | Barcode type used for promotion barcode |
| `promotion_barcode_content` | string | No | - | Text content to encode in the promotion barcode |
| `promotion_qr_code_info` | object or string | No | - | Promotion QR info. Either plain text content or JSON with qr\_code\_content |
| `redemption_start_date` | string | No | - | Redemption start date in yyyy-MM-dd format |
| `redemption_end_date` | string | No | - | Redemption end date in yyyy-MM-dd format |
| `start_date` | integer or string | No | - | Serving start date for when the promotion asset can begin serving (Unix timestamp or YYYY-MM-DD format) |
| `end_date` | integer or string | No | - | Serving end date for when the promotion asset stops serving (Unix timestamp or YYYY-MM-DD format) |
| `terms_and_conditions_text` | string | No | - | Terms and conditions text |
| `terms_and_conditions_uri` | string | No | - | Terms and conditions URI |
| `structured_data` | array (also accepts a comma-separated string) | No | - | Use only when update\_type is 'bulk'. JSON data with required columns: 'level' (ACCOUNT/CAMPAIGN/AD\_GROUP), 'promotion\_target', 'final\_url', 'currency\_code', 'discount\_type', 'discount\_value'. Optional columns: 'campaign\_ids' (comma-separated for multiple, required for CAMPAIGN level), 'ad\_group\_ids' (comma-separated for multiple, required for AD\_GROUP level), 'status' (ENABLED/PAUSED, defaults to ENABLED), 'promotion\_trigger', 'promotion\_code', 'orders\_over\_amount', 'promotion\_barcode\_type', 'promotion\_barcode\_content', 'promotion\_qr\_code\_info', 'language\_code', 'occasion', 'redemption\_start\_date' (yyyy-MM-dd), 'redemption\_end\_date' (yyyy-MM-dd), 'start\_date', 'end\_date' (YYYY-MM-DD or Unix timestamp), 'terms\_and\_conditions\_text', 'terms\_and\_conditions\_uri'. |

### GadsAccountItem

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `value` | string | Yes | - | |
| `label` | string | Yes | - | |
| `managerId` | string | Yes | - | The manager ID for the Google Ads account. Ask  user to use the dropdown to select accounts, this manager id is selected background and not shown to the user. |

### 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 promotion asset details.

**Fields**: `promotion_asset_ids`, `promotions_created`


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