adwarp

Start with 1 prompt.

Paste it into Claude Code, Codex or Cursor. Your agent installs Adwarp, walks you through your LinkedIn app and checks the connection.

setup prompt
Set up Adwarp for me. It's the open-source ad agent for LinkedIn Ads and Google Ads: https://github.com/adwarp-dev/adwarp

1. Check that Node.js 20 or newer is installed.
2. Walk me through creating my own LinkedIn developer app with the Advertising API product: https://github.com/adwarp-dev/adwarp/blob/main/docs/linkedin-app.md
3. Save the app's client ID and secret to ~/.adwarp/config.json as clientId and clientSecret.
4. Run "npx -y adwarp auth login" and wait while I approve access in my browser.
5. Add Adwarp to the AI client I'm using right now as an MCP server that runs "npx -y adwarp mcp". In Claude Code that's: claude mcp add adwarp -- npx -y adwarp mcp
6. Check the connection by listing my ad accounts, then save the one I pick as defaultAccountId in ~/.adwarp/config.json.

Don't create or change anything in my ad accounts during setup. LinkedIn campaigns start as drafts, so nothing spends until I turn it on.
adwarp
GitHub

Start with 1 prompt.

Paste it into Claude Code, Codex or Cursor. Your agent installs Adwarp, walks you through your LinkedIn app and checks the connection.

setup prompt
Set up Adwarp for me. It's the open-source ad agent for LinkedIn Ads and Google Ads: https://github.com/adwarp-dev/adwarp

1. Check that Node.js 20 or newer is installed.
2. Walk me through creating my own LinkedIn developer app with the Advertising API product: https://github.com/adwarp-dev/adwarp/blob/main/docs/linkedin-app.md
3. Save the app's client ID and secret to ~/.adwarp/config.json as clientId and clientSecret.
4. Run "npx -y adwarp auth login" and wait while I approve access in my browser.
5. Add Adwarp to the AI client I'm using right now as an MCP server that runs "npx -y adwarp mcp". In Claude Code that's: claude mcp add adwarp -- npx -y adwarp mcp
6. Check the connection by listing my ad accounts, then save the one I pick as defaultAccountId in ~/.adwarp/config.json.

Don't create or change anything in my ad accounts during setup. LinkedIn campaigns start as drafts, so nothing spends until I turn it on.

Run LinkedIn retargeting from your terminal.

Adwarp is an open-source MCP server and CLI that points your LinkedIn campaigns at the website, video and engagement audiences you already have. Ask once to swap in fresh creative or keep converted accounts out, and new ads land as drafts.

$ claude mcp add adwarp -- npx -y adwarp mcp

Read the docs

claude ~ website visitors

$ claude

> Add our website visitors to the retargeting ad group.

adwarp.search_targeting "website visitors": 1 match

adwarp.update_campaign + website visitors, dry run: preview

adwarp.update_campaign + website visitors: updated

Website visitors added. Your standing exclusions stay in place.

01What you can ask

What you can ask. Real requests, answered from your terminal.

claude ~ creative refresh

$ claude

> Swap fresh creative into the retargeting campaign.

adwarp.performance_trend retargeting ads, weekly: fatigue

adwarp.create_image_ad new image and copy, same landing page: DRAFT

New ad drafted beside the tired ones. Switch it on and pause the old ones?

02How it works

How it works.

  1. Find your audiences

    Search the website, video and engagement audiences you built in Campaign Manager by name.

  2. Target or exclude

    Add them to an ad group's targeting, or keep converted accounts out, with a preview first.

  3. Refresh the creative

    Draft new ads beside the tired ones, and switch over when you're ready.

03Results

Why it gets better results.

  • Fresh creative

    Swapping creative is 1 ask, so it happens before the same people tire of the same ad.

  • No spend on converts

    Exclusions keep budget off accounts that already converted.

  • Audiences on time

    A scheduled job adds a new audience on the day it's ready, without anyone remembering to.

04FAQ

Questions, answered. From setup to the details.

Ask on GitHub
Do I need the Insight Tag?

For website visitors, yes. LinkedIn builds that audience from the Insight Tag on your site. Video, lead form, company page and event audiences don't need it.

How big does a retargeting audience need to be?

About 300 members, or LinkedIn won't serve it. Check the size in Campaign Manager, since estimates for retargeting audiences can read 0.

Can I exclude people who already converted?

Yes. Upload your customers as a matched audience, or build one from Salesforce, and exclude it from the retargeting ad group. Your standing exclusions stay in place whenever Adwarp changes targeting.

Which retargeting audiences can I use?

The 5 kinds LinkedIn offers. You build them in Campaign Manager, then target or exclude them from your terminal.

Which retargeting audiences can I use?
AudienceWho is in it
Website visitorsPeople who visited your site, tracked by the Insight Tag
Video viewersPeople who watched your video ads
Lead form openersPeople who opened your lead gen form
Company page visitorsPeople who visited your LinkedIn Page
Event attendeesPeople who signed up for your LinkedIn event
Which tools and commands does it use?

6 MCP tools and 3 CLI commands, with what each one does.

Which tools and commands does it use?
ToolWhat it does
search_targetingFind your retargeting audiences by name
list_facet_entitiesBrowse the values of a targeting facet
update_campaignTarget or exclude an audience, with a dry run first
create_image_adDraft fresh creative for the same ad group
update_adPause the tired ads once the new ones are on
performance_trendSpot tired creative in the weekly trend

CLI

  • npx adwarp campaigns get <campaignId>
  • npx adwarp campaigns update <campaignId> --targeting '<json>'
  • npx adwarp report trend campaign <campaignId> -b weekly
What are the limits?

3 things to know before you start.

  • You build the retargeting audiences themselves in Campaign Manager.
  • Each needs about 300 members before LinkedIn serves it.
  • Audience estimates can read 0 for retargeting audiences, so check their real size in Campaign Manager.