Back to Help Center

Setting up a campaign

A campaign takes a list of prospects and runs your outreach sequence against it. Here is the full path from zero to launched.

1. Create the campaign

Use 'upsert_campaign' with a name and a kind:

  • 'acquisition': invite-based outreach to people you are not connected to yet. Existing connections are filtered out.
  • 'relationship': DM-only outreach to your existing 1st-degree connections.

Point it at a list_id, or pass contacts inline. The campaign slug is derived from the name; pass id to override it. Calling the tool again with campaign_id updates instead of creating.

2. Configure the outreach

Use 'manage_outreach' with action 'setup' to set the mechanics: the list_id, daily_invites (1 to 50), and invite_message (up to 300 characters, supports variables like {first_name}). daily_invites is this campaign's requested limit. Enabled acquisition campaigns using the same LinkedIn sender account use a shared pool whose daily ceiling is the highest daily_invites among them. You can also define steps: warmup actions before the invite (view profile, like a post, endorse a skill) and follow-up messages after.

Setup does not enable the campaign by default. You configure first, launch second.

3. Preview

'preview_campaign_launch' renders sample first-touch messages with variables filled in (default 10, up to 50), plus a list summary, block-list hits, and duplicate hits. Read-only, nothing sends.

4. Launch

'confirm_campaign_launch' flips a ready campaign to enabled. It is idempotent, so re-running does nothing on an already-live, ready campaign. Launch is refused when no list is bound, when a relationship campaign has no message, or when an acquisition campaign's list is more than 90 percent already-connected contacts. Acquisition steps are optional, and an empty invite message intentionally sends a connection request without a note.

Adding leads later

'add_lead' enrolls one contact into a campaign and returns a verdict every time: added, already enrolled, or skipped with the reason. It is safe to call repeatedly. Before enrolling, 'check_lead_status' takes a LinkedIn member ID and shows whether the person is already in lists or campaigns, on the block list, or connected. It is refreshed nightly; pass refresh true for a live recompute.

Monitor the live funnel with 'get_campaign', and pause or resume anytime with 'manage_outreach'. Variant statistics are temporarily unavailable until the send paths apply the configured copy.

Still stuck? Email [email protected] or browse answered questions.