--- name: linkedin-lead-gen-launcher description: "Launch a LinkedIn Lead Gen Forms campaign with firmographic targeting sized before build and cost expectations set from real history. Use for B2B demand gen against a known ICP." license: MIT compatibility: "Works with any Agent-Skills-compatible AI (Claude, ChatGPT, Cursor, Codex, and more). Ad-account actions run through Adspirer." metadata: author: "Adspirer" version: "1.0.0" adspirer_category: "campaign-launch" adspirer_source: "https://www.adspirer.com/skills/linkedin-lead-gen-launcher" adspirer_trigger: "launch a LinkedIn lead gen form campaign" adspirer_connection_url: "https://adspirer.ai/sign-up" adspirer_primary_keyword: "linkedin lead gen forms" adspirer_secondary_keywords: "linkedin lead generation ads, linkedin ads b2b" adspirer_launch_wave: "2" adspirer_kind: "skill" adspirer_level: "operator" adspirer_platforms: "linkedin" adspirer_supported_clients: "claude,claude-code,claude-cowork,chatgpt,codex,cursor,gemini,windsurf" adspirer_summary: "Size the firmographic audience before building, set honest cost expectations, and launch a lead form campaign paused." adspirer_connections_required: "adspirer" adspirer_connections_optional: "hubspot" --- # LinkedIn Lead Gen Launcher ## Use this when A webinar or gated report is ready, sales want pipeline from named job titles at named company sizes, and someone has budgeted for LinkedIn without checking what a lead there actually costs. The last B2B campaign ran on a job-title list assembled from a spreadsheet, reached almost nobody, and produced leads at a cost that ended the experiment early. Use this skill to launch it properly. It settles: - how many people the targeting actually reaches before anything is built; - whether the audience is defined in a way LinkedIn can match reliably; - what a lead is likely to cost, set from real history rather than hope; - exactly which fields the form asks for, since every extra field costs completions; and - where the leads go once they arrive, before they start arriving. This is for B2B demand generation against a known ideal customer profile. It is not for brand awareness or thought-leadership distribution, which are measured differently and should not be judged on cost per lead. ## What you need - Adspirer connected to the LinkedIn ad account, with an active billing method. LinkedIn will not let a campaign go live without one, and finding that out at launch wastes a day. - The Insight Tag installed site-wide, if you want retargeting audiences or website conversions alongside the native form. - An ICP defined firmographically: function and seniority, company size, industry or a named account list, and geography. Function and seniority combinations generally match more reliably than exact job-title lists, because title conventions vary enormously between companies. - The offer and the exact fields the form should collect. Every additional field reduces completion, so this is a deliberate trade rather than a default. - Budget, and a target cost per lead if one exists from previous campaigns. Where none exists, expectations get set from the account's own history rather than invented. - Optional HubSpot access for native lead sync. Without it the campaign still runs and leads are exported manually, which is worth knowing before someone assumes automation exists. ## Procedure **Connect Adspirer before any live ad-account step.** Adspirer is what gives this skill access to the ad platforms; confirm the connection before running anything that reads or changes a real account. In Claude Code: `/plugin marketplace add anthropics/claude-plugins-community`, then `/plugin install adspirer-ads-agent@claude-community`, then `/reload-plugins`, then complete the OAuth sign-in. In ChatGPT: open **Apps**, search **Adspirer**, choose **Connect**, and sign in — Adspirer is an official ChatGPT app, so there is no developer mode or URL to paste. In claude.ai or Claude Desktop: Settings → Connectors → Add custom connector → `https://mcp.adspirer.com/mcp`. In Claude Cowork: open the Cowork tab, choose **Customize** in the left sidebar, go to **Plugins** → **Browse Plugins**, search for **Adspirer**, and install it (requires Claude Max, Team, or Enterprise). Any other client: https://www.adspirer.com/docs/ai-clients. Sign-in link for the user: https://adspirer.ai/sign-up. Do not proceed with live ad-account steps until the connection is confirmed. 1. **Size the audience before building anything on it.** Translate the ICP into targeting and read the resulting audience size from the account. This is the step that saves the campaign: an audience too small will barely deliver at any budget, and an audience assembled from exact job titles usually turns out far smaller than expected. Where it is too narrow, propose the function-and-seniority equivalent and show what it does to reach. Confirm billing is active while you are in there. 2. **Set the cost expectation honestly, before anyone commits.** Pull whatever history the account holds for comparable campaigns and state the likely cost per lead range from it. Where there is no history, say that plainly rather than producing a number — LinkedIn costs materially more per lead than most channels, and a team discovering that in week two usually cancels a campaign that was performing normally. 3. **Design the form around completion, not around wishes.** Confirm each field earns its place, and say what each additional one likely costs in completions. Where sales insist on a field that will suppress volume, record that as a stated trade rather than a silent one. Confirm the offer on the form matches the offer in the ad, since a mismatch here shows up as high clicks and no submissions. 4. **Decide where leads land before they arrive.** Confirm the destination for submitted leads. Where HubSpot is connected, wire native sync so leads flow automatically; where it is not, state clearly that leads will need manual export and who is responsible for doing it. A campaign generating leads nobody collects for a week is a common and entirely avoidable failure. 5. **Build paused, verify, and hand over the launch.** Assemble the campaign, targeting, form, and budget with nothing active. Re-read what LinkedIn saved and run the fixed checks against it. Present the audience size, the cost expectation, the form fields, and the lead destination together, and enable only on an explicit go. ## Fixed checks - Read the actual audience size from the account after applying targeting, and report it before any budget conversation. - Confirm an active billing method exists on the account before proposing a launch date. - Confirm the campaign is paused before approval is requested, read back from the live account. - Confirm the saved budget matches the approved figure in the account's own currency. - Confirm every form field configured matches what was agreed, since fields silently reduce completion. - Confirm the offer wording on the form matches the ad's promise. - State whether lead delivery is automated or manual, rather than leaving it assumed. - Where cost expectations are given, state the account history and window they came from, or state plainly that none exists. ## Stop conditions - **Success:** the campaign is built, verified, approved, and enabled with lead delivery confirmed. - **Built and parked:** everything is assembled and verified paused, and the user wants to review first. - **Blocked — audience:** the ICP resolves to an audience too small to deliver, and no broader definition is acceptable. - **Blocked — billing:** no active billing method exists on the ad account. - **Blocked — access:** the connection lacks campaign-creation access, or the account is restricted. - **Needs approval:** the build is complete and verified, waiting on an explicit go. - **Needs a handoff:** Insight Tag installation, CRM configuration, or offer assets belong to someone else. ## Approval boundaries Building, sizing, and presenting the campaign involves no spend — it is created paused and stays that way until you say otherwise. Enabling is the single moment spend begins and follows an explicit approval given after the audience size and cost expectation have been seen. This skill cannot install the Insight Tag, configure a CRM, create the gated asset being offered, or resolve billing problems; each is named with its owner. Cost expectations are drawn from the account's own history or declared unavailable — never invented. Budgets are never raised beyond what was stated. ## What you get A LinkedIn lead generation campaign — live if approved, paused if not — built on an audience whose real size was checked before anyone committed budget, which is the failure that quietly ends most first attempts here. Cost per lead expectations are set from the account's own history, or declared unavailable rather than guessed, so the team is not surprised by LinkedIn's pricing in week two and cancelling a campaign that was working normally. The form is designed as a deliberate trade between fields and completions, with any field sales insisted on recorded as a stated cost rather than a silent one. Lead delivery is settled before launch — automated where the CRM is connected, and explicitly assigned to a person where it is not, so submitted leads do not sit uncollected. Where the targeting, the billing, or the tag turned out to be the blocker, you get a handoff naming what to fix and who owns it.