HappierleadsDocs
MCP server

create_linkedin_campaign

Creates a LinkedIn campaign in draft for a website; start it with activate_linkedin_campaign.

Create a LinkedIn campaign · Changes data

Creates a LinkedIn campaign in draft for a website; start it with activate_linkedin_campaign. A campaign sends one connection request per person through the browser extension. With audience.source sales_navigator it fills itself every day from a Sales Navigator lead search, and with inmail.enabled the first new people each day get a Sales Navigator InMail instead of a request. People already in any campaign of the website and existing 1st-degree connections are skipped. Returns campaign with its _id. Free. Not available with a website-scoped key.

ConnectionAccount-owner URL or OAuth (not a team member URL)

Parameters

ParameterTypeRequiredAcceptsDescription
websiteIdstringYesanyWebsite ID from list_websites.
namestringYes1–200 charactersCampaign name, 1-200 characters.
noteTemplatestringNomax 4000 charactersThe note sent with each connection request, at most 300 characters once rendered. Supports [[option a|option b]] variations and {{ firstName }}, {{ lastName }}, {{ company }}, {{ title }} (a fallback after a bar: {{ firstName | there }}). Empty sends the request without a note.
sendNoteIfPossiblebooleanNodefault truetrue (default) attaches the note when LinkedIn allows it; false always sends a plain request.
dailyCampaignCapintegerNomin 0 · default 0Most connection requests this campaign sends per day across all accounts; 0 (default) leaves pacing to each account's own daily limit.
assignedAccountIdsstring[]NoanyLinkedIn account ids (list_linkedin_accounts) that may send for this campaign; empty or omitted uses every connected account.
audienceobjectNoanyWhere the people come from. Omit for a campaign you fill yourself.
audience.sourcestringNodefault "manual" · manual, sales_navigatormanual (default): people are added by you or an automation. sales_navigator: every day the browser extension runs the Sales Navigator search in salesNavSearchUrl and adds the next people it finds.
audience.salesNavSearchUrlstringNomax 4000 characters · uriA Sales Navigator lead search, copied from the browser: https://www.linkedin.com/sales/search/people?… Required with source sales_navigator. Changing it starts again from the first result.
audience.dailyRefillintegerNo1–100 · default 25How many people the campaign keeps waiting each day, 1-100 (default 25). The search is run at most once every 20 hours, only when fewer than this many are waiting.
audience.aiFilterobjectNoanyOptional AI check of each day's new people before they are added.
audience.aiFilter.enabledbooleanNodefault falsetrue keeps only the people the AI judges to match prompt; false (default) adds everyone the search finds. If the AI check fails, everyone is added.
audience.aiFilter.promptstringNomax 1000 charactersWho to keep, in plain words, at most 1000 characters, e.g. "Founders or heads of marketing at B2B software companies; no agencies". Judged from each person's name, title, company, headline and summary. Required when enabled is true.
inmailobjectNoanySales Navigator InMail as the first message for the first few new people each day; everyone else gets a connection request. Needs a Sales Navigator seat on the sending LinkedIn account.
inmail.enabledbooleanNodefault falsetrue sends InMails; false (default) sends connection requests only.
inmail.subjectTemplatestringNomax 200 charactersInMail subject, at most 200 characters, same variations and {{ variables }} as noteTemplate.
inmail.bodyTemplatestringNomax 1900 charactersInMail message, at most 1900 characters, same variations and {{ variables }} as noteTemplate. Required when enabled is true.
inmail.dailyCapintegerNo0–25 · default 3Most InMails per sending account per day, 0-25 (default 3). People with an Open Profile get the InMails first: they cost no credit. Other InMails are also limited by the account's remaining InMail credits spread evenly until they renew (2 a day while the credits are not known yet). Existing 1st-degree connections never get an InMail.

Tool definition

What your assistant receives from tools/list:

{
  "name": "create_linkedin_campaign",
  "title": "Create a LinkedIn campaign",
  "annotations": {
    "title": "Create a LinkedIn campaign",
    "readOnlyHint": false,
    "destructiveHint": false,
    "idempotentHint": false,
    "openWorldHint": false
  },
  "inputSchema": {
    "type": "object",
    "properties": {
      "websiteId": {
        "type": "string",
        "pattern": "^[0-9a-fA-F]{24}$",
        "description": "Website ID from list_websites."
      },
      "name": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200,
        "description": "Campaign name, 1-200 characters."
      },
      "noteTemplate": {
        "type": "string",
        "maxLength": 4000,
        "description": "The note sent with each connection request, at most 300 characters once rendered. Supports [[option a|option b]] variations and {{ firstName }}, {{ lastName }}, {{ company }}, {{ title }} (a fallback after a bar: {{ firstName | there }}). Empty sends the request without a note."
      },
      "sendNoteIfPossible": {
        "type": "boolean",
        "default": true,
        "description": "true (default) attaches the note when LinkedIn allows it; false always sends a plain request."
      },
      "dailyCampaignCap": {
        "type": "integer",
        "minimum": 0,
        "default": 0,
        "description": "Most connection requests this campaign sends per day across all accounts; 0 (default) leaves pacing to each account's own daily limit."
      },
      "assignedAccountIds": {
        "type": "array",
        "items": {
          "type": "string",
          "pattern": "^[0-9a-fA-F]{24}$"
        },
        "description": "LinkedIn account ids (list_linkedin_accounts) that may send for this campaign; empty or omitted uses every connected account."
      },
      "audience": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "manual",
              "sales_navigator"
            ],
            "default": "manual",
            "description": "manual (default): people are added by you or an automation. sales_navigator: every day the browser extension runs the Sales Navigator search in salesNavSearchUrl and adds the next people it finds."
          },
          "salesNavSearchUrl": {
            "type": "string",
            "format": "uri",
            "pattern": "^https://www\\.linkedin\\.com/sales/search/people",
            "maxLength": 4000,
            "description": "A Sales Navigator lead search, copied from the browser: https://www.linkedin.com/sales/search/people?… Required with source sales_navigator. Changing it starts again from the first result."
          },
          "dailyRefill": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25,
            "description": "How many people the campaign keeps waiting each day, 1-100 (default 25). The search is run at most once every 20 hours, only when fewer than this many are waiting."
          },
          "aiFilter": {
            "type": "object",
            "properties": {
              "enabled": {
                "type": "boolean",
                "default": false,
                "description": "true keeps only the people the AI judges to match prompt; false (default) adds everyone the search finds. If the AI check fails, everyone is added."
              },
              "prompt": {
                "type": "string",
                "maxLength": 1000,
                "description": "Who to keep, in plain words, at most 1000 characters, e.g. \"Founders or heads of marketing at B2B software companies; no agencies\". Judged from each person's name, title, company, headline and summary. Required when enabled is true."
              }
            },
            "description": "Optional AI check of each day's new people before they are added."
          }
        },
        "description": "Where the people come from. Omit for a campaign you fill yourself."
      },
      "inmail": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "default": false,
            "description": "true sends InMails; false (default) sends connection requests only."
          },
          "subjectTemplate": {
            "type": "string",
            "maxLength": 200,
            "description": "InMail subject, at most 200 characters, same variations and {{ variables }} as noteTemplate."
          },
          "bodyTemplate": {
            "type": "string",
            "maxLength": 1900,
            "description": "InMail message, at most 1900 characters, same variations and {{ variables }} as noteTemplate. Required when enabled is true."
          },
          "dailyCap": {
            "type": "integer",
            "minimum": 0,
            "maximum": 25,
            "default": 3,
            "description": "Most InMails per sending account per day, 0-25 (default 3). People with an Open Profile get the InMails first: they cost no credit. Other InMails are also limited by the account's remaining InMail credits spread evenly until they renew (2 a day while the credits are not known yet). Existing 1st-degree connections never get an InMail."
          }
        },
        "description": "Sales Navigator InMail as the first message for the first few new people each day; everyone else gets a connection request. Needs a Sales Navigator seat on the sending LinkedIn account."
      }
    },
    "required": [
      "websiteId",
      "name"
    ]
  }
}

On this page