MCP

campaign/patch_by_id

Tool: update

Partially update a campaign (PATCH semantics — only supplied fields applied).

Supply only the fields you want to change; omitted fields are left as-is. Returns the full updated campaign object. To clear a field — and to know why null fails — see call-contract.

Template fields (subject, body) take personalization variables from a closed list — see personalization-variables. Nothing is checked here, only at campaign/start_by_id, which makes this the operation to fix a start-time 422: patch the corrected subject/body, then start again.

If the campaign is Running and this patch touches a send-affecting field (scheduleSending, a schedule/day-window field, dailyLimit, or fromEmails), it requires confirm_send: true in arguments — same fresh, send-specific consent contract as campaign/start_by_id.

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

If disappointing results are why you are editing, Diagnosing underperformance gives the order to check the layers in — delivery, list, offer, then copy — and why you change one layer at a time; fixing copy when the problem is delivery is the most common wasted week in outbound. Before touching dailyLimit or the schedule on a running campaign, Campaign scheduling and pausing has the operating thresholds: pause and clean above roughly 2% bounces, reduce volume above roughly 0.05% complaints, and keep daily volume steady rather than jumping it.

Arguments

name type req notes
id integer Campaign ID — the object's campaignId
confirm_send boolean Required (true) only if the campaign is Running and the patch touches a send-affecting field (see above)

Body

field type req constraints description
name string Campaign display name
description string Description
folderId integer Folder ID
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)
fromName string From display name
replyToEmail string Reply-to address
subject string 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 CC addresses
bccEmails string BCC addresses
replyBccEmails string BCC on prospect replies
replyCcEmails string CC on prospect replies
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 on reply
trackOpens boolean Open tracking
trackClicks boolean Click tracking
prospectValue integer Value per conversion
dailyLimit integer Max emails per day
dailyLimitPer string one of: Sender, Campaign Daily limit scope
dailyLimitIncrease boolean Progressive limit increase
dailyLimitIncreaseToMax integer Target max for increase
dailyLimitIncreasePercent integer Daily % increase step
dailyLimitOnDate string date-time Limit on specific date
dailyLimitPrioritize string one of: Initial, Followup Priority when at limit
dailyLimitInitial integer Separate initial email limit
dailyLimitInitialEnabled boolean Enable separate initial limit
dailyLimitWhichEmailsCount string one of: All, Initial What counts toward limit
scheduleSending boolean Enable schedule
scheduleTimeZone string Timezone
useProspectsTimeZone boolean Use prospect timezone
scheduleSendOnDate string date-time Start date
scheduleSendOnDateEnabled boolean Enable start-on-date
scheduleSendOnDateHours integer 0–23 Hour on scheduled date
scheduleSendOnDateMinutes integer 0–1439 Minute offset on scheduled date
delayMinSeconds integer Min gap between consecutive sends, in seconds — not minutes; see schemas/campaign
espMatchEnabled boolean ESP matching
espMatchType string one of: None, MatchSender, MatchDomain ESP match strategy
espLimitEnabled boolean ESP limiting
espLimitToMicrosoft boolean Include Microsoft
espLimitToGoogle boolean Include Google
espLimitToOther boolean Include other providers
sendMon boolean Send on Monday
sendMonAfter integer 0–1439 Monday start
sendMonBefore integer 0–1439 Monday end
sendTue boolean Send on Tuesday
sendTueAfter integer 0–1439 Tuesday start
sendTueBefore integer 0–1439 Tuesday end
sendWed boolean Send on Wednesday
sendWedAfter integer 0–1439 Wednesday start
sendWedBefore integer 0–1439 Wednesday end
sendThu boolean Send on Thursday
sendThuAfter integer 0–1439 Thursday start
sendThuBefore integer 0–1439 Thursday end
sendFri boolean Send on Friday
sendFriAfter integer 0–1439 Friday start
sendFriBefore integer 0–1439 Friday end
sendSat boolean Send on Saturday
sendSatAfter integer 0–1439 Saturday start
sendSatBefore integer 0–1439 Saturday end
sendSun boolean Send on Sunday
sendSunAfter integer 0–1439 Sunday start
sendSunBefore integer 0–1439 Sunday end

Response

200 — Updated campaign; object: see schemas/campaign. Deltas: none.

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

Invoke

Call update with name: "campaign/patch_by_id".