{"id":"96cb2095-f754-497a-a8d7-44aec6dad5df","shortId":"VdJgnF","kind":"skill","title":"meta-capi","tagline":"Meta Conversions API (CAPI) Setup Reference — architecture, event types, customer information hashing, deduplication, implementation examples, AEM, and testing","description":"# Meta Conversions API (CAPI) Setup Reference\n\nComplete technical reference for Meta Conversions API: architecture, all standard event types with parameters, customer information hashing, implementation methods, event deduplication, testing, and Aggregated Event Measurement.\n\nFull docs: https://cogny.com/docs/meta-conversions-api\n\n## Usage\n\n```\n/meta-capi                          # Full CAPI overview\n/meta-capi deduplication            # Event dedup strategy\n/meta-capi purchase event           # Purchase event parameters\n/meta-capi emq                      # Improve Event Match Quality\n/meta-capi aem                      # Aggregated Event Measurement\n/meta-capi node.js                  # Node.js implementation example\n/meta-capi gtm server-side          # GTM SS container setup\n```\n\n## Instructions\n\nYou are a Meta Conversions API expert. Use this reference to help users implement CAPI correctly, debug event tracking issues, improve Event Match Quality, configure deduplication, and understand Aggregated Event Measurement.\n\nWhen the user asks a question, find the relevant section below and provide precise, actionable answers with ready-to-use code examples.\n\nIf the user provides a specific topic as an argument, focus on that area. Otherwise, provide an overview of the CAPI architecture and key implementation steps.\n\nIf Cogny MCP tools are available, use them to inspect the user's actual Pixel configuration, ad account setup, and campaign data to provide contextual recommendations.\n\n---\n\n## Architecture: Browser Pixel vs Server-Side CAPI\n\n```\n                         User's Browser\n                        +------------------------------+\n                        |  Meta Pixel (fbevents.js)     |\n                        |  - Fires on page interaction  |\n                        |  - Sets _fbp / _fbc cookies   |\n                        |  - Sends event_id for dedup   |\n                        +----------+-------------------+\n                                   |  HTTPS (browser -> Meta)\n                                   v\n                        +------------------------------+\n                        |       Meta Servers            |\n                        |  - Receives Pixel events      |\n                        |  - Receives CAPI events       |\n                        |  - Deduplicates via event_id  |\n                        |  - Matches users (EMQ)        |\n                        |  - Feeds ad optimization      |\n                        +------------------------------+\n                                   ^\n                                   |  HTTPS (server -> Meta)\n                        +----------+-------------------+\n                        |  Your Server / GTM SS         |\n                        |  - Conversions API endpoint   |\n                        |  - POST /v21.0/{pixel_id}/    |\n                        |    events                     |\n                        |  - Hashes PII before sending  |\n                        |  - Sends same event_id        |\n                        +------------------------------+\n```\n\n**Why both matter:**\n\n- **Pixel only:** Subject to ad blockers (15-30% signal loss), ITP cookie expiry (7-day cap on Safari), and network failures.\n- **CAPI only:** Misses real-time browser interactions and cannot set first-party cookies.\n- **Pixel + CAPI (recommended):** Redundant data paths with deduplication. Recovers 10-25% of lost conversions.\n\n## Standard Events\n\n### Purchase\n\nFired when a transaction is completed.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `value` | float | **Yes** | Total transaction value |\n| `currency` | string | **Yes** | ISO 4217 code (e.g., `USD`, `EUR`) |\n| `content_ids` | array<string> | Recommended | Product IDs from catalog |\n| `content_type` | string | Recommended | `product` or `product_group` |\n| `contents` | array<object> | Recommended | Array of `{id, quantity, item_price}` |\n| `content_name` | string | Optional | Product or page name |\n| `content_category` | string | Optional | Product category |\n| `num_items` | integer | Optional | Number of items |\n| `order_id` | string | Optional | Internal order ID |\n\n### AddToCart\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `value` | float | Recommended | Item value |\n| `currency` | string | Recommended | ISO 4217 code |\n| `content_ids` | array<string> | Recommended | Product IDs |\n| `content_type` | string | Recommended | `product` or `product_group` |\n| `contents` | array<object> | Recommended | `{id, quantity, item_price}` |\n| `content_name` | string | Optional | Product name |\n| `content_category` | string | Optional | Product category |\n\n### InitiateCheckout\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `value` | float | Recommended | Cart value |\n| `currency` | string | Recommended | ISO 4217 code |\n| `content_ids` | array<string> | Recommended | Product IDs in cart |\n| `content_type` | string | Recommended | `product` or `product_group` |\n| `contents` | array<object> | Recommended | `{id, quantity, item_price}` |\n| `num_items` | integer | Optional | Number of items |\n\n### CompleteRegistration\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `value` | float | Optional | Registration value |\n| `currency` | string | Optional | ISO 4217 code |\n| `content_name` | string | Optional | Form or page name |\n| `status` | string | Optional | Registration status |\n\n### Lead\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `value` | float | Optional | Estimated lead value |\n| `currency` | string | Optional | ISO 4217 code |\n| `content_name` | string | Optional | Lead form name |\n| `content_category` | string | Optional | Lead category |\n\n### ViewContent\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `value` | float | Recommended | Content value |\n| `currency` | string | Recommended | ISO 4217 code |\n| `content_ids` | array<string> | Recommended | Content/product IDs |\n| `content_type` | string | Recommended | `product` or `product_group` |\n| `content_name` | string | Optional | Content name |\n| `content_category` | string | Optional | Content category |\n\n### Search\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `search_string` | string | Recommended | The search query |\n| `value` | float | Optional | Assigned value |\n| `currency` | string | Optional | ISO 4217 code |\n| `content_ids` | array<string> | Optional | Result IDs |\n| `content_category` | string | Optional | Result category |\n\n### AddPaymentInfo\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `value` | float | Optional | Cart value |\n| `currency` | string | Optional | ISO 4217 code |\n| `content_ids` | array<string> | Optional | Product IDs |\n| `content_type` | string | Optional | `product` or `product_group` |\n| `content_category` | string | Optional | Payment method category |\n\n### AddToWishlist\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `value` | float | Optional | Item value |\n| `currency` | string | Optional | ISO 4217 code |\n| `content_ids` | array<string> | Optional | Product IDs |\n| `content_name` | string | Optional | Product name |\n| `content_category` | string | Optional | Product category |\n\n### Contact\n\nFired when a user initiates contact (phone, SMS, email, chat). No required or recommended parameters beyond customer information.\n\n### CustomizeProduct\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `content_ids` | array<string> | Optional | Product IDs |\n| `content_type` | string | Optional | `product` or `product_group` |\n| `content_name` | string | Optional | Product name |\n\n### Donate\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `value` | float | Recommended | Donation amount |\n| `currency` | string | Recommended | ISO 4217 code |\n\n### FindLocation\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `content_name` | string | Optional | Location name or query |\n| `content_category` | string | Optional | Location type |\n\n### Schedule\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `content_name` | string | Optional | Appointment type |\n| `content_category` | string | Optional | Service category |\n\n### StartTrial\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `value` | float | Recommended | Predicted trial value |\n| `currency` | string | Recommended | ISO 4217 code |\n| `content_name` | string | Optional | Trial plan name |\n\n### SubmitApplication\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `content_name` | string | Optional | Application type |\n| `content_category` | string | Optional | Application category |\n\n### Subscribe\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `value` | float | **Yes** | Subscription value |\n| `currency` | string | **Yes** | ISO 4217 code |\n| `content_name` | string | Optional | Plan name |\n\n## Custom Events\n\nCustom events cover actions not mapped to standard events. Used for audience building and custom conversions but cannot power standard optimization objectives.\n\n**Naming rules:**\n\n- Max 40 characters\n- Lowercase letters, numbers, underscores only\n- Must not start with a number\n- Must not use reserved names (standard event names, `fb_`, `_fb` prefixes)\n- Examples: `qualified_lead`, `demo_booked`, `pricing_page_scroll_50`\n\n## Customer Information Parameters\n\nCustomer info parameters enable Meta to match events to user profiles. Higher match quality improves ad optimization.\n\n### Available Parameters\n\n| Parameter | Key | Format Before Hashing |\n|-----------|-----|-----------------------|\n| Email | `em` | Lowercase, trim whitespace |\n| Phone | `ph` | Digits only with country code (e.g., `14155551234`) |\n| First Name | `fn` | Lowercase, trim, no punctuation |\n| Last Name | `ln` | Lowercase, trim, no punctuation |\n| City | `ct` | Lowercase, trim, no punctuation, no spaces |\n| State | `st` | 2-letter abbreviation, lowercase (e.g., `ca`) |\n| Zip Code | `zp` | Trim. US: 5-digit only |\n| Country | `country` | 2-letter ISO 3166-1 alpha-2, lowercase (e.g., `us`) |\n| Date of Birth | `db` | `YYYYMMDD` format |\n| Gender | `ge` | Single letter: `m` or `f` |\n| External ID | `external_id` | Any string. Hash recommended but not required |\n\n### Hashing Requirements\n\nAll parameters except `external_id` **must** be SHA-256 hashed before sending via CAPI. The Pixel hashes automatically; CAPI does not.\n\n**Procedure:** Normalize (lowercase, trim) -> SHA-256 -> lowercase hex string (64 chars)\n\n```javascript\n// Node.js\nconst crypto = require('crypto');\nfunction hashForMeta(value) {\n  if (!value) return null;\n  return crypto.createHash('sha256')\n    .update(value.toString().trim().toLowerCase())\n    .digest('hex');\n}\n```\n\n```python\n# Python\nimport hashlib\ndef hash_for_meta(value):\n    if not value:\n        return None\n    return hashlib.sha256(str(value).strip().lower().encode('utf-8')).hexdigest()\n```\n\n**Common mistakes:**\n\n- Hashing before normalizing (uppercase in input)\n- Double-hashing an already-hashed value\n- Including whitespace in hash input\n- Missing country code on phone numbers\n- Using MD5 instead of SHA-256\n\n### Event Match Quality (EMQ)\n\nEMQ is a 1-10 score indicating how well Meta matched an event to a user profile.\n\n| EMQ Score | Quality | Impact |\n|-----------|---------|--------|\n| 1-3 | Poor | Most events unmatched |\n| 4-5 | Fair | Partial matching |\n| 6-7 | Good | Strong matching |\n| 8-10 | Excellent | Full optimization potential |\n\n**How to improve EMQ:**\n\n1. Send `em` (email) with every event -- single biggest impact\n2. Add `ph` (phone) as second identifier\n3. Include `fn` + `ln` to disambiguate common emails\n4. Pass `external_id` for cross-device matching\n5. Forward `fbp` and `fbc` cookies from browser to server\n6. Ensure correct normalization and hashing\n\n## Implementation Methods\n\n### Direct API Integration\n\n**Endpoint:** `POST https://graph.facebook.com/v21.0/{pixel_id}/events`\n\n**Auth:** `access_token` query parameter (System User token with `ads_management` permission)\n\n#### Node.js Example\n\n```javascript\nconst crypto = require('crypto');\n\nconst PIXEL_ID = 'YOUR_PIXEL_ID';\nconst ACCESS_TOKEN = 'YOUR_ACCESS_TOKEN';\n\nfunction hash(value) {\n  if (!value) return undefined;\n  return crypto.createHash('sha256')\n    .update(value.toString().trim().toLowerCase())\n    .digest('hex');\n}\n\nasync function sendEvent(eventName, eventData, userData, eventId = null) {\n  const payload = {\n    data: [{\n      event_name: eventName,\n      event_time: Math.floor(Date.now() / 1000),\n      event_id: eventId || crypto.randomUUID(),\n      event_source_url: eventData.source_url,\n      action_source: 'website',\n      user_data: {\n        em: hash(userData.email),\n        ph: hash(userData.phone),\n        fn: hash(userData.firstName),\n        ln: hash(userData.lastName),\n        ct: hash(userData.city),\n        st: hash(userData.state),\n        zp: hash(userData.zipCode),\n        country: hash(userData.country),\n        external_id: hash(userData.externalId),\n        client_ip_address: userData.ipAddress,\n        client_user_agent: userData.userAgent,\n        fbp: userData.fbp,   // raw cookie value, not hashed\n        fbc: userData.fbc,   // raw cookie value, not hashed\n      },\n      custom_data: eventData.customData || {},\n    }],\n  };\n\n  const url = `https://graph.facebook.com/v21.0/${PIXEL_ID}/events?access_token=${ACCESS_TOKEN}`;\n  const response = await fetch(url, {\n    method: 'POST',\n    headers: { 'Content-Type': 'application/json' },\n    body: JSON.stringify(payload),\n  });\n\n  if (!response.ok) {\n    const err = await response.json();\n    throw new Error(`CAPI error: ${JSON.stringify(err)}`);\n  }\n  return response.json();\n}\n\n// Example: Purchase event\nawait sendEvent('Purchase', {\n  source_url: 'https://example.com/checkout/thank-you',\n  customData: {\n    value: 99.99,\n    currency: 'USD',\n    content_ids: ['SKU-123', 'SKU-456'],\n    content_type: 'product',\n    order_id: 'ORDER-789',\n    num_items: 2,\n  },\n}, {\n  email: 'john@example.com',\n  phone: '14155551234',\n  firstName: 'John',\n  lastName: 'Doe',\n  ipAddress: '203.0.113.50',\n  userAgent: 'Mozilla/5.0 ...',\n  fbp: 'fb.1.1612345678901.1234567890',\n  fbc: 'fb.1.1612345678901.AbCdEfGhIjKl',\n  externalId: 'user-12345',\n}, 'evt_purchase_abc123');\n```\n\n#### Python Example\n\n```python\nimport hashlib, time, uuid, requests\n\nPIXEL_ID = 'YOUR_PIXEL_ID'\nACCESS_TOKEN = 'YOUR_ACCESS_TOKEN'\n\ndef hash_value(value):\n    if not value:\n        return None\n    return hashlib.sha256(str(value).strip().lower().encode('utf-8')).hexdigest()\n\ndef send_event(event_name, event_data, user_data, event_id=None):\n    url = f'https://graph.facebook.com/v21.0/{PIXEL_ID}/events'\n    payload = {\n        'data': [{\n            'event_name': event_name,\n            'event_time': int(time.time()),\n            'event_id': event_id or str(uuid.uuid4()),\n            'event_source_url': event_data.get('source_url'),\n            'action_source': 'website',\n            'user_data': {k: v for k, v in {\n                'em': hash_value(user_data.get('email')),\n                'ph': hash_value(user_data.get('phone')),\n                'fn': hash_value(user_data.get('first_name')),\n                'ln': hash_value(user_data.get('last_name')),\n                'ct': hash_value(user_data.get('city')),\n                'st': hash_value(user_data.get('state')),\n                'zp': hash_value(user_data.get('zip_code')),\n                'country': hash_value(user_data.get('country')),\n                'external_id': hash_value(user_data.get('external_id')),\n                'client_ip_address': user_data.get('ip_address'),\n                'client_user_agent': user_data.get('user_agent'),\n                'fbp': user_data.get('fbp'),\n                'fbc': user_data.get('fbc'),\n            }.items() if v is not None},\n            'custom_data': event_data.get('custom_data', {}),\n        }],\n        'access_token': ACCESS_TOKEN,\n    }\n    response = requests.post(url, json=payload)\n    response.raise_for_status()\n    return response.json()\n\n# Example: Purchase event\nsend_event('Purchase', {\n    'source_url': 'https://example.com/checkout/thank-you',\n    'custom_data': {\n        'value': 99.99,\n        'currency': 'USD',\n        'content_ids': ['SKU-123'],\n        'content_type': 'product',\n    },\n}, {\n    'email': 'john@example.com',\n    'phone': '14155551234',\n    'first_name': 'John',\n    'last_name': 'Doe',\n    'ip_address': '203.0.113.50',\n    'user_agent': 'Mozilla/5.0 ...',\n    'fbp': 'fb.1.1612345678901.1234567890',\n    'external_id': 'user-12345',\n}, event_id='evt_purchase_abc123')\n```\n\n### GTM Server-Side Container\n\n1. Deploy a GTM server-side container (Cloud Run, AWS, etc.)\n2. Create a **Meta Conversions API tag** in your server container\n3. Configure:\n   - **Pixel ID** and **API Access Token**\n   - **Action Source:** `website`\n   - **Event Name:** Map from incoming event\n   - **User Data:** Map email, phone, etc. from event data\n   - **Event ID:** Must match browser Pixel's `eventID` for dedup\n4. Set trigger on relevant forwarded events\n\n**Key tag fields:**\n\n```\nTag Type:          Meta Conversions API\nPixel ID:          {{Meta Pixel ID}}\nAPI Access Token:  {{Meta CAPI Token}}\nEvent Name:        {{Event Name}}\nAction Source:     website\n\nUser Data:\n  Email:           {{User Email - Hashed}}\n  Phone:           {{User Phone - Hashed}}\n  IP Address:      {{Client IP}}  (auto-populated in SS GTM)\n  User Agent:      {{Client User Agent}}  (auto-populated)\n  FBP:             {{FBP Cookie}}\n  FBC:             {{FBC Cookie}}\n\nEvent Parameters:\n  Event ID:        {{Event ID}}  (must match browser Pixel eventID)\n  Event Source URL: {{Page URL}}\n  Value:           {{Event Value}}\n  Currency:        {{Event Currency}}\n```\n\n### Partner Integrations\n\n| Platform | Method | Notes |\n|----------|--------|-------|\n| **Shopify** | Native Meta channel app | Auto dedup; standard e-commerce events |\n| **WooCommerce** | Facebook for WooCommerce plugin | Requires configuration |\n| **BigCommerce** | Native Meta integration | Via app |\n| **Magento** | Meta Business Extension | Server-side events |\n\n## Event Deduplication\n\nWhen running Pixel + CAPI, the same conversion can be reported twice. Meta deduplicates using `event_id` + `event_name`.\n\n### How It Works\n\n1. Browser Pixel fires with `eventID: \"evt_abc123\"` and `Purchase`\n2. Server sends CAPI with `event_id: \"evt_abc123\"` and `Purchase`\n3. Meta matches on both fields, counts one conversion\n4. If one path fails (ad blocker, server error), the other still delivers\n\n### Dedup Pattern\n\n```javascript\n// Browser: generate event_id, fire Pixel, send to server\nconst eventId = crypto.randomUUID();\n\nfbq('track', 'Purchase', {\n  value: 99.99,\n  currency: 'USD',\n}, { eventID: eventId });\n\nnavigator.sendBeacon('/api/meta-capi', JSON.stringify({\n  event_name: 'Purchase',\n  event_id: eventId,\n  custom_data: { value: 99.99, currency: 'USD' },\n}));\n\n// Server: forward to CAPI with same event_id\n```\n\n### fbp and fbc Cookies\n\n**`_fbp`** (Facebook Browser ID): Set by Pixel on first load. Format: `fb.1.{timestamp}.{random}`. Persists 90 days. Send raw (not hashed).\n\n**`_fbc`** (Facebook Click ID): Set on Meta ad click. Format: `fb.1.{timestamp}.{fbclid}`. If missing, construct from URL: `fb.1.{timestamp_ms}.{fbclid}`. Send raw (not hashed).\n\n```javascript\n// Extract from cookies server-side\nconst fbp = req.cookies['_fbp'] || null;\nconst fbc = req.cookies['_fbc'] || null;\n\n// Construct fbc from fbclid if cookie missing\nfunction constructFbc(fbclid) {\n  return fbclid ? `fb.1.${Date.now()}.${fbclid}` : null;\n}\n```\n\n### Common Dedup Failures\n\n| Problem | Fix |\n|---------|-----|\n| Different event_id on Pixel vs CAPI | Generate in browser, pass to server |\n| event_id missing from Pixel | Add `{ eventID: id }` as 4th arg to `fbq('track')` |\n| event_id missing from CAPI | Include event_id in payload |\n| Different event_name casing | Use exact standard names (`Purchase`, not `purchase`) |\n| CAPI sent hours later | Send within minutes, not in delayed batches (48h dedup window) |\n\n## Testing and Validation\n\n### Test Events Tool\n\n1. Events Manager > Your Pixel > **Test Events** tab\n2. Copy the **Test Event Code** (e.g., `TEST12345`)\n3. Add `test_event_code` to your CAPI payload\n4. Send events -- they appear in real time\n5. **Remove test_event_code before production** (test events are not processed for ads)\n\n```javascript\nconst payload = {\n  data: [{ /* event data */ }],\n  test_event_code: 'TEST12345',\n};\n```\n\n### Event Match Quality Dashboard\n\nEvents Manager > Data Sources > Your Pixel > **Event Match Quality**:\n\n- Per-event EMQ scores\n- Parameter frequency breakdown\n- Improvement recommendations\n- Trend over time\n\n### Common Error Codes\n\n| Code | Message | Fix |\n|------|---------|-----|\n| `190` | Invalid OAuth access token | Regenerate system user token |\n| `100` | Invalid parameter | Check required: event_name, event_time, action_source, user_data |\n| `2804003` | Timestamp too old | event_time must be within 7 days |\n| `2804004` | Invalid event_time | Must be Unix seconds, not milliseconds |\n| `2804001` | Missing user_data | Include at least one customer info parameter |\n| `368` | Temporarily blocked | Rate limiting; use exponential backoff |\n| `2804002` | Invalid action_source | Use: website, app, phone_call, chat, email, in_store, other |\n| `803` | Permission denied | System user needs ads_management permission |\n\n## Aggregated Event Measurement (AEM)\n\nMeta's protocol for measuring events from iOS 14.5+ users who opted out of tracking via ATT.\n\n### Key Facts\n\n- **8-event limit** per domain, ranked by priority\n- **72-hour delay** for opted-out user data\n- **1-day click attribution** (vs. standard 7-day click / 1-day view)\n- **Statistical modeling** used to estimate opted-out conversions\n- Requires **domain verification** in Business Settings\n\n### Recommended Event Priority (E-commerce)\n\n| Priority | Event |\n|----------|-------|\n| 1 (highest) | Purchase |\n| 2 | Subscribe |\n| 3 | StartTrial |\n| 4 | InitiateCheckout |\n| 5 | AddPaymentInfo |\n| 6 | AddToCart |\n| 7 | CompleteRegistration |\n| 8 (lowest) | ViewContent |\n\n### Recommended Event Priority (Lead Gen)\n\n| Priority | Event |\n|----------|-------|\n| 1 (highest) | Purchase |\n| 2 | Lead |\n| 3 | SubmitApplication |\n| 4 | Schedule |\n| 5 | CompleteRegistration |\n| 6 | Contact |\n| 7 | ViewContent |\n| 8 (lowest) | Search |\n\n### Domain Verification\n\n1. Business Settings > Brand Safety > Domains\n2. Add domain, verify via DNS TXT record (recommended), HTML file, or meta tag\n3. Configure 8 events in Events Manager > Aggregated Event Measurement\n\n### Impact on Reporting\n\n| Metric | Pre-iOS 14.5 | With AEM |\n|--------|--------------|----------|\n| Attribution window | 28d click, 7d view | 7d click, 1d view |\n| Reporting delay | Real-time | Up to 72 hours |\n| Breakdowns | Full | Limited |\n| Conversion count | Exact | Modeled for opted-out |\n| Optimization events | Unlimited | 8 per domain |\n\n**Mitigations:**\n\n- Use CAPI to maximize EMQ (partially offsets ATT opt-outs)\n- Prioritize 8 most important events\n- Expect 15-30% iOS conversion underreporting\n- Consider broad targeting strategies\n\n## Resources\n\n- **Meta CAPI Docs:** https://developers.facebook.com/docs/marketing-api/conversions-api\n- **CAPI Setup Guide:** https://developers.facebook.com/docs/marketing-api/conversions-api/get-started\n- **EMQ Best Practices:** https://developers.facebook.com/docs/marketing-api/conversions-api/best-practices\n- **Standard Events Reference:** https://developers.facebook.com/docs/meta-pixel/reference\n- **Full Cogny Docs:** https://cogny.com/docs/meta-conversions-api","tags":["meta","capi","claude","code","marketing","skills","cognyai","agent-skills","ai-agents","claude-code","claude-skills","cluade-mcp"],"capabilities":["skill","source-cognyai","skill-meta-capi","topic-agent-skills","topic-ai-agents","topic-claude-code","topic-claude-skills","topic-cluade-mcp","topic-cursor","topic-geo","topic-growth-hacking","topic-llm","topic-marketing","topic-mcp","topic-seo"],"categories":["claude-code-marketing-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/cognyai/claude-code-marketing-skills/meta-capi","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add cognyai/claude-code-marketing-skills","source_repo":"https://github.com/cognyai/claude-code-marketing-skills","install_from":"skills.sh"}},"qualityScore":"0.471","qualityRationale":"deterministic score 0.47 from registry signals: · indexed on github topic:agent-skills · 42 github stars · SKILL.md body (24,187 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-01T06:56:27.175Z","embedding":null,"createdAt":"2026-04-18T22:23:39.811Z","updatedAt":"2026-05-01T06:56:27.175Z","lastSeenAt":"2026-05-01T06:56:27.175Z","tsv":"'-1':1019 '-10':1170,1204 '-123':1470,1709 '-12345':1501,1734 '-2':1021 '-25':328 '-256':1059,1077,1161 '-3':1188 '-30':289,2590 '-456':1472 '-5':1194 '-7':1199 '-789':1479 '-8':1127,1540 '/api/meta-capi':2022 '/checkout/thank-you'',':1461,1699 '/docs/marketing-api/conversions-api':2604 '/docs/marketing-api/conversions-api/best-practices':2616 '/docs/marketing-api/conversions-api/get-started':2610 '/docs/meta-conversions-api':58,2628 '/docs/meta-pixel/reference':2622 '/events':1275,1416,1561 '/meta-capi':60,64,69,75,81,86,91 '/v21.0':267 '/v21.0/':1272,1558 '/v21.0/$':1413 '1':1169,1187,1213,1745,1954,2201,2415,2424,2450,2475,2495 '10':327 '100':2299 '1000':1341 '14.5':2387,2532 '14155551234':974,1486,1716 '15':288,2589 '190':2290 '1d':2543 '2':999,1015,1223,1482,1757,1964,2209,2453,2478,2501 '203.0.113.50':1492,1725 '2804001':2333 '2804002':2352 '2804003':2312 '2804004':2323 '28d':2537 '3':1230,1768,1975,2217,2455,2480,2515 '3166':1018 '368':2344 '4':1193,1238,1804,1984,2226,2457,2482 '40':901 '4217':355,427,476,522,552,581,630,658,695,773,826,866 '48h':2192 '4th':2155 '5':1010,1247,2234,2459,2484 '50':933 '6':1198,1257,2461,2486 '64':1081 '7':295,2321,2421,2463,2488 '72':2406,2552 '7d':2539,2541 '8':1203,2398,2465,2490,2517,2568,2584 '803':2366 '90':2063 '99.99':1464,1703,2016,2033 'abbrevi':1001 'abc123':1504,1739,1961,1972 'access':1277,1302,1305,1417,1419,1518,1521,1675,1677,1774,1825,2293 'account':198 'action':146,879,1351,1585,1776,1834,2308,2354 'actual':194 'ad':197,254,286,952,1285,1989,2076,2247,2372 'add':1224,2151,2218,2502 'addpaymentinfo':644,2460 'address':1386,1648,1651,1724,1848 'addtocart':413,2462 'addtowishlist':681 'aem':19,82,2378,2534 'agent':1390,1654,1657,1727,1858,1861 'aggreg':51,83,129,2375,2522 'alpha':1020 'alreadi':1142 'already-hash':1141 'amount':768 'answer':147 'api':6,24,34,106,264,1266,1762,1773,1818,1824 'app':1902,1922,2358 'appear':2230 'applic':844,850 'application/json':1432 'appoint':803 'architectur':10,35,176,207 'area':168 'arg':2156 'argument':164 'array':362,377,379,431,444,480,495,585,634,662,699,741 'ask':135 'assign':624 'async':1323 'att':2395,2579 'attribut':2418,2535 'audienc':887 'auth':1276 'auto':1852,1863,1903 'auto-popul':1851,1862 'automat':1068 'avail':186,954 'aw':1755 'await':1423,1440,1454 'backoff':2351 'batch':2191 'best':2612 'beyond':731 'bigcommerc':1917 'biggest':1221 'birth':1027 'block':2346 'blocker':287,1990 'bodi':1433 'book':929 'brand':2498 'breakdown':2278,2554 'broad':2595 'browser':208,217,235,309,1254,1798,1879,1955,2000,2050,2142 'build':888 'busi':1925,2440,2496 'ca':1004 'call':2360 'campaign':201 'cannot':312,893 'cap':297 'capi':3,7,25,62,115,175,214,244,303,319,1064,1069,1445,1828,1936,1967,2039,2139,2164,2181,2224,2573,2600,2605 'cart':470,485,652 'case':2173 'catalog':367 'categori':394,398,457,461,562,566,604,608,639,643,675,680,710,714,789,806,810,847,851 'channel':1901 'char':1082 'charact':902 'chat':725,2361 'check':2302 'citi':989,1622 'click':2071,2077,2417,2423,2538,2542 'client':1384,1388,1646,1652,1849,1859 'cloud':1753 'code':153,356,428,477,523,553,582,631,659,696,774,827,867,972,1006,1152,1633,2214,2221,2238,2256,2286,2287 'cogni':182,2624 'cogny.com':57,2627 'cogny.com/docs/meta-conversions-api':56,2626 'commerc':1908,2447 'common':1129,1236,2128,2284 'complet':28,340 'completeregistr':508,2464,2485 'configur':125,196,1769,1916,2516 'consid':2594 'const':1085,1291,1295,1301,1331,1409,1421,1438,2009,2102,2107,2249 'construct':2084,2112 'constructfbc':2120 'contact':715,721,2487 'contain':98,1744,1752,1767 'content':360,368,376,385,393,429,435,443,450,456,478,486,494,524,554,561,575,583,589,597,601,603,607,632,638,660,666,674,697,703,709,739,745,753,780,788,799,805,828,840,846,868,1430,1467,1473,1706,1710 'content-typ':1429 'content/product':587 'contextu':205 'convers':5,23,33,105,263,331,891,1761,1817,1939,1983,2435,2557,2592 'cooki':228,293,317,1252,1395,1402,1867,1870,2047,2098,2117 'copi':2210 'correct':116,1259 'count':1981,2558 'countri':971,1013,1014,1151,1377,1634,1638 'cover':878 'creat':1758 'cross':1244 'cross-devic':1243 'crypto':1086,1088,1292,1294 'crypto.createhash':1097,1315 'crypto.randomuuid':1345,2011 'ct':990,1368,1618 'currenc':351,423,472,518,548,577,626,654,691,769,822,862,1465,1704,1890,1892,2017,2034 'custom':13,42,732,874,876,890,934,937,1406,1670,1673,1700,2030,2341 'customdata':1462 'customizeproduct':734 'dashboard':2261 'data':202,322,1333,1355,1407,1548,1550,1563,1589,1671,1674,1701,1786,1793,1838,2031,2251,2253,2264,2311,2336,2414 'date':1025 'date.now':1340,2125 'day':296,2064,2322,2416,2422,2425 'db':1028 'debug':117 'dedup':67,233,1803,1904,1997,2129,2193 'dedupl':16,48,65,126,246,325,1932,1945 'def':1109,1523,1542 'delay':2190,2408,2546 'deliv':1996 'demo':928 'deni':2368 'deploy':1746 'descript':344,417,466,512,541,571,613,648,685,738,763,779,798,815,839,856 'developers.facebook.com':2603,2609,2615,2621 'developers.facebook.com/docs/marketing-api/conversions-api':2602 'developers.facebook.com/docs/marketing-api/conversions-api/best-practices':2614 'developers.facebook.com/docs/marketing-api/conversions-api/get-started':2608 'developers.facebook.com/docs/meta-pixel/reference':2620 'devic':1245 'differ':2133,2170 'digest':1103,1321 'digit':968,1011 'direct':1265 'disambigu':1235 'dns':2506 'doc':55,2601,2625 'doe':1490,1722 'domain':2402,2437,2493,2500,2503,2570 'donat':759,767 'doubl':1138 'double-hash':1137 'e':1907,2446 'e-commerc':1906,2445 'e.g':357,973,1003,1023,2215 'em':962,1215,1356,1596 'email':724,961,1216,1237,1483,1600,1713,1788,1839,1841,2362 'emq':76,252,1165,1166,1183,1212,2274,2576,2611 'enabl':940 'encod':1125,1538 'endpoint':265,1268 'ensur':1258 'err':1439,1448 'error':1444,1446,1992,2285 'estim':545,2431 'etc':1756,1790 'eur':359 'event':11,38,47,52,66,71,73,78,84,118,122,130,230,242,245,248,270,277,333,875,877,884,920,944,1162,1178,1191,1219,1334,1337,1342,1346,1453,1544,1545,1547,1551,1564,1566,1568,1572,1574,1579,1691,1693,1735,1779,1784,1792,1794,1810,1830,1832,1871,1873,1875,1882,1888,1891,1909,1930,1931,1947,1949,1969,2002,2024,2027,2042,2134,2146,2160,2166,2171,2199,2202,2207,2213,2220,2228,2237,2242,2252,2255,2258,2262,2268,2273,2304,2306,2316,2325,2376,2384,2399,2443,2449,2469,2474,2518,2520,2523,2566,2587,2618 'event_data.get':1582,1672 'eventdata':1327 'eventdata.customdata':1408 'eventdata.source':1349 'eventid':1329,1344,1801,1881,1959,2010,2019,2020,2029,2152 'eventnam':1326,1336 'everi':1218 'evt':1502,1737,1960,1971 'exact':2175,2559 'exampl':18,90,154,925,1289,1451,1506,1689 'example.com':1460,1698 'example.com/checkout/thank-you'',':1459,1697 'excel':1205 'except':1053 'expect':2588 'expert':107 'expiri':294 'exponenti':2350 'extens':1926 'extern':1038,1040,1054,1240,1380,1639,1644,1731 'externalid':1499 'extract':2096 'f':1037,1555 'facebook':1911,2049,2070 'fact':2397 'fail':1988 'failur':302,2130 'fair':1195 'fb':922,923 'fb.1':2059,2079,2087,2124 'fb.1.1612345678901.1234567890':1496,1730 'fb.1.1612345678901.abcdefghijkl':1498 'fbc':227,1251,1399,1497,1661,1663,1868,1869,2046,2069,2108,2110,2113 'fbclid':2081,2090,2115,2121,2123,2126 'fbevents.js':220 'fbp':226,1249,1392,1495,1658,1660,1729,1865,1866,2044,2048,2103,2105 'fbq':2012,2158 'feed':253 'fetch':1424 'field':1813,1980 'file':2511 'find':138 'findloc':775 'fire':221,335,716,1957,2004 'first':315,975,1610,1717,2056 'first-parti':314 'firstnam':1487 'fix':2132,2289 'float':346,419,468,514,543,573,622,650,687,765,817,858 'fn':977,1232,1362,1606 'focus':165 'form':528,559 'format':958,1030,2058,2078 'forward':1248,1809,2037 'frequenc':2277 'full':54,61,1206,2555,2623 'function':1089,1307,1324,2119 'ge':1032 'gen':2472 'gender':1031 'generat':2001,2140 'good':1200 'graph.facebook.com':1271,1412,1557 'graph.facebook.com/v21.0/':1270,1556 'graph.facebook.com/v21.0/$':1411 'group':375,442,493,596,673,752 'gtm':92,96,261,1740,1748,1856 'guid':2607 'hash':15,44,271,960,1044,1049,1060,1067,1110,1131,1139,1143,1148,1262,1308,1357,1360,1363,1366,1369,1372,1375,1378,1382,1398,1405,1524,1597,1602,1607,1613,1619,1624,1629,1635,1641,1842,1846,2068,2094 'hashformeta':1090 'hashlib':1108,1509 'hashlib.sha256':1120,1533 'header':1428 'help':112 'hex':1079,1104,1322 'hexdigest':1128,1541 'higher':948 'highest':2451,2476 'hour':2183,2407,2553 'html':2510 'https':234,256 'id':231,249,269,278,361,365,381,407,412,430,434,446,479,483,497,584,588,633,637,661,665,698,702,740,744,1039,1041,1055,1241,1274,1297,1300,1343,1381,1415,1468,1477,1514,1517,1552,1560,1573,1575,1640,1645,1707,1732,1736,1771,1795,1820,1823,1874,1876,1948,1970,2003,2028,2043,2051,2072,2135,2147,2153,2161,2167 'identifi':1229 'impact':1186,1222,2525 'implement':17,45,89,114,179,1263 'import':1107,1508,2586 'improv':77,121,951,1211,2279 'includ':1145,1231,2165,2337 'incom':1783 'indic':1172 'info':938,2342 'inform':14,43,733,935 'initi':720 'initiatecheckout':462,2458 'input':1136,1149 'inspect':190 'instead':1158 'instruct':100 'int':1570 'integ':401,503 'integr':1267,1894,1920 'interact':224,310 'intern':410 'invalid':2291,2300,2324,2353 'io':2386,2531,2591 'ip':1385,1647,1650,1723,1847,1850 'ipaddress':1491 'iso':354,426,475,521,551,580,629,657,694,772,825,865,1017 'issu':120 'item':383,400,405,421,448,499,502,507,689,1481,1664 'itp':292 'javascript':1083,1290,1999,2095,2248 'john':1488,1719 'john@example.com':1484,1714 'json':1682 'json.stringify':1434,1447,2023 'k':1590,1593 'key':178,957,1811,2396 'last':982,1616,1720 'lastnam':1489 'later':2184 'lead':537,546,558,565,927,2471,2479 'least':2339 'letter':904,1000,1016,1034 'limit':2348,2400,2556 'ln':984,1233,1365,1612 'load':2057 'locat':784,792 'loss':291 'lost':330 'lower':1124,1537 'lowercas':903,963,978,985,991,1002,1022,1074,1078 'lowest':2466,2491 'm':1035 'magento':1923 'manag':1286,2203,2263,2373,2521 'map':881,1781,1787 'match':79,123,250,943,949,1163,1176,1197,1202,1246,1797,1878,1977,2259,2269 'math.floor':1339 'matter':281 'max':900 'maxim':2575 'mcp':183 'md5':1157 'measur':53,85,131,2377,2383,2524 'messag':2288 'meta':2,4,22,32,104,218,236,238,258,941,1112,1175,1760,1816,1821,1827,1900,1919,1924,1944,1976,2075,2379,2513,2599 'meta-capi':1 'method':46,679,1264,1426,1896 'metric':2528 'millisecond':2332 'minut':2187 'miss':305,1150,2083,2118,2148,2162,2334 'mistak':1130 'mitig':2571 'model':2428,2560 'mozilla/5.0':1494,1728 'ms':2089 'must':908,914,1056,1796,1877,2318,2327 'name':386,392,451,455,525,531,555,560,598,602,704,708,754,758,781,785,800,829,834,841,869,873,898,918,921,976,983,1335,1546,1565,1567,1611,1617,1718,1721,1780,1831,1833,1950,2025,2172,2177,2305 'nativ':1899,1918 'navigator.sendbeacon':2021 'need':2371 'network':301 'new':1443 'node.js':87,88,1084,1288 'none':1118,1531,1553,1669 'normal':1073,1133,1260 'note':1897 'null':1095,1330,2106,2111,2127 'num':399,501,1480 'number':403,505,905,913,1155 'oauth':2292 'object':897 'offset':2578 'old':2315 'one':1982,1986,2340 'opt':2390,2411,2433,2563,2581 'opt-out':2580 'opted-out':2410,2432,2562 'optim':255,896,953,1207,2565 'option':388,396,402,409,453,459,504,515,520,527,534,544,550,557,564,600,606,623,628,635,641,651,656,663,669,677,688,693,700,706,712,742,748,756,783,791,802,808,831,843,849,871 'order':406,411,1476,1478 'otherwis':169 'out':2582 'overview':63,172 'page':223,391,530,931,1885 'paramet':41,74,341,414,463,509,538,568,610,645,682,730,735,760,776,795,812,836,853,936,939,955,956,1052,1280,1872,2276,2301,2343 'parti':316 'partial':1196,2577 'partner':1893 'pass':1239,2143 'path':323,1987 'pattern':1998 'payload':1332,1435,1562,1683,2169,2225,2250 'payment':678 'per':2272,2401,2569 'per-ev':2271 'permiss':1287,2367,2374 'persist':2062 'ph':967,1225,1359,1601 'phone':722,966,1154,1226,1485,1605,1715,1789,1843,1845,2359 'pii':272 'pixel':195,209,219,241,268,282,318,1066,1273,1296,1299,1414,1513,1516,1559,1770,1799,1819,1822,1880,1935,1956,2005,2054,2137,2150,2205,2267 'plan':833,872 'platform':1895 'plugin':1914 'poor':1189 'popul':1853,1864 'post':266,1269,1427 'potenti':1208 'power':894 'practic':2613 'pre':2530 'pre-io':2529 'precis':145 'predict':819 'prefix':924 'price':384,449,500,930 'priorit':2583 'prioriti':2405,2444,2448,2470,2473 'problem':2131 'procedur':1072 'process':2245 'product':364,372,374,389,397,433,439,441,454,460,482,490,492,593,595,664,670,672,701,707,713,743,749,751,757,1475,1712,2240 'profil':947,1182 'protocol':2381 'provid':144,158,170,204 'punctuat':981,988,994 'purchas':70,72,334,1452,1456,1503,1690,1694,1738,1963,1974,2014,2026,2178,2180,2452,2477 'python':1105,1106,1505,1507 'qualifi':926 'qualiti':80,124,950,1164,1185,2260,2270 'quantiti':382,447,498 'queri':620,787,1279 'question':137 'random':2061 'rank':2403 'rate':2347 'raw':1394,1401,2066,2092 'readi':150 'ready-to-us':149 'real':307,2232,2548 'real-tim':306,2547 'receiv':240,243 'recommend':206,320,363,371,378,420,425,432,438,445,469,474,481,489,496,574,579,586,592,617,729,766,771,818,824,1045,2280,2442,2468,2509 'record':2508 'recov':326 'redund':321 'refer':9,27,30,110,2619 'regener':2295 'registr':516,535 'relev':140,1808 'remov':2235 'report':1942,2527,2545 'req.cookies':2104,2109 'request':1512 'requests.post':1680 'requir':343,416,465,511,540,570,612,647,684,727,737,762,778,797,814,838,855,1048,1050,1087,1293,1915,2303,2436 'reserv':917 'resourc':2598 'respons':1422,1679 'response.json':1441,1450,1688 'response.ok':1437 'response.raise':1684 'result':636,642 'return':1094,1096,1117,1119,1312,1314,1449,1530,1532,1687,2122 'rule':899 'run':1754,1934 'safari':299 'safeti':2499 'schedul':794,2483 'score':1171,1184,2275 'scroll':932 'search':609,614,619,2492 'second':1228,2330 'section':141 'send':229,274,275,1062,1214,1543,1692,1966,2006,2065,2091,2185,2227 'sendev':1325,1455 'sent':2182 'server':94,212,239,257,260,1256,1742,1750,1766,1928,1965,1991,2008,2036,2100,2145 'server-sid':93,211,1741,1749,1927,2099 'servic':809 'set':225,313,1805,2052,2073,2441,2497 'setup':8,26,99,199,2606 'sha':1058,1076,1160 'sha256':1098,1316 'shopifi':1898 'side':95,213,1743,1751,1929,2101 'signal':290 'singl':1033,1220 'skill' 'skill-meta-capi' 'sku':1469,1471,1708 'sms':723 'sourc':1347,1352,1457,1580,1583,1586,1695,1777,1835,1883,2265,2309,2355 'source-cognyai' 'space':996 'specif':160 'ss':97,262,1855 'st':998,1371,1623 'standard':37,332,883,895,919,1905,2176,2420,2617 'start':910 'starttrial':811,2456 'state':997,1627 'statist':2427 'status':532,536,1686 'step':180 'still':1995 'store':2364 'str':1121,1534,1577 'strategi':68,2597 'string':352,370,387,395,408,424,437,452,458,473,488,519,526,533,549,556,563,578,591,599,605,615,616,627,640,655,668,676,692,705,711,747,755,770,782,790,801,807,823,830,842,848,863,870,1043,1080 'strip':1123,1536 'strong':1201 'subject':284 'submitappl':835,2481 'subscrib':852,2454 'subscript':860 'system':1281,2296,2369 'tab':2208 'tag':1763,1812,1814,2514 'target':2596 'technic':29 'temporarili':2345 'test':21,49,2195,2198,2206,2212,2219,2236,2241,2254 'test12345':2216,2257 'throw':1442 'time':308,1338,1510,1569,2233,2283,2307,2317,2326,2549 'time.time':1571 'timestamp':2060,2080,2088,2313 'token':1278,1283,1303,1306,1418,1420,1519,1522,1676,1678,1775,1826,1829,2294,2298 'tolowercas':1102,1320 'tool':184,2200 'topic':161 'topic-agent-skills' 'topic-ai-agents' 'topic-claude-code' 'topic-claude-skills' 'topic-cluade-mcp' 'topic-cursor' 'topic-geo' 'topic-growth-hacking' 'topic-llm' 'topic-marketing' 'topic-mcp' 'topic-seo' 'total':348 'track':119,2013,2159,2393 'transact':338,349 'trend':2281 'trial':820,832 'trigger':1806 'trim':964,979,986,992,1008,1075,1101,1319 'twice':1943 'txt':2507 'type':12,39,342,369,415,436,464,487,510,539,569,590,611,646,667,683,736,746,761,777,793,796,804,813,837,845,854,1431,1474,1711,1815 'undefin':1313 'underreport':2593 'underscor':906 'understand':128 'unix':2329 'unlimit':2567 'unmatch':1192 'updat':1099,1317 'uppercas':1134 'url':1348,1350,1410,1425,1458,1554,1581,1584,1681,1696,1884,1886,2086 'us':1009,1024 'usag':59 'usd':358,1466,1705,2018,2035 'use':108,152,187,885,916,1156,1946,2174,2349,2356,2429,2572 'user':113,134,157,192,215,251,719,946,1181,1282,1354,1389,1500,1549,1588,1653,1656,1726,1733,1785,1837,1840,1844,1857,1860,2297,2310,2335,2370,2388,2413 'user_data.get':1599,1604,1609,1615,1621,1626,1631,1637,1643,1649,1655,1659,1662 'userag':1493 'userdata':1328 'userdata.city':1370 'userdata.country':1379 'userdata.email':1358 'userdata.externalid':1383 'userdata.fbc':1400 'userdata.fbp':1393 'userdata.firstname':1364 'userdata.ipaddress':1387 'userdata.lastname':1367 'userdata.phone':1361 'userdata.state':1373 'userdata.useragent':1391 'userdata.zipcode':1376 'utf':1126,1539 'uuid':1511 'uuid.uuid4':1578 'v':237,1591,1594,1666 'valid':2197 'valu':345,350,418,422,467,471,513,517,542,547,572,576,621,625,649,653,686,690,764,816,821,857,861,1091,1093,1113,1116,1122,1144,1309,1311,1396,1403,1463,1525,1526,1529,1535,1598,1603,1608,1614,1620,1625,1630,1636,1642,1702,1887,1889,2015,2032 'value.tostring':1100,1318 'verif':2438,2494 'verifi':2504 'via':247,1063,1921,2394,2505 'view':2426,2540,2544 'viewcont':567,2467,2489 'vs':210,2138,2419 'websit':1353,1587,1778,1836,2357 'well':1174 'whitespac':965,1146 'window':2194,2536 'within':2186,2320 'woocommerc':1910,1913 'work':1953 'yes':347,353,859,864 'yyyymmdd':1029 'zip':1005,1632 'zp':1007,1374,1628","prices":[{"id":"e655517b-70ec-44b6-8f70-d2a9ad4b5a98","listingId":"96cb2095-f754-497a-a8d7-44aec6dad5df","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"cognyai","category":"claude-code-marketing-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T22:23:39.811Z"}],"sources":[{"listingId":"96cb2095-f754-497a-a8d7-44aec6dad5df","source":"github","sourceId":"cognyai/claude-code-marketing-skills/meta-capi","sourceUrl":"https://github.com/cognyai/claude-code-marketing-skills/tree/main/skills/meta-capi","isPrimary":false,"firstSeenAt":"2026-04-18T22:23:39.811Z","lastSeenAt":"2026-05-01T06:56:27.175Z"}],"details":{"listingId":"96cb2095-f754-497a-a8d7-44aec6dad5df","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"cognyai","slug":"meta-capi","github":{"repo":"cognyai/claude-code-marketing-skills","stars":42,"topics":["agent-skills","ai-agents","claude-code","claude-skills","cluade-mcp","cursor","geo","growth-hacking","llm","marketing","mcp","seo","vibe","windsurf"],"license":null,"html_url":"https://github.com/cognyai/claude-code-marketing-skills","pushed_at":"2026-04-29T13:43:50Z","description":"Marketing skills for Claude Code — SEO audits and implementation, ad analysis, ad optimization. Free skills need no account. $9/mo for live Search Console, Bing & LinkedIn data.","skill_md_sha":"09541341e4d3ee0610f8700ecfceffef86f0893e","skill_md_path":"skills/meta-capi/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/cognyai/claude-code-marketing-skills/tree/main/skills/meta-capi"},"layout":"multi","source":"github","category":"claude-code-marketing-skills","frontmatter":{"name":"meta-capi","description":"Meta Conversions API (CAPI) Setup Reference — architecture, event types, customer information hashing, deduplication, implementation examples, AEM, and testing"},"skills_sh_url":"https://skills.sh/cognyai/claude-code-marketing-skills/meta-capi"},"updatedAt":"2026-05-01T06:56:27.175Z"}}