{"id":"d943309b-8166-446d-bfc5-a73abf3cb9f0","shortId":"ExssJR","kind":"skill","title":"pinterest-ads","tagline":"Plan and create Pinterest Ads campaigns through the Hyper MCP — Awareness, Consideration, Video View, Web Conversion, Catalog Sales, and Web Sessions objectives — with strict microcurrency budgeting, CBO rules, audience and customer-list management, conversion tag handling, keywo","description":"# Pinterest Ads\n\nStrategic skill for managing Pinterest Ads campaigns via the Pinterest Ads API v5 surface exposed by the Hyper MCP. Ad-group creation goes through a direct REST call (bypassing SDK model conversion) so parameter types must be sent exactly as documented — strings as strings, integers as integers.\n\n## Out of scope — defer to other skills\n\n| Request | Send them to |\n| --- | --- |\n| Google Ads campaign | `google-ads` |\n| Meta (Facebook / Instagram) ad campaign | `meta-ads` |\n| Amazon Sponsored Products | `amazon-ads` |\n| TikTok ad campaign | `tiktok-ads` |\n| Competitor ad research from the Meta Ads Library | `meta-ads-library` |\n| Organic Pinterest pinning | not currently shipped — use the Pinterest app |\n\n## Requirements\n\n- **Hyper MCP installed and connected.** [https://app.hyperfx.ai/mcp](https://app.hyperfx.ai/mcp)\n- **Pinterest Ads integration connected** at [https://app.hyperfx.ai/integrations](https://app.hyperfx.ai/integrations) (Pinterest Business account with ad account access).\n\nIf `pinterest_ads_list_ad_accounts` is not in the tool list, stop and tell the user to enable the Hyper MCP and connect Pinterest Ads.\n\n## Tool surface\n\n| Tool group | Tools |\n| --- | --- |\n| Accounts | `pinterest_ads_list_ad_accounts`, `pinterest_ads_get_ad_account` |\n| Campaigns | `pinterest_ads_list_campaigns`, `pinterest_ads_get_campaign`, `pinterest_ads_create_campaign`, `pinterest_ads_update_campaign` |\n| Ad groups | `pinterest_ads_list_ad_groups`, `pinterest_ads_get_ad_group`, `pinterest_ads_create_ad_group`, `pinterest_ads_update_ad_group` |\n| Ads | `pinterest_ads_list_ads`, `pinterest_ads_get_ad`, `pinterest_ads_create_ad`, `pinterest_ads_update_ad` |\n| Audiences | `pinterest_ads_list_audiences`, `pinterest_ads_create_audience`, `pinterest_ads_create_customer_list` |\n| Conversion | `pinterest_ads_list_conversion_tags`, `pinterest_ads_create_conversion_tag`, `pinterest_ads_send_conversion_event` |\n| Keywords | `pinterest_ads_create_keyword` |\n| Analytics | `pinterest_ads_get_campaign_analytics` |\n\n## Critical Rules\n\n> **CRITICAL**: All budgets and bids are in **microcurrency**. $1.00 = 1,000,000 microdollars. $50/day = 50,000,000. Never pass dollar amounts directly.\n\n> **CRITICAL**: When using `is_flexible_daily_budgets: true`, you MUST also set `is_campaign_budget_optimization: true`. FDB requires CBO.\n\n> **CRITICAL**: Lifetime CBO campaigns MUST include `end_time` (Unix timestamp).\n\n> **CRITICAL**: Create campaigns with status `PAUSED` initially. Never launch live without user review.\n\n> **CRITICAL**: WEB_CONVERSION ad groups MUST use `billable_event=\"IMPRESSION\"` (NOT `CLICKTHROUGH`) and MUST include `optimization_goal_metadata` with `attribution_windows`, `conversion_event`, `conversion_tag_id`, and `cpa_goal_value_in_micro_currency`.\n\n> **CRITICAL**: Keyword creation REQUIRES `match_type`. Without it, the API returns 500 errors.\n\n> **CRITICAL**: CBO campaigns manage budget at the campaign level. Do NOT set `budget_in_micro_currency` on ad groups under CBO campaigns.\n\n> **IMPORTANT**: `retention_days` is **deprecated** for ENGAGEMENT audiences. Omit it from audience rules.\n\n## Phase 1: Account Discovery\n\nCall `pinterest_ads_list_ad_accounts()` to list accessible accounts.\n\n- If multiple: ask the user to select one.\n- If single: inform the user and proceed.\n- Note the `ad_account_id` — it's required for every subsequent tool call.\n\n## Phase 2: Account Assessment\n\n### Existing campaign audit\n\nRun these in parallel to understand the account state:\n\n```python\npinterest_ads_list_campaigns(ad_account_id=\"<AD_ACCOUNT_ID>\")\npinterest_ads_list_ad_groups(ad_account_id=\"<AD_ACCOUNT_ID>\")\npinterest_ads_list_ads(ad_account_id=\"<AD_ACCOUNT_ID>\")\npinterest_ads_list_audiences(ad_account_id=\"<AD_ACCOUNT_ID>\")\npinterest_ads_list_conversion_tags(ad_account_id=\"<AD_ACCOUNT_ID>\")\n```\n\n### Research & confirm\n\n- Get the destination URL and creative assets (Pin IDs).\n- Understand the campaign objective (awareness, consideration, conversions).\n- Confirm daily / lifetime budget.\n- Confirm target audience (geo, interests, demographics).\n- If WEB_CONVERSION: ensure a conversion tag exists.\n\n## Phase 3: Campaign Structure\n\n### Pinterest campaign hierarchy\n\n```\nAd Account\n└── Campaign (objective, budget for CBO)\n    └── Ad Group (targeting, bidding, schedule)\n        └── Ad (creative Pin + tracking)\n```\n\n### Campaign objectives\n\n| Objective | Use case |\n| --- | --- |\n| `AWARENESS` | Brand visibility, impressions |\n| `CONSIDERATION` | Traffic, engagement |\n| `VIDEO_VIEW` | Video completion |\n| `WEB_CONVERSION` | Purchases, signups, leads |\n| `CATALOG_SALES` | Shopping / product catalog |\n| `WEB_SESSIONS` | Website visits |\n\n### CBO vs Non-CBO\n\n| Setting | CBO campaign | Non-CBO campaign |\n| --- | --- | --- |\n| Budget location | Campaign level (`daily_spend_cap` or `lifetime_spend_cap`) | Ad group level (`budget_in_micro_currency`) |\n| `is_campaign_budget_optimization` | `true` | `false` |\n| Ad group budget | Managed by Pinterest | Set per ad group |\n\n## Phase 4: Campaign Creation\n\n### 1. Create campaign\n\n```python\npinterest_ads_create_campaign(\n    ad_account_id=\"<AD_ACCOUNT_ID>\",\n    name=\"Spring Collection 2026\",\n    objective_type=\"WEB_CONVERSION\",\n    status=\"PAUSED\",\n    daily_spend_cap=50000000,\n    is_campaign_budget_optimization=true,\n    is_flexible_daily_budgets=true,\n)\n```\n\n**Parameter requirements:**\n\n- `is_flexible_daily_budgets=true` → requires `is_campaign_budget_optimization=true`.\n- `lifetime_spend_cap` → requires `end_time`.\n- All spend caps in microcurrency.\n\n### 2. Create ad group\n\n> **CRITICAL**: This tool sends a direct REST call to the Pinterest API v5 (bypassing SDK models). Pass parameter values exactly as documented — strings as strings, integers as integers.\n\n> **CRITICAL**: Ad-group parameters depend heavily on the parent campaign's `objective_type`. Follow the objective-specific templates below exactly.\n\n**`billable_event` values:** `CLICKTHROUGH`, `IMPRESSION`, `VIDEO_V_50_MRC`.\n\n#### Objective / `billable_event` compatibility\n\n| Campaign `objective_type` | Required `billable_event` | `bid_in_micro_currency` | `optimization_goal_metadata` |\n| --- | --- | --- | --- |\n| `AWARENESS` | `IMPRESSION` | REQUIRED (integer) | Not needed |\n| `CONSIDERATION` | `CLICKTHROUGH` | REQUIRED (integer) | Not needed |\n| `VIDEO_VIEW` | `VIDEO_V_50_MRC` | Optional | Not needed |\n| `WEB_CONVERSION` | `IMPRESSION` | Optional | **REQUIRED** |\n| `CATALOG_SALES` | `CLICKTHROUGH` | REQUIRED (integer) | Not needed |\n| `WEB_SESSIONS` | `CLICKTHROUGH` | Optional | Not needed |\n\n#### Template: CONSIDERATION campaign (simplest, non-CBO)\n\n```python\npinterest_ads_create_ad_group(\n    ad_account_id=\"<AD_ACCOUNT_ID>\",\n    name=\"US Women 25-54\",\n    campaign_id=\"<CAMPAIGN_ID>\",\n    billable_event=\"CLICKTHROUGH\",\n    bid_in_micro_currency=1000000,\n    budget_in_micro_currency=10000000,\n    targeting_spec={\"LOCATION\": [\"US\"], \"GENDER\": [\"female\"], \"MINIMUM_AGE\": \"25\", \"MAXIMUM_AGE\": \"54\"},\n    bid_strategy_type=\"AUTOMATIC_BID\",\n    status=\"PAUSED\",\n)\n```\n\n#### Template: CONSIDERATION campaign (CBO — no ad group budget)\n\n```python\npinterest_ads_create_ad_group(\n    ad_account_id=\"<AD_ACCOUNT_ID>\",\n    name=\"US Women 25-54\",\n    campaign_id=\"<CAMPAIGN_ID>\",\n    billable_event=\"CLICKTHROUGH\",\n    bid_in_micro_currency=1000000,\n    targeting_spec={\"LOCATION\": [\"US\"], \"GENDER\": [\"female\"], \"MINIMUM_AGE\": \"25\", \"MAXIMUM_AGE\": \"54\"},\n    bid_strategy_type=\"AUTOMATIC_BID\",\n    status=\"PAUSED\",\n)\n```\n\n#### Template: WEB_CONVERSION campaign (requires `optimization_goal_metadata`)\n\n> **CRITICAL**: WEB_CONVERSION ad groups MUST use `billable_event=\"IMPRESSION\"` (NOT `CLICKTHROUGH`). They MUST provide `optimization_goal_metadata` with the full nested structure shown below.\n\n> **TYPE SAFETY**: `cpa_goal_value_in_micro_currency` MUST be a **string** (e.g., `\"5000000\"`), NOT an integer. `conversion_tag_id` MUST be a **string**. `attribution_windows` values MUST be **integers**.\n\n```python\npinterest_ads_create_ad_group(\n    ad_account_id=\"<AD_ACCOUNT_ID>\",\n    name=\"Conversion - Checkout\",\n    campaign_id=\"<CAMPAIGN_ID>\",\n    billable_event=\"IMPRESSION\",\n    targeting_spec={\"LOCATION\": [\"US\"]},\n    bid_strategy_type=\"AUTOMATIC_BID\",\n    status=\"PAUSED\",\n    optimization_goal_metadata={\n        \"conversion_tag_v3_goal_metadata\": {\n            \"attribution_windows\": {\n                \"click_window_days\": 30,\n                \"engagement_window_days\": 30,\n                \"view_window_days\": 1,\n            },\n            \"conversion_event\": \"CHECKOUT\",\n            \"conversion_tag_id\": \"<CONVERSION_TAG_ID>\",\n            \"cpa_goal_value_in_micro_currency\": \"5000000\",\n            \"is_roas_optimized\": false,\n        },\n    },\n)\n```\n\n**`conversion_event` values:** `PAGE_VISIT`, `SIGNUP`, `CHECKOUT`, `CUSTOM`, `VIEW_CATEGORY`, `SEARCH`, `ADD_TO_CART`, `WATCH_VIDEO`, `LEAD`, `APP_INSTALL`.\n\n**`attribution_windows` — only these exact combos are accepted** (click / engage / view):\n\n| `click_window_days` | `engagement_window_days` | `view_window_days` | Shorthand |\n| --- | --- | --- | --- |\n| 30 | 30 | 30 | 30/30/30 |\n| 30 | 30 | 7 | 30/30/7 |\n| 30 | 30 | 1 | 30/30/1 (default) |\n| 7 | 7 | 7 | 7/7/7 |\n| 7 | 7 | 1 | 7/7/1 |\n| 7 | 0 | 0 | 7/0/0 |\n| 1 | 1 | 1 | 1/1/1 |\n| 1 | 0 | 0 | 1/0/0 |\n\n> The tool auto-normalizes: if `attribution_windows` is missing or uses an invalid combo, it defaults to 30/30/1. It also auto-wraps in `conversion_tag_v3_goal_metadata` if the wrapper is missing, coerces `cpa_goal_value_in_micro_currency` to string, and defaults CPA to $10 if omitted.\n\n**`cpa_goal_value_in_micro_currency`**: **STRING** (pattern `^[0-9]+$`). Set high enough to avoid \"CPA goal value below bid floor\" errors. Example: `\"10000000\"` = $10 CPA.\n\n**Optional fields in `conversion_tag_v3_goal_metadata`:**\n\n- `is_roas_optimized` (boolean) — set `true` only when `conversion_event=\"CHECKOUT\"` AND `bid_strategy_type=\"AUTOMATIC_BID\"`.\n- `learning_mode_type` (string) — `\"ACTIVE\"` or `\"NOT_ACTIVE\"`. Omit if not needed.\n\n#### Template: AWARENESS campaign\n\n```python\npinterest_ads_create_ad_group(\n    ad_account_id=\"<AD_ACCOUNT_ID>\",\n    name=\"Brand Awareness\",\n    campaign_id=\"<CAMPAIGN_ID>\",\n    billable_event=\"IMPRESSION\",\n    bid_in_micro_currency=2000000,\n    targeting_spec={\"LOCATION\": [\"US\"]},\n    bid_strategy_type=\"AUTOMATIC_BID\",\n    status=\"PAUSED\",\n)\n```\n\n#### Budget rules for ad groups\n\n- **CBO campaigns**: Do NOT set `budget_in_micro_currency` on the ad group. Budget is controlled at the campaign level.\n- **Non-CBO campaigns**: `budget_in_micro_currency` is REQUIRED at the ad group level.\n\n**`bid_strategy_type` values:** `AUTOMATIC_BID`, `MAX_BID`, `TARGET_AVG`.\n\n**`status`**: Always create with `status=\"PAUSED\"` for review. Set to `\"ACTIVE\"` after user approval.\n\n**`pacing_delivery_type`**: Optional. `\"STANDARD\"` (default) or `\"ACCELERATED\"`.\n\n**`targeting_spec` keys** (all values are arrays of strings unless noted):\n\n- `LOCATION` — ISO Alpha-2 country codes or US Nielsen DMA codes (e.g., `[\"US\", \"CA\"]`, `[\"807\"]`). **Required** (or use `GEO`).\n- `GEO` — Region codes (e.g., `[\"BE-VOV\"]`) or postal codes (e.g., `[\"US-94107\"]`). Alternative to `LOCATION`.\n- `GENDER` — `[\"male\"]`, `[\"female\"]`, or `[\"unknown\"]`.\n- `MINIMUM_AGE` — string `\"18\"` through `\"65\"` (use with `MAXIMUM_AGE`, not with `AGE_BUCKET`).\n- `MAXIMUM_AGE` — string `\"18\"` through `\"65\"` or `\"65+\"` (use with `MINIMUM_AGE`).\n- `AGE_BUCKET` — `[\"18-24\", \"25-34\", \"35-44\", \"45-54\", \"55-64\", \"65+\"]` (legacy, cannot combine with `MIN`/`MAX_AGE`).\n- `INTEREST` — interest IDs from Pinterest taxonomy.\n- `LOCALE` — ISO 639-1 language codes (e.g., `[\"en\"]`).\n- `APPTYPE` — `[\"android_mobile\", \"android_tablet\", \"ipad\", \"iphone\", \"web\", \"web_mobile\"]`.\n- `AUDIENCE_INCLUDE` — audience IDs to include.\n- `AUDIENCE_EXCLUDE` — audience IDs to exclude.\n\n### 3. Create ad\n\n```python\npinterest_ads_create_ad(\n    ad_account_id=\"<AD_ACCOUNT_ID>\",\n    ad_group_id=\"<AD_GROUP_ID>\",\n    creative_type=\"REGULAR\",\n    pin_id=\"<PIN_ID>\",\n    name=\"Spring Sale Ad\",\n    status=\"ACTIVE\",\n    destination_url=\"https://example.com/spring-sale\",\n)\n```\n\n**`creative_type` values:** `REGULAR`, `VIDEO`, `SHOPPING`, `CAROUSEL`, `MAX_VIDEO`, `SHOP_THE_PIN`, `IDEA`.\n\n## Phase 5: Audience & Targeting\n\n### Create audience\n\n```python\npinterest_ads_create_audience(\n    ad_account_id=\"<AD_ACCOUNT_ID>\",\n    name=\"Website Visitors\",\n    audience_type=\"VISITOR\",\n    rule={\"visitor_source_id\": \"<TAG_ID>\", \"type\": \"visitors\"},\n)\n```\n\n**`audience_type` values:** `CUSTOMER_LIST`, `VISITOR`, `ENGAGEMENT`, `ACTALIKE`.\n\n**Rule structure by type:**\n\n| Type | Rule example |\n| --- | --- |\n| `VISITOR` | `{\"visitor_source_id\": \"<TAG_ID>\", \"type\": \"visitors\"}` |\n| `ENGAGEMENT` | `{\"source\": \"AUDIENCE_RETENTION\"}` (do NOT include `retention_days`) |\n| `CUSTOMER_LIST` | `{\"list_type\": \"EMAIL\"}` |\n| `ACTALIKE` | `{\"source_id\": \"<SEED_AUDIENCE_ID>\", \"country\": \"US\", \"percentage\": 5}` |\n\n### Create customer list\n\n```python\npinterest_ads_create_customer_list(\n    ad_account_id=\"<AD_ACCOUNT_ID>\",\n    name=\"Email Subscribers\",\n    records=\"user1@example.com,user2@example.com,...\",\n    list_type=\"EMAIL\",\n)\n```\n\n**`list_type` values:** `EMAIL`, `IDFA`, `MAID`, `LR_ID`, `DLX_ID`, `HASHED_PINNER_ID`.\n\n> Lists must match at least 100 Pinterest accounts after processing.\n\n## Phase 6: Conversion Tracking\n\n### List existing tags\n\n```python\npinterest_ads_list_conversion_tags(ad_account_id=\"<AD_ACCOUNT_ID>\")\n```\n\n### Create conversion tag\n\n```python\npinterest_ads_create_conversion_tag(\n    ad_account_id=\"<AD_ACCOUNT_ID>\",\n    name=\"Purchase Tracking\",\n    aem_enabled=true,\n)\n```\n\n### Send conversion event\n\n```python\npinterest_ads_send_conversion_event(\n    ad_account_id=\"<AD_ACCOUNT_ID>\",\n    event_name=\"checkout\",\n    action_source=\"web\",\n    event_time=1709424000,\n    event_id=\"unique_event_123\",\n    user_data={\n        \"em\": [\"5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8\"],\n        \"client_ip_address\": \"192.168.1.1\",\n        \"client_user_agent\": \"Mozilla/5.0...\",\n    },\n    custom_data={\"currency\": \"USD\", \"value\": \"99.99\"},\n)\n```\n\n**`event_name` values:** `add_to_cart`, `checkout`, `custom`, `lead`, `page_visit`, `search`, `signup`, `view_category`, `watch_video`.\n\n**`action_source` values:** `app_android`, `app_ios`, `web`, `offline`.\n\n**`user_data` requirements** (at least one identifier required):\n\n- `em` — array of SHA256-hashed email addresses (NOT plain text).\n- `hashed_maids` — array of hashed mobile ad IDs.\n- OR: `client_ip_address` + `client_user_agent`.\n\n## Phase 7: Keywords\n\n> **CRITICAL**: `match_type` is REQUIRED. Without it, the Pinterest API returns a 500 error.\n\n```python\npinterest_ads_create_keyword(\n    ad_account_id=\"<AD_ACCOUNT_ID>\",\n    parent_id=\"<AD_GROUP_ID>\",\n    value=\"spring fashion trends\",\n    match_type=\"BROAD\",\n)\n```\n\n**`match_type` values:** `BROAD`, `PHRASE`, `EXACT`, `EXACT_NEGATIVE`, `PHRASE_NEGATIVE`.\n\n- `BROAD` — ads show for related searches.\n- `PHRASE` — ads show when search contains the phrase.\n- `EXACT` — ads show only for exact match.\n- `EXACT_NEGATIVE` / `PHRASE_NEGATIVE` — exclude these terms.\n\n**`bid`** (optional): Bid in microcurrency for this keyword. Overrides ad group default bid.\n\n## Phase 8: Analytics\n\n```python\npinterest_ads_get_campaign_analytics(\n    ad_account_id=\"<AD_ACCOUNT_ID>\",\n    campaign_ids=[\"<CAMPAIGN_ID>\"],\n    start_date=\"2026-02-01\",\n    end_date=\"2026-03-01\",\n    columns=[\"SPEND_IN_MICRO_DOLLAR\", \"TOTAL_IMPRESSION\", \"TOTAL_CLICKTHROUGH\", \"CPC_IN_MICRO_DOLLAR\", \"CTR\", \"CPM_IN_MICRO_DOLLAR\"],\n    granularity=\"DAY\",\n)\n```\n\n**`granularity` values:** `TOTAL`, `DAY`, `HOUR`, `WEEKLY`, `MONTHLY`.\n\n**Common analytics columns:** `SPEND_IN_MICRO_DOLLAR`, `TOTAL_IMPRESSION`, `TOTAL_CLICKTHROUGH`, `CPC_IN_MICRO_DOLLAR`, `CPM_IN_MICRO_DOLLAR`, `CTR`, `ECTR`, `TOTAL_CONVERSIONS`, `TOTAL_CONVERSIONS_VALUE_IN_MICRO_DOLLAR`.\n\n## Update Operations\n\n`pinterest_ads_update_campaign`, `pinterest_ads_update_ad_group`, and `pinterest_ads_update_ad` all follow the same shape — pass `ad_account_id`, the entity ID (`campaign_id` / `ad_group_id` / `ad_id`), and any fields you want to change. Statuses use `ACTIVE`, `PAUSED`, or `ARCHIVED` (cannot be unarchived).\n\n```python\npinterest_ads_update_campaign(\n    ad_account_id=\"<AD_ACCOUNT_ID>\",\n    campaign_id=\"<CAMPAIGN_ID>\",\n    name=\"Updated Name\",\n    status=\"PAUSED\",\n    daily_spend_cap=75000000,\n)\n```\n\n## Campaign Workflow\n\nDiscovery → audit account → research (objectives, audience, assets) → confirm strategy → create campaign (`PAUSED`) → create ad groups → create ads → review → activate.\n\n## Known Limitations\n\n| Issue | Workaround |\n| --- | --- |\n| Keyword creation returns 500 without `match_type` | Always specify `match_type` (`BROAD`, `PHRASE`, `EXACT`). |\n| `retention_days` deprecated for ENGAGEMENT audiences | Omit from rule dict. |\n| WEB_CONVERSION ad groups require many parameters | Use the WEB_CONVERSION template exactly — include full `optimization_goal_metadata`. |\n| WEB_CONVERSION ad groups must use `IMPRESSION` `billable_event` | Do NOT use `CLICKTHROUGH` for WEB_CONVERSION. |\n| CBO campaigns reject ad group budgets | Do NOT set `budget_in_micro_currency` when parent campaign has CBO enabled. |\n| `cpa_goal_value_in_micro_currency` must be a string | Pass as `\"5000000\"`, not `5000000`. |\n| `conversion_tag_id` must be a real tag from the account | List conversion tags first, then use an existing tag ID. |\n\n## Safety Rules\n\n**Never:**\n\n- Assume Pin IDs or ad account IDs — always ask or look up.\n- Skip the account audit phase.\n- Create campaigns without explicit approval.\n- Set campaigns to `ACTIVE` without user consent.\n- Pass dollar amounts instead of microcurrency.\n- Use `retention_days` for ENGAGEMENT audiences.\n- Create WEB_CONVERSION ad groups without `optimization_goal_metadata`.\n- Use `CLICKTHROUGH` `billable_event` for WEB_CONVERSION campaigns (use `IMPRESSION`).\n- Set ad group budgets on CBO campaigns.\n- Create keywords without specifying `match_type`.\n- Pass `cpa_goal_value_in_micro_currency` as an integer (must be a string like `\"5000000\"`).\n- Omit `conversion_tag_id` from WEB_CONVERSION optimization metadata (list tags first, use a real ID).","tags":["pinterest","ads","marketing","skills","hyperfx-ai","agent-skills","ai-agent","claude","claude-code","claude-skills","codex","cursor"],"capabilities":["skill","source-hyperfx-ai","skill-pinterest-ads","topic-agent-skills","topic-ai-agent","topic-claude","topic-claude-code","topic-claude-skills","topic-codex","topic-cursor","topic-google-ads","topic-hermes","topic-marketing","topic-mcp","topic-meta-ads"],"categories":["marketing-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/hyperfx-ai/marketing-skills/pinterest-ads","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add hyperfx-ai/marketing-skills","source_repo":"https://github.com/hyperfx-ai/marketing-skills","install_from":"skills.sh"}},"qualityScore":"0.462","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 24 github stars · SKILL.md body (18,239 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:05:17.097Z","embedding":null,"createdAt":"2026-05-07T13:06:44.094Z","updatedAt":"2026-05-18T19:05:17.097Z","lastSeenAt":"2026-05-18T19:05:17.097Z","tsv":"'-01':1936,1941 '-02':1935 '-03':1940 '-1':1512 '-2':1420 '-24':1486 '-34':1488 '-44':1490 '-54':895,951,1492 '-64':1494 '-9':1244 '-94107':1448 '/integrations](https://app.hyperfx.ai/integrations)':167 '/mcp](https://app.hyperfx.ai/mcp)':159 '/spring-sale':1568 '0':1173,1174,1181,1182,1243 '000':326,327,331,332 '1':325,463,697,1093,1161,1170,1176,1177,1178,1180 '1.00':324 '1/0/0':1183 '1/1/1':1179 '10':1232,1259 '100':1689 '1000000':905,961 '10000000':910,1258 '123':1753 '1709424000':1748 '18':1460,1474,1485 '192.168.1.1':1762 '2':505,756 '2000000':1322 '2026':711,1934,1939 '25':894,919,950,970,1487 '3':595,1539 '30':1085,1089,1151,1152,1153,1155,1156,1159,1160 '30/30/1':1162,1202 '30/30/30':1154 '30/30/7':1158 '35':1489 '4':694 '45':1491 '5':1583,1649 '50':330,817,852 '50/day':329 '500':425,1848,2096 '5000000':1027,1106,2182,2184,2297 '50000000':721 '54':922,973 '55':1493 '5e884898':1757 '6':1695 '639':1511 '65':1462,1476,1478,1495 '7':1157,1164,1165,1166,1168,1169,1172,1834 '7/0/0':1175 '7/7/1':1171 '7/7/7':1167 '75000000':2067 '8':1919 '807':1431 '99.99':1772 'acceler':1405 'accept':1137 'access':174,474 'account':170,173,180,206,211,216,464,471,475,494,506,518,526,534,541,548,556,602,706,889,945,1051,1308,1548,1594,1660,1691,1708,1720,1738,1856,1928,2021,2055,2072,2195,2214,2223 'actalik':1615,1643 'action':1743,1790 'activ':1290,1293,1394,1563,2042,2088,2234 'ad':3,8,43,49,54,64,104,108,112,116,122,124,128,130,135,139,161,172,177,179,200,208,210,213,215,219,223,227,231,234,237,239,242,244,247,249,252,254,256,258,260,262,264,266,268,270,272,275,279,283,289,294,299,305,310,384,444,468,470,493,522,525,529,531,533,537,539,540,544,547,551,555,601,608,613,670,683,691,702,705,758,790,884,886,888,935,940,942,944,992,1046,1048,1050,1303,1305,1307,1337,1350,1371,1541,1544,1546,1547,1550,1561,1590,1593,1655,1659,1703,1707,1715,1719,1733,1737,1824,1852,1855,1878,1884,1892,1914,1923,1927,2001,2005,2007,2011,2013,2020,2028,2031,2051,2054,2083,2086,2119,2137,2154,2213,2253,2270 'ad-group':63,789 'add':1122,1776 'address':1761,1814,1829 'aem':1725 'age':918,921,969,972,1458,1466,1469,1472,1482,1483,1502 'agent':1765,1832 'alpha':1419 'also':348,1204 'altern':1449 'alway':1385,2100,2216 'amazon':117,121 'amazon-ad':120 'amount':336,2240 'analyt':308,313,1920,1926,1970 'android':1518,1520,1794 'api':55,423,771,1845 'app':150,1128,1793,1795 'app.hyperfx.ai':158,166 'app.hyperfx.ai/integrations](https://app.hyperfx.ai/integrations)':165 'app.hyperfx.ai/mcp](https://app.hyperfx.ai/mcp)':157 'approv':1397,2230 'apptyp':1517 'archiv':2045 'array':1412,1808,1820 'ask':478,2217 'assess':507 'asset':566,2076 'assum':2209 'attribut':400,1038,1080,1130,1190 'audienc':32,273,277,281,456,460,546,582,1527,1529,1533,1535,1584,1587,1592,1599,1608,1631,2075,2112,2249 'audit':510,2071,2224 'auto':1187,1206 'auto-norm':1186 'auto-wrap':1205 'automat':926,977,1068,1284,1330,1378 'avg':1383 'avoid':1249 'awar':14,573,622,836,1299,1312 'be-vov':1440 'bid':320,611,829,901,923,927,957,974,978,1065,1069,1254,1281,1285,1318,1327,1331,1374,1379,1381,1905,1907,1917 'billabl':388,810,820,827,898,954,996,1058,1315,2142,2261 'boolean':1272 'brand':623,1311 'broad':1866,1870,1877,2104 'bucket':1470,1484 'budget':29,318,344,352,431,439,579,605,659,673,679,685,724,730,737,742,906,937,1334,1344,1352,1363,2156,2160,2272 'busi':169 'bypass':73,773 'ca':1430 'call':72,466,503,767 'campaign':9,50,105,113,125,217,221,225,229,233,312,351,361,370,429,434,448,509,524,571,596,599,603,617,654,658,661,678,695,699,704,723,741,798,823,877,896,932,952,984,1056,1300,1313,1340,1357,1362,1925,1930,2003,2026,2053,2057,2068,2080,2152,2166,2227,2232,2266,2275 'cannot':1497,2046 'cap':665,669,720,747,753,2066 'carousel':1575 'cart':1124,1778 'case':621 'catalog':20,638,642,862 'categori':1120,1787 'cbo':30,357,360,428,447,607,647,651,653,657,881,933,1339,1361,2151,2168,2274 'chang':2039 'checkout':1055,1096,1117,1279,1742,1779 'click':1082,1138,1141 'clickthrough':392,813,843,864,871,900,956,1000,1950,1979,2147,2260 'client':1759,1763,1827,1830 'code':1422,1427,1438,1445,1514 'coerc':1219 'collect':710 'column':1942,1971 'combin':1498 'combo':1135,1198 'common':1969 'compat':822 'competitor':129 'complet':632 'confirm':559,576,580,2077 'connect':156,163,198 'consent':2237 'consider':15,574,626,842,876,931 'contain':1888 'control':1354 'convers':19,38,76,287,291,296,301,383,402,404,553,575,588,591,634,715,858,983,991,1031,1054,1075,1094,1097,1111,1209,1264,1277,1696,1705,1711,1717,1729,1735,1991,1993,2118,2127,2136,2150,2185,2197,2252,2265,2299,2304 'countri':1421,1646 'cpa':408,1016,1100,1220,1230,1235,1250,1260,2170,2283 'cpc':1951,1980 'cpm':1956,1984 'creat':6,228,248,267,280,284,295,306,369,698,703,757,885,941,1047,1304,1386,1540,1545,1586,1591,1650,1656,1710,1716,1853,2079,2082,2085,2226,2250,2276 'creation':66,416,696,2094 'creativ':565,614,1553,1569 'critic':314,316,338,358,368,381,414,427,760,788,989,1836 'ctr':1955,1988 'currenc':413,442,676,832,904,909,960,1021,1105,1225,1240,1321,1347,1366,1769,2163,2175,2288 'current':145 'custom':35,285,1118,1611,1638,1651,1657,1767,1780 'customer-list':34 'da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8':1758 'daili':343,577,663,718,729,736,2064 'data':1755,1768,1800 'date':1933,1938 'day':451,1084,1088,1092,1143,1146,1149,1637,1961,1965,2108,2246 'default':1163,1200,1229,1403,1916 'defer':95 'deliveri':1399 'demograph':585 'depend':793 'deprec':453,2109 'destin':562,1564 'dict':2116 'direct':70,337,765 'discoveri':465,2070 'dlx':1679 'dma':1426 'document':85,781 'dollar':335,1946,1954,1959,1975,1983,1987,1997,2239 'e.g':1026,1428,1439,1446,1515 'ectr':1989 'em':1756,1807 'email':1642,1663,1670,1674,1813 'en':1516 'enabl':193,1726,2169 'end':364,749,1937 'engag':455,628,1086,1139,1144,1614,1629,2111,2248 'enough':1247 'ensur':589 'entiti':2024 'error':426,1256,1849 'event':302,389,403,811,821,828,899,955,997,1059,1095,1112,1278,1316,1730,1736,1740,1746,1749,1752,1773,2143,2262 'everi':500 'exact':83,779,809,1134,1872,1873,1891,1896,1898,2106,2129 'exampl':1257,1622 'example.com':1567 'example.com/spring-sale':1566 'exclud':1534,1538,1902 'exist':508,593,1699,2203 'explicit':2229 'expos':58 'facebook':110 'fals':682,1110 'fashion':1862 'fdb':355 'femal':916,967,1454 'field':1262,2035 'first':2199,2309 'flexibl':342,728,735 'floor':1255 'follow':802,2015 'full':1009,2131 'gender':915,966,1452 'geo':583,1435,1436 'get':214,224,243,263,311,560,1924 'goal':397,409,834,987,1005,1017,1073,1078,1101,1212,1221,1236,1251,1267,2133,2171,2257,2284 'goe':67 'googl':103,107 'google-ad':106 'granular':1960,1962 'group':65,204,235,240,245,250,255,385,445,532,609,671,684,692,759,791,887,936,943,993,1049,1306,1338,1351,1372,1551,1915,2008,2029,2084,2120,2138,2155,2254,2271 'handl':40 'hash':1681,1812,1818,1822 'heavili':794 'hierarchi':600 'high':1246 'hour':1966 'hyper':12,61,152,195 'id':406,495,527,535,542,549,557,568,707,890,897,946,953,1033,1052,1057,1099,1309,1314,1505,1530,1536,1549,1552,1557,1595,1605,1626,1645,1661,1678,1680,1683,1709,1721,1739,1750,1825,1857,1859,1929,1931,2022,2025,2027,2030,2032,2056,2058,2187,2205,2211,2215,2301,2313 'idea':1581 'identifi':1805 'idfa':1675 'import':449 'impress':390,625,814,837,859,998,1060,1317,1948,1977,2141,2268 'includ':363,395,1528,1532,1635,2130 'inform':486 'initi':374 'instagram':111 'instal':154,1129 'instead':2241 'integ':89,91,785,787,839,845,866,1030,1043,2291 'integr':162 'interest':584,1503,1504 'invalid':1197 'io':1796 'ip':1760,1828 'ipad':1522 'iphon':1523 'iso':1418,1510 'issu':2091 'key':1408 'keywo':41 'keyword':303,307,415,1835,1854,1912,2093,2277 'known':2089 'languag':1513 'launch':376 'lead':637,1127,1781 'learn':1286 'least':1688,1803 'legaci':1496 'level':435,662,672,1358,1373 'librari':136,140 'lifetim':359,578,667,745 'like':2296 'limit':2090 'list':36,178,186,209,220,238,259,276,286,290,469,473,523,530,538,545,552,1612,1639,1640,1652,1658,1668,1671,1684,1698,1704,2196,2307 'live':377 'local':1509 'locat':660,913,964,1063,1325,1417,1451 'look':2219 'lr':1677 'maid':1676,1819 'male':1453 'manag':37,47,430,686 'mani':2122 'match':418,1686,1837,1864,1867,1897,2098,2102,2280 'max':1380,1501,1576 'maximum':920,971,1465,1471 'mcp':13,62,153,196 'meta':109,115,134,138 'meta-ad':114 'meta-ads-librari':137 'metadata':398,835,988,1006,1074,1079,1213,1268,2134,2258,2306 'micro':412,441,675,831,903,908,959,1020,1104,1224,1239,1320,1346,1365,1945,1953,1958,1974,1982,1986,1996,2162,2174,2287 'microcurr':28,323,755,1909,2243 'microdollar':328 'min':1500 'minimum':917,968,1457,1481 'miss':1193,1218 'mobil':1519,1526,1823 'mode':1287 'model':75,775 'month':1968 'mozilla/5.0':1766 'mrc':818,853 'multipl':477 'must':80,347,362,386,394,994,1002,1022,1034,1041,1685,2139,2176,2188,2292 'name':708,891,947,1053,1310,1558,1596,1662,1722,1741,1774,2059,2061 'need':841,847,856,868,874,1297 'negat':1874,1876,1899,1901 'nest':1010 'never':333,375,2208 'nielsen':1425 'non':650,656,880,1360 'non-cbo':649,655,879,1359 'normal':1188 'note':491,1416 'object':25,572,604,618,619,712,800,805,819,824,2074 'objective-specif':804 'offlin':1798 'omit':457,1234,1294,2113,2298 'one':483,1804 'oper':1999 'optim':353,396,680,725,743,833,986,1004,1072,1109,1271,2132,2256,2305 'option':854,860,872,1261,1401,1906 'organ':141 'overrid':1913 'pace':1398 'page':1114,1782 'parallel':514 'paramet':78,732,777,792,2123 'parent':797,1858,2165 'pass':334,776,2019,2180,2238,2282 'pattern':1242 'paus':373,717,929,980,1071,1333,1389,2043,2063,2081 'per':690 'percentag':1648 'phase':462,504,594,693,1582,1694,1833,1918,2225 'phrase':1871,1875,1883,1890,1900,2105 'pin':143,567,615,1556,1580,2210 'pinner':1682 'pinterest':2,7,42,48,53,142,149,160,168,176,199,207,212,218,222,226,230,236,241,246,251,257,261,265,269,274,278,282,288,293,298,304,309,467,521,528,536,543,550,598,688,701,770,883,939,1045,1302,1507,1543,1589,1654,1690,1702,1714,1732,1844,1851,1922,2000,2004,2010,2050 'pinterest-ad':1 'plain':1816 'plan':4 'postal':1444 'proceed':490 'process':1693 'product':119,641 'provid':1003 'purchas':635,1723 'python':520,700,882,938,1044,1301,1542,1588,1653,1701,1713,1731,1850,1921,2049 'real':2191,2312 'record':1665 'region':1437 'regular':1555,1572 'reject':2153 'relat':1881 'request':99 'requir':151,356,417,498,733,739,748,826,838,844,861,865,985,1368,1432,1801,1806,1840,2121 'research':131,558,2073 'rest':71,766 'retent':450,1632,1636,2107,2245 'return':424,1846,2095 'review':380,1391,2087 'roa':1108,1270 'rule':31,315,461,1335,1602,1616,1621,2115,2207 'run':511 'safeti':1015,2206 'sale':21,639,863,1560 'schedul':612 'scope':94 'sdk':74,774 'search':1121,1784,1882,1887 'select':482 'send':100,300,763,1728,1734 'sent':82 'session':24,644,870 'set':349,438,652,689,1245,1273,1343,1392,2159,2231,2269 'sha256':1811 'sha256-hashed':1810 'shape':2018 'ship':146 'shop':640,1574,1578 'shorthand':1150 'show':1879,1885,1893 'shown':1012 'signup':636,1116,1785 'simplest':878 'singl':485 'skill':45,98 'skill-pinterest-ads' 'skip':2221 'sourc':1604,1625,1630,1644,1744,1791 'source-hyperfx-ai' 'spec':912,963,1062,1324,1407 'specif':806 'specifi':2101,2279 'spend':664,668,719,746,752,1943,1972,2065 'sponsor':118 'spring':709,1559,1861 'standard':1402 'start':1932 'state':519 'status':372,716,928,979,1070,1332,1384,1388,1562,2040,2062 'stop':187 'strateg':44 'strategi':924,975,1066,1282,1328,1375,2078 'strict':27 'string':86,88,782,784,1025,1037,1227,1241,1289,1414,1459,1473,2179,2295 'structur':597,1011,1617 'subscrib':1664 'subsequ':501 'surfac':57,202 'tablet':1521 'tag':39,292,297,405,554,592,1032,1076,1098,1210,1265,1700,1706,1712,1718,2186,2192,2198,2204,2300,2308 'target':581,610,911,962,1061,1323,1382,1406,1585 'taxonomi':1508 'tell':189 'templat':807,875,930,981,1298,2128 'term':1904 'text':1817 'tiktok':123,127 'tiktok-ad':126 'time':365,750,1747 'timestamp':367 'tool':185,201,203,205,502,762,1185 'topic-agent-skills' 'topic-ai-agent' 'topic-claude' 'topic-claude-code' 'topic-claude-skills' 'topic-codex' 'topic-cursor' 'topic-google-ads' 'topic-hermes' 'topic-marketing' 'topic-mcp' 'topic-meta-ads' 'total':1947,1949,1964,1976,1978,1990,1992 'track':616,1697,1724 'traffic':627 'trend':1863 'true':345,354,681,726,731,738,744,1274,1727 'type':79,419,713,801,825,925,976,1014,1067,1283,1288,1329,1376,1400,1554,1570,1600,1606,1609,1619,1620,1627,1641,1669,1672,1838,1865,1868,2099,2103,2281 'unarchiv':2048 'understand':516,569 'uniqu':1751 'unix':366 'unknown':1456 'unless':1415 'updat':232,253,271,1998,2002,2006,2012,2052,2060 'url':563,1565 'us':892,914,948,965,1064,1326,1424,1429,1447,1647 'usd':1770 'use':147,340,387,620,995,1195,1434,1463,1479,2041,2124,2140,2146,2201,2244,2259,2267,2310 'user':191,379,480,488,1396,1754,1764,1799,1831,2236 'user1@example.com':1666 'user2@example.com':1667 'v':816,851 'v3':1077,1211,1266 'v5':56,772 'valu':410,778,812,1018,1040,1102,1113,1222,1237,1252,1377,1410,1571,1610,1673,1771,1775,1792,1860,1869,1963,1994,2172,2285 'via':51 'video':16,629,631,815,848,850,1126,1573,1577,1789 'view':17,630,849,1090,1119,1140,1147,1786 'visibl':624 'visit':646,1115,1783 'visitor':1598,1601,1603,1607,1613,1623,1624,1628 'vov':1442 'vs':648 'want':2037 'watch':1125,1788 'web':18,23,382,587,633,643,714,857,869,982,990,1524,1525,1745,1797,2117,2126,2135,2149,2251,2264,2303 'websit':645,1597 'week':1967 'window':401,1039,1081,1083,1087,1091,1131,1142,1145,1148,1191 'without':378,420,1841,2097,2228,2235,2255,2278 'women':893,949 'workaround':2092 'workflow':2069 'wrap':1207 'wrapper':1216","prices":[{"id":"b35c51f6-243e-40e2-842c-211b6f674c4d","listingId":"d943309b-8166-446d-bfc5-a73abf3cb9f0","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"hyperfx-ai","category":"marketing-skills","install_from":"skills.sh"},"createdAt":"2026-05-07T13:06:44.094Z"}],"sources":[{"listingId":"d943309b-8166-446d-bfc5-a73abf3cb9f0","source":"github","sourceId":"hyperfx-ai/marketing-skills/pinterest-ads","sourceUrl":"https://github.com/hyperfx-ai/marketing-skills/tree/main/skills/pinterest-ads","isPrimary":false,"firstSeenAt":"2026-05-07T13:06:44.094Z","lastSeenAt":"2026-05-18T19:05:17.097Z"}],"details":{"listingId":"d943309b-8166-446d-bfc5-a73abf3cb9f0","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"hyperfx-ai","slug":"pinterest-ads","github":{"repo":"hyperfx-ai/marketing-skills","stars":24,"topics":["agent-skills","ai-agent","claude","claude-code","claude-skills","codex","cursor","google-ads","hermes","marketing","mcp","meta-ads","openclaw","seo"],"license":"mit","html_url":"https://github.com/hyperfx-ai/marketing-skills","pushed_at":"2026-05-09T22:58:46Z","description":"Marketing skills for AI agents — paid ads, social media, SEO, competitor research, creative generation, email, analytics, and more. Powered by Hyper MCP.","skill_md_sha":"36d2439ebe3823ef88f8d0e99dbe5b120449e9cd","skill_md_path":"skills/pinterest-ads/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/hyperfx-ai/marketing-skills/tree/main/skills/pinterest-ads"},"layout":"multi","source":"github","category":"marketing-skills","frontmatter":{"name":"pinterest-ads","description":"Plan and create Pinterest Ads campaigns through the Hyper MCP — Awareness, Consideration, Video View, Web Conversion, Catalog Sales, and Web Sessions objectives — with strict microcurrency budgeting, CBO rules, audience and customer-list management, conversion tag handling, keyword targeting, and campaign analytics. Use when the user mentions Pinterest ads, Pinterest campaign, Pinterest ad group, Pinterest audience, Pinterest conversion tracking, Pinterest tag, or Pinterest customer list."},"skills_sh_url":"https://skills.sh/hyperfx-ai/marketing-skills/pinterest-ads"},"updatedAt":"2026-05-18T19:05:17.097Z"}}