Outreach

Save an outreach campaign

outreach_save_campaign · Changes data · Markdown

Create or change an outreach campaign: its mailboxes, the emails you write, the audience, a first line per person and when it sends.

Free

This tool costs nothing to call.

An example

Write to the hotels we tagged about renting our guest bikes, two follow-ups, Tuesday to Thursday mornings.

Your agent callsoutreach_save_campaignFree

The example business is Halverson Cycle & Repair, a bike shop with a repair workshop in Portland, Oregon. The reply is the one the tool really gives.

With these arguments
{
  "name": "Guest bikes for Portland hotels",
  "mailbox_ids": [
    4105
  ],
  "steps": [
    {
      "subject": "Guest bikes for {company}",
      "text": "Hi {first_name},\n\n{first_line}\n\nWe rent city bikes to hotels in Portland and service them every week, so your front desk never deals with a flat tire. Guests ride to the waterfront in ten minutes.\n\nCould I bring two bikes by on Thursday so your staff can try them?\n\n{sender_name}\nHalverson Cycle & Repair"
    },
    {
      "subject": "",
      "delay_days": 3,
      "text": "Hi {first_name}, the two trial bikes for {company} are still yours this month. Should I hold a pair for you?\n\n{sender_first_name}"
    }
  ],
  "audience": {
    "tag": "hotel"
  },
  "first_lines": {
    "maya@alderstreethotel.example": "Your new rooftop bar makes the Alder Street Hotel a stop for every visitor downtown.",
    "owen@hawthornehotel.example": "Guests at the Hawthorne Hotel already ask your front desk where to rent bikes."
  },
  "schedule": {
    "days": [
      "tue",
      "wed",
      "thu"
    ],
    "start_hour": 9,
    "end_hour": 12,
    "time_zone": "America/Los_Angeles"
  }
}
What comes back
{
  "campaign": {
    "campaign_id": "020f9c84-26ca-4cea-a857-454746de20f1",
    "name": "Guest bikes for Portland hotels",
    "status": "draft",
    "paused_reason": null,
    "mailboxes": [
      {
        "mailbox_id": 4101,
        "email": "dana@halversoncycle.example"
      }
    ],
    "steps": [
      {
        "subject": "Guest bikes for {company}",
        "text": "Hi {first_name},\n\n{first_line}\n\nWe rent city bikes to hotels in Portland and service them every week, so your front desk never deals with a flat tire. Guests ride to the waterfront in ten minutes.\n\nCould I bring two bikes by on Thursday so your staff can try them?\n\n{sender_name}\nHalverson Cycle & Repair"
      },
      {
        "subject": "",
        "text": "Hi {first_name}, the two trial bikes for {company} are still yours this month. Should I hold a pair for you?\n\n{sender_first_name}",
        "delay_days": 3
      }
    ],
    "audience": {
      "tag": "hotel"
    },
    "schedule": {
      "days": [
        "tue",
        "wed"
      ],
      "start_hour": 9,
      "end_hour": 12,
      "time_zone": "America/Los_Angeles"
    },
    "daily_limit": 30,
    "people": 2,
    "by": "Pip",
    "created_at": "2026-10-14T08:00:00+00:00",
    "started_at": null
  },
  "audience": {
    "people": 2,
    "left_out_counts": {},
    "left_out": []
  },
  "writing": {
    "passed": true,
    "fixes": []
  }
}

Use it when

When the person wants to write to a list of people, after the mailbox is connected.

What it does

Create an outreach campaign, or change one (pass campaign_id): its name, the mailboxes it sends from (they share the load, each within its own daily limit), the emails (a first email and up to four follow-ups, each with delay_days), the audience, a first line for each person, the sending days and hours in a time zone, and its own daily limit. The audience is one of: a prospect search's people with a working email (prospect_search_id), a CRM segment, or everyone with a tag; people who unsubscribed, bounced, said no, replied before or are in another campaign are left out, and the reply says who. You write every email; Conecto writes nothing. Placeholders: {first_name} (the person's first name), {name} (the person's full name), {company} (their company), {first_line} (the first line you wrote for them in first_lines), {sender_name} (the name of the mailbox that sends it), {sender_first_name} (that name's first word). Every step passes Conecto's writing check before a campaign can start, and a refusal names each fix: no em dashes; no stock openers ("I hope this email finds you well", "I'm reaching out") or closers ("Best regards", "Looking forward to hearing from you"); no "not X, but Y" contrasts or slogans; no hype or filler words ("seamless", "game-changer", "I'd love to"); at most 120 words an email and 60 characters a subject; one link and one ask at most; no "Re:" on a first email; no unsubscribe line of your own (Conecto adds one); and every placeholder filled for every person. The reply has the writing check's fixes; show the person outreach_preview, then start it with outreach_start. While it is a draft everything can change; once it started, only its name, mailboxes, schedule and daily limit, while it is paused.

What comes back

campaign (campaign_id, name, status, paused_reason, mailboxes, steps, audience, schedule, daily_limit, people, by, created_at, started_at); audience (people, left_out_counts and left_out: who won't be emailed and why); writing (passed, and fixes: each with step, part, rule, found, fix, and the people it is about). Every reply also carries cost_usd and balance_usd.

Inputs

NameTypeWhat it is
campaign_idstringThe campaign_id outreach_save_campaign answered with. Exactly 36 characters.
namestring1 to 160 characters.
mailbox_idsarray of integersMailboxes from outreach_mailboxes, in the order they take turns. 1 to 50 items.
stepsarray of objects1 to 5 items.
steps[].subjectstringOne line. A follow-up without one goes as "Re:" the first email's subject, in the same thread. Up to 200 characters.
steps[].textRequiredstringPlain text. Conecto adds the unsubscribe line at the end. 1 to 5,000 characters.
steps[].delay_daysintegerA follow-up: days after the step before it, when nobody replied (3 if left out). 1 to 60.
audienceobjectOne of tag, segment or prospect_search_id.
audience.tagstring1 to 60 characters.
audience.segmentstringA saved contact segment, by name or id. 1 to 80 characters.
audience.prospect_search_idstringExactly 36 characters.
first_linesobjectA first line you wrote for each person, by their email: {first_line} in an email.
scheduleobjectWhen emails go: Monday to Friday, 9 to 17, in the account's time zone unless given.
schedule.daysarray1 to 7 items. One of: mon,tue,wed,thu,fri,sat,sun.
schedule.start_hourinteger0 to 23.
schedule.end_hourinteger1 to 24.
schedule.time_zonestring1 to 64 characters.
daily_limitintegerEmails a day for this campaign; its mailboxes' own limits still hold. 1 to 1,000.

The call

Over MCP, call outreach_save_campaign on https://api.conecto.chat/mcp/outreach. Over REST:

Terminal
curl -X POST https://api.conecto.chat/v1/tools/outreach_save_campaign \
  -H "Authorization: Bearer $CONECTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Guest bikes for Portland hotels","mailbox_ids":[4105],"steps":[{"subject":"Guest bikes for {company}","text":"Hi {first_name},\n\n{first_line}\n\nWe rent city bikes to hotels in Portland and service them every week, so your front desk never deals with a flat tire. Guests ride to the waterfront in ten minutes.\n\nCould I bring two bikes by on Thursday so your staff can try them?\n\n{sender_name}\nHalverson Cycle & Repair"},{"subject":"","delay_days":3,"text":"Hi {first_name}, the two trial bikes for {company} are still yours this month. Should I hold a pair for you?\n\n{sender_first_name}"}],"audience":{"tag":"hotel"},"first_lines":{"maya@alderstreethotel.example":"Your new rooftop bar makes the Alder Street Hotel a stop for every visitor downtown.","owen@hawthornehotel.example":"Guests at the Hawthorne Hotel already ask your front desk where to rent bikes."},"schedule":{"days":["tue","wed","thu"],"start_hour":9,"end_hour":12,"time_zone":"America/Los_Angeles"}}'

When it refuses

A refused call costs nothing and says what to do next.

CodeWhenWhat to do
not_found404No campaign, segment or prospect search on this account has that id or name.Use outreach_campaigns, crm_list_segments or prospects_list.
campaign_running409The campaign is sending.Pause it with outreach_pause first.
not_draft409The campaign started, so its emails, audience and first lines are fixed.Save a new campaign to change them.
campaign_ended409The campaign was stopped or has finished.Save a new campaign.

Give this to your agent.

Set up Conecto from https://conecto.chat/SKILL.md