MCP

campaign/post

Tool: create

Create a new campaign in Draft status.

Creates the campaign record only. No sequence is created automatically — but a sequence (campaign/post_sequences_by_id) is optional, needed only if you want followups. A sequence-less, one-email campaign starts and sends fine (campaign/start_by_id with sequenceCount: 0): the first email is this campaign's own subject/body (below) — sequence/post_followups_by_id only adds later touches on top of that first send. Returns the full campaign object on 201.

Template fields (subject, body) take personalization variables such as {{FIRST_NAME}}, but only the names in a closed list — a variable is not the upper-cased field name, so custom1 is {{CUSTOM_1}} and {{CUSTOM1}} is invalid. Full vocabulary: personalization-variables. subject and body also accept spintax ({|Hi|Hello|}) to vary the copy per recipient — see spintax, which also explains why a literal { or } cannot be written directly. Nothing is checked here; every name is validated at campaign/start_by_id, which 422s and names each bad one.

Set fromEmails to a connected sender. It defaults to the account's login email, which is usually not a valid sender — the campaign will start but never send. Use an address returned by sender/get. End-to-end flow: sending-a-campaign.

Conditional — shown while this account's documentation includes the Outreach Playbook

This call is the last step of a chain of decisions — who is on the list, what you are offering, and only then the copy. Campaign planning workflow puts the seven steps in order and makes the case for launching to 50-100 contacts first — a batch that size tests whether the machinery works, not the copy. For the first email's subject/body, Offer design explains why outreach most often fails on the offer rather than the wording, with four tests for whether yours is real.

Arguments

name type req notes
(none)

Body

field type req constraints description
name string ≤256 chars Campaign display name
description string ≤512 chars Optional description
folderId integer ≥1 Folder to organize campaigns
fromEmails string Comma-separated sender email addresses, e.g. "a@x.com,b@x.com" (a literal string, not a JSON array — an array here 422s) — must be connected senders (sender/get); defaults to the account login email, which usually cannot send
fromName string ≤128 chars From display name
replyToEmail string ≤128 chars Reply-to address
subject string ≤4000 chars Initial email subject line
body string HTML email body
textOnlyEmails boolean Controls outbound MIME type at send time only — body must always be HTML (e.g. wrapped in <p> tags) regardless of this setting
ccEmails string Comma-separated CC addresses
bccEmails string Comma-separated BCC addresses
replyBccEmails string BCC on prospect replies (internal tracking)
replyCcEmails string CC on prospect replies (internal tracking)
sendUnsubscribeListHeader boolean Include List-Unsubscribe header
deactivateIfMissingPlaceholder boolean If true, a prospect with no value for a variable the copy uses is deactivated (status MissingPlaceholder) instead of mailed
stopCoworkersOnReply boolean Stop coworker sends to same prospect on reply
trackOpens boolean default false Pixel-based open tracking
trackClicks boolean default false URL-rewrite click tracking
prospectValue integer ≥0 Estimated value per conversion
dailyLimit integer 1–10000, default 50 Max emails per day
dailyLimitPer string default "Campaign" one of: Sender, Campaign
dailyLimitIncrease boolean Enable progressive daily limit increase
dailyLimitIncreaseToMax integer 0–10000 Target max for progressive increase
dailyLimitIncreasePercent integer 0–10000 Daily % increase step
dailyLimitOnDate string date-time Calculated limit on a specific date
dailyLimitPrioritize string default "Followup" one of: Initial, Followup
dailyLimitInitial integer 1–10000 Separate limit for initial emails
dailyLimitInitialEnabled boolean Enable separate initial email limit
dailyLimitWhichEmailsCount string default "All" one of: All, Initial
scheduleSending boolean Enable day-of-week send scheduling
scheduleTimeZone string ≤64 chars, default "UTC" Timezone for scheduled sends
useProspectsTimeZone boolean default false Use prospect's timezone when available
scheduleSendOnDate string date-time Start date for scheduled send
scheduleSendOnDateEnabled boolean Enable start-on-date feature
scheduleSendOnDateHours integer 0–23, default 10 Hour to start on scheduled date
scheduleSendOnDateMinutes integer 0–1439, default 10 Minute offset to start on scheduled date
delayMinSeconds integer 1–290 Min gap between consecutive sends, in seconds, so the default 30 is 30 seconds. Throttles between-sends, not the first send — see schemas/campaign
espMatchEnabled boolean Match sender ESP to prospect's provider
espMatchType string one of: None, MatchSender, MatchDomain
espLimitEnabled boolean Restrict sends to specific ESP providers
espLimitToMicrosoft boolean Include Microsoft (Outlook/Hotmail)
espLimitToGoogle boolean Include Google (Gmail/G Suite)
espLimitToOther boolean Include other providers
sendMon boolean default true Send on Monday
sendMonAfter integer 0–1439 Monday send start (mins after midnight)
sendMonBefore integer 0–1439 Monday send end (mins after midnight)
sendTue boolean default true Send on Tuesday
sendTueAfter integer 0–1439 Tuesday send start
sendTueBefore integer 0–1439 Tuesday send end
sendWed boolean default true Send on Wednesday
sendWedAfter integer 0–1439 Wednesday send start
sendWedBefore integer 0–1439 Wednesday send end
sendThu boolean default true Send on Thursday
sendThuAfter integer 0–1439 Thursday send start
sendThuBefore integer 0–1439 Thursday send end
sendFri boolean default true Send on Friday
sendFriAfter integer 0–1439 Friday send start
sendFriBefore integer 0–1439 Friday send end
sendSat boolean default true Send on Saturday
sendSatAfter integer 0–1439 Saturday send start
sendSatBefore integer 0–1439 Saturday send end
sendSun boolean default true Send on Sunday
sendSunAfter integer 0–1439 Sunday send start
sendSunBefore integer 0–1439 Sunday send end

Response

201 — Campaign created; object: see schemas/campaign. Deltas: none.

Errors: 400, 401, 406, 409, 415, 422, 429, 500 — shared schema: schemas/errors.

Invoke

Call create with name: "campaign/post".