PlatformDocs
MCP server

add_prospect_to_campaign

Add one contact to an existing email campaign so it receives the sequence, like Manual Entry in the app.

View as Markdown

Add contact to campaign · Changes data · Acts outside your account

Add one contact to an existing email campaign so it receives the sequence, like Manual Entry in the app. The first step is scheduled inside the campaign's sending window and then sent to the contact by real email. Confirm with the user before calling. campaignId comes from list_campaigns or create_campaign; the campaign must be active and have at least one step. Each added contact uses 1 from the account's prospecting allowance (remaining.prospectorHardLimit in get_account), not lead credits; it is used even when the contact lands in error-sending, and neither stop_prospect nor remove_prospect_from_campaign gives it back. The address is not verified at this point. Returns scheduled: true and the prospectId, or scheduled: false with a reason: already-in-campaign (HTTP 409, nothing used), campaign-inactive, company-excluded, contact-not-found, error-sending (a prospect row was kept, prospectId returned so you can remove it) or error.

ConnectionAccount URL, team member URL or OAuth

Parameters

ParameterTypeRequiredAcceptsDescription
campaignIdstringYesanyEmail campaign id from list_campaigns or create_campaign.
emailstringYesanyThe contact's email address. Must be a valid address.
domainstringNoanyOptional company domain of the contact, e.g. acme.example. Used for company merge fields and exclusion checks.
firstNamestringNoanyOptional first name, used by {{ first_name }}.
lastNamestringNoanyOptional last name.
positionstringNoanyOptional job title, used by {{ position }}.
phonestringNoanyOptional phone number.
scheduledForstringNoanyOptional ISO 8601 date/time for the first step, e.g. 2026-11-03T09:30:00Z. Omit to send at the next free slot.
emailAccountIdsstring[]NoanyOptional mailbox ids from list_email_accounts to send from. Leave empty and the connected mailboxes with the most remaining daily capacity are used.
validationstring[]Novalid, catch-all, riskyOptional, accepted for compatibility. Contacts are not verified when added to a campaign, so this does not filter anything today. Values: valid, catch-all, risky.
customobjectNoanyOptional object of extra merge fields for this contact, e.g. { "industry": "SaaS" }.

Tool definition

What your assistant receives from tools/list:

{
  "name": "add_prospect_to_campaign",
  "title": "Add contact to campaign",
  "annotations": {
    "title": "Add contact to campaign",
    "readOnlyHint": false,
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": true
  },
  "inputSchema": {
    "type": "object",
    "properties": {
      "campaignId": {
        "type": "string",
        "description": "Email campaign id from list_campaigns or create_campaign."
      },
      "email": {
        "type": "string",
        "description": "The contact's email address. Must be a valid address."
      },
      "domain": {
        "type": "string",
        "description": "Optional company domain of the contact, e.g. acme.example. Used for company merge fields and exclusion checks."
      },
      "firstName": {
        "type": "string",
        "description": "Optional first name, used by {{ first_name }}."
      },
      "lastName": {
        "type": "string",
        "description": "Optional last name."
      },
      "position": {
        "type": "string",
        "description": "Optional job title, used by {{ position }}."
      },
      "phone": {
        "type": "string",
        "description": "Optional phone number."
      },
      "scheduledFor": {
        "type": "string",
        "description": "Optional ISO 8601 date/time for the first step, e.g. 2026-11-03T09:30:00Z. Omit to send at the next free slot."
      },
      "emailAccountIds": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "description": "Optional mailbox ids from list_email_accounts to send from. Leave empty and the connected mailboxes with the most remaining daily capacity are used."
      },
      "validation": {
        "type": "array",
        "items": {
          "type": "string",
          "enum": [
            "valid",
            "catch-all",
            "risky"
          ]
        },
        "description": "Optional, accepted for compatibility. Contacts are not verified when added to a campaign, so this does not filter anything today. Values: valid, catch-all, risky."
      },
      "custom": {
        "type": "object",
        "description": "Optional object of extra merge fields for this contact, e.g. { \"industry\": \"SaaS\" }."
      }
    },
    "required": [
      "campaignId",
      "email"
    ]
  }
}

Used in

On this page