Skip to content
Marketing
Skill

/campaign-ledger

Give every campaign an ID and carry it everywhere — allocate IDs, audit ad/email/UTM naming across Google, Meta, LinkedIn, Bing, TikTok and X, and keep one ledger joining spend → leads → deals → revenue per campaign ID

BOOST
From plugin
claude-code-marketing-skills
10662 skills
Install
$ npx -y skills add cognyai/claude-code-marketing-skills --skill campaign-ledger --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/campaign-ledger

Context preview

The summary Claude sees to decide when to auto-load this skill.

Give every campaign an ID and carry it everywhere — allocate IDs, audit ad/email/UTM naming across Google, Meta, LinkedIn, Bing, TikTok and X, and keep one ledger joining spend → leads → deals → revenue per campaign ID

SKILL.md

campaign-ledger.SKILL.md
name: campaign-ledger
description: Give every campaign an ID and carry it everywhere — allocate IDs, audit ad/email/UTM naming across Google, Meta, LinkedIn, Bing, TikTok and X, and keep one ledger joining spend → leads → deals → revenue per campaign ID
version: "1.1.3"
author: Cogny AI
requires: cogny-mcp
platforms: [google-ads, bing-ads, apple-search-ads, openai-ads, meta-ads, linkedin-ads, tiktok-ads, x-ads, reddit-ads, snapchat-ads, bidtheatre, ga4, plausible, klaviyo, mailchimp, rule, get-a-newsletter, brevo, mailerlite, hubspot, pipedrive, upsales, fibbler]
user-invocable: true
argument-hint: "[init|new <name>|audit|sync|show <ID>]"
allowed-tools:
  - mcp__cogny__list_integrations
  - mcp__cogny__refresh_mcp_discovery
  - mcp__cogny__read_context_node
  - mcp__cogny__write_context_node
  - mcp__cogny__create_ticket
  - mcp__cogny__create_finding
  - mcp__cogny__list_datasets
  - mcp__cogny__execute_bigquery_sql
  - mcp__cogny__get_script_sdk_reference
  - mcp__cogny__mcp__Google_Ads__tool_list_accessible_accounts
  - mcp__cogny__mcp__Google_Ads__tool_execute_gaql
  - mcp__cogny__mcp__Meta_Ads__tool_list_ad_accounts
  - mcp__cogny__mcp__Meta_Ads__tool_get_campaigns
  - mcp__cogny__mcp__Meta_Ads__tool_get_ads
  - mcp__cogny__mcp__Meta_Ads__tool_get_insights
  - mcp__cogny__mcp__LinkedIn_Ads__tool_list_ad_accounts
  - mcp__cogny__mcp__LinkedIn_Ads__tool_get_campaigns
  - mcp__cogny__mcp__LinkedIn_Ads__tool_get_creatives
  - mcp__cogny__mcp__LinkedIn_Ads__tool_get_analytics
  - mcp__cogny__mcp__Bing_Ads__tool_list_accounts
  - mcp__cogny__mcp__Bing_Ads__tool_get_campaigns
  - mcp__cogny__mcp__Bing_Ads__tool_get_report
  - mcp__cogny__mcp__TikTok_Ads__tool_list_advertisers
  - mcp__cogny__mcp__TikTok_Ads__tool_get_campaigns
  - mcp__cogny__mcp__TikTok_Ads__tool_get_ads
  - mcp__cogny__mcp__TikTok_Ads__tool_get_insights
  - mcp__cogny__mcp__X_Ads__tool_list_ad_accounts
  - mcp__cogny__mcp__X_Ads__tool_get_campaigns
  - mcp__cogny__mcp__X_Ads__tool_get_line_items
  - mcp__cogny__mcp__X_Ads__tool_get_promoted_tweets
  - mcp__cogny__mcp__X_Ads__tool_get_tweets
  - mcp__cogny__mcp__X_Ads__tool_get_cards
  - mcp__cogny__mcp__X_Ads__tool_get_analytics
  - mcp__cogny__mcp__Reddit_Ads__tool_list_ad_accounts
  - mcp__cogny__mcp__Reddit_Ads__tool_get_campaigns
  - mcp__cogny__mcp__Reddit_Ads__tool_get_ad_groups
  - mcp__cogny__mcp__Reddit_Ads__tool_get_ads
  - mcp__cogny__mcp__Reddit_Ads__tool_get_reporting
  - mcp__cogny__mcp__Snapchat_Ads__tool_list_organizations
  - mcp__cogny__mcp__Snapchat_Ads__tool_list_ad_accounts
  - mcp__cogny__mcp__Snapchat_Ads__tool_get_campaigns
  - mcp__cogny__mcp__Snapchat_Ads__tool_get_ad_squads
  - mcp__cogny__mcp__Snapchat_Ads__tool_get_ads
  - mcp__cogny__mcp__Snapchat_Ads__tool_get_stats
  - mcp__cogny__mcp__Apple_Search_Ads__tool_list_acls
  - mcp__cogny__mcp__Apple_Search_Ads__tool_get_campaigns
  - mcp__cogny__mcp__Apple_Search_Ads__tool_get_ad_groups
  - mcp__cogny__mcp__Apple_Search_Ads__tool_get_campaign_report
  - mcp__cogny__mcp__Apple_Search_Ads__tool_get_account_spend
  - mcp__cogny__mcp__OpenAI_Ads__tool_get_ad_account
  - mcp__cogny__mcp__OpenAI_Ads__tool_get_campaigns
  - mcp__cogny__mcp__OpenAI_Ads__tool_get_ad_groups
  - mcp__cogny__mcp__OpenAI_Ads__tool_get_ads
  - mcp__cogny__mcp__OpenAI_Ads__tool_get_insights
  - mcp__cogny__mcp__Bidtheatre__list_advertisers
  - mcp__cogny__mcp__Bidtheatre__list_campaigns
  - mcp__cogny__mcp__Bidtheatre__get_campaign
  - mcp__cogny__mcp__Bidtheatre__get_report
  - mcp__cogny__mcp__Mailchimp__tool_list_campaigns
  - mcp__cogny__mcp__Get_a_Newsletter__tool_list_sent
  - mcp__cogny__mcp__Klaviyo__list_campaigns
  - mcp__cogny__mcp__Rule__tool_list_campaigns
  - mcp__cogny__mcp__Brevo__list_email_campaigns
  - mcp__cogny__mcp__MailerLite__list_campaigns
  - mcp__cogny__mcp__Plausible__breakdown
  - mcp__cogny__mcp__HubSpot__search_crm_objects
  - mcp__cogny__mcp__HubSpot__get_crm_objects
  - mcp__cogny__mcp__HubSpot__get_properties
  - mcp__cogny__mcp__Pipedrive__list_deals
  - mcp__cogny__mcp__Pipedrive__get_deal
  - mcp__cogny__mcp__Pipedrive__list_deal_fields
  - mcp__cogny__mcp__Upsales__list_orders
  - mcp__cogny__mcp__Upsales__list_leads
  - mcp__cogny__mcp__Upsales__list_campaigns
  - mcp__cogny__mcp__Upsales__get_metadata
  - mcp__cogny__mcp__app-fibbler-co__get_cross_channel_performance
  - mcp__cogny__mcp__app-fibbler-co__get_deal_campaign_breakdown
  - mcp__cogny__mcp__Google_Analytics_4__tool_list_account_summaries
  - mcp__cogny__mcp__Google_Analytics_4__tool_run_report

Campaign Ledger

The unglamorous part, and the most valuable thing in the whole setup. Most companies can tell you clicks by campaign and revenue by customer, and very few can connect the two. Give every campaign an ID, put it in every name, and keep one table: **ID, spend, leads, qualified calls, deals, revenue, churn.** Then agents can answer the question that matters: *which marketing brought in customers who paid and stayed?*

**Requires:** Cogny ($9/mo). Works with whichever ad platforms are connected.

Usage

  • `/campaign-ledger init` — choose a prefix, audit current naming, create the ledger
  • `/campaign-ledger new "dinner angle"` — allocate the next ID and create its campaign folder
  • `/campaign-ledger audit` — find assets that break the naming convention
  • `/campaign-ledger sync` — refresh spend + outcomes per ID (daily)
  • `/campaign-ledger show BK014` — one campaign, end to end

The convention

Campaign ID   <PREFIX><NNN>                     BK014
Ad name       <ID>_<angle>_<format>_v<n>        BK014_dinner-angle_ugc_v2
Ad set/group  <ID>_<audience>                   BK014_shopify-1to10m
Platform camp <ID>_<objective>_<short-name>     BK014_leads_profit-review
UTM           utm_campaign=<id-lowercase>_<slug>&utm_content=<angle>_<format>_v<n>
Email/news    <ID> — <subject idea>
CRM deal      note or property "campaign_id: BK014"

Angle and format are in the name so that a month later "the dinner angle b

Read more
Ships withclaude-code-marketing-skills

AI marketing skills for Claude Code, Cursor, Windsurf, and other AI coding tools. Audit SEO, analyze ads, research competitors, qualify leads — all from your terminal. Free skills need no account. Premium skills connect your real data for $9/mo.

Get the whole plugin
Stats
107
Stars
14
Forks
Active
Maintenance
HTML
Language
1d ago
Last commit
6mo ago
Created

Repo: cognyai/claude-code-marketing-skills