MCP

schemas/campaign

The Campaign object returned by campaign/get, campaign/get_by_id, and mutation responses.

field type constraints description
campaignId integer Unique identifier.
createdAt string date-time When the campaign was created.
folderId integer Folder for organizing campaigns.
status string observed: Draft, Running, Paused, Completed, Archived Current campaign status. Not a validated enum — see the lifecycle note below.
name string max 256 Display name.
description string max 512 Optional purpose description.
fromEmails string Comma-separated sender email addresses.
fromName string max 128 From display name in outgoing emails.
replyToEmail string email, max 128 Reply-to address for prospect responses.
subject string max 4000 Initial email subject line.
body string HTML email body for the initial message. In a list response, a body over 1,500 characters arrives as a plain-text preview unless you pass fullBodies: true — see schemas/pagination.
textOnlyEmails boolean Controls the outbound MIME type at send time only — body is always supplied as HTML regardless. When true, formatting and embedded images are stripped at send (and open tracking stops working, since it needs an image) — see writing-emails.
ccEmails string Comma-separated CC addresses on all campaign emails.
bccEmails string Comma-separated BCC addresses on all campaign emails.
replyBccEmails string BCC on prospect reply emails (internal tracking).
replyCcEmails string CC on prospect reply emails (internal tracking).
sendUnsubscribeListHeader boolean Include List-Unsubscribe header for compliance.
deactivateIfMissingPlaceholder boolean if true, a prospect with no value for a personalization variable the copy uses is deactivated instead of mailed, and carries sendingStatus: MissingPlaceholder (see schemas/prospect); if false, the send goes ahead. Either way, a default: fallback keeps incomplete records in the send with copy that still reads — personalization-variables.
stopCoworkersOnReply boolean Stop co-worker campaigns targeting same prospect on reply.
trackOpens boolean Enable pixel-based open tracking.
trackClicks boolean Enable link-click tracking via redirects.
prospectValue integer Estimated value per conversion for ROI tracking.
dailyLimit integer 1–10000 Max emails per day for this campaign.
dailyLimitPer string one of: Sender, Campaign Whether limit applies per sender or across the campaign.
dailyLimitIncrease boolean Progressively increase the daily limit.
dailyLimitIncreaseToMax integer 0–10000 Target maximum when progressive increase is enabled.
dailyLimitIncreasePercent integer 0–10000 Daily % increase for progressive ramp.
dailyLimitOnDate string date-time Calculated current daily limit after progressive increases.
dailyLimitPrioritize string one of: Initial, Followup Which email type gets priority near the daily limit.
dailyLimitInitial integer 1–10000 Separate daily limit for initial emails only.
dailyLimitInitialEnabled boolean Enable the separate initial-email daily limit.
dailyLimitWhichEmailsCount string one of: All, Initial Which email types count toward the daily limit.
scheduleSending boolean Enable scheduled send windows.
scheduleTimeZone string max 64 IANA timezone for send scheduling (e.g. America/New_York).
useProspectsTimeZone boolean Use each prospect's detected timezone when available.
scheduleSendOnDate string date-time Start date when scheduled sending begins.
scheduleSendOnDateMinutes integer 0–1439 Start time in minutes-after-midnight on the scheduled date.
scheduleSendOnDateEnabled boolean Enable the specific start-date feature.
scheduleSendOnDateHours integer 0–23 Hour of day to start sending on the scheduled date.
delayMinSeconds integer 1–290 Minimum gap between consecutive sends, in seconds — not minutes; see the note under the table.
espMatchType string one of: None, MatchSender, MatchDomain ESP matching strategy for deliverability.
espMatchEnabled boolean Enable ESP matching.
espLimitEnabled boolean Restrict sends to specific email providers.
espLimitToMicrosoft boolean Include Microsoft (Outlook/Hotmail/Live) when ESP limiting.
espLimitToGoogle boolean Include Google (Gmail/GSuite) when ESP limiting.
espLimitToOther boolean Include other providers when ESP limiting.
sendMon boolean Send on Monday.
sendMonAfter integer 0–1439 Monday send window start (minutes after midnight).
sendMonBefore integer 0–1439 Monday send window end (minutes after midnight).
sendTue boolean Send on Tuesday.
sendTueAfter integer 0–1439 Tuesday send window start.
sendTueBefore integer 0–1439 Tuesday send window end.
sendWed boolean Send on Wednesday.
sendWedAfter integer 0–1439 Wednesday send window start.
sendWedBefore integer 0–1439 Wednesday send window end.
sendThu boolean Send on Thursday.
sendThuAfter integer 0–1439 Thursday send window start.
sendThuBefore integer 0–1439 Thursday send window end.
sendFri boolean Send on Friday.
sendFriAfter integer 0–1439 Friday send window start.
sendFriBefore integer 0–1439 Friday send window end.
sendSat boolean Send on Saturday.
sendSatAfter integer 0–1439 Saturday send window start.
sendSatBefore integer 0–1439 Saturday send window end.
sendSun boolean Send on Sunday.
sendSunAfter integer 0–1439 Sunday send window start.
sendSunBefore integer 0–1439 Sunday send window end.
prospectCount integer Total prospects enrolled.
activeProspectCount integer Prospects currently active.
sentCount integer Total emails sent across all followups.
openCount integer Total opens across all emails.
clickCount integer Total link clicks across all emails.
bounceCount integer Total bounces received.
replyCount integer Total replies received.
initialOpenCount integer Opens from the initial email only.
initialClickCount integer Clicks from the initial email only.
initialReplyCount integer Replies from the initial email only.
initialBounceCount integer Bounces from the initial email only.
initialInterestedCount integer Interested prospects from the initial email only.
interestedCount integer Total prospects marked Interested.
conversionCount integer Total conversions tracked.
initialConversionCount integer Conversions from the initial email only.
tags array Embedded tag refs; see schemas/tag-ref. Omitted when none.

delayMinSeconds is seconds. A campaign returning 140 paces sends about 140 seconds apart, not 140 minutes; the default 30 means 30 seconds. The accepted range is 1–290 — values outside it are rejected. For "how long will this list take?", the sender's daily limit is the real constraint, not this delay, which only spaces consecutive sends. The sender-level delayMinMinutes (schemas/sender) is a different field and really is minutes.

Single-item responses (POST/GET-by-id) omit some fields the list returns — read the list operation to verify those (upstream shape drift); the followup and sequence objects have the same quirk, named on their own pages. There is no completedAtcreatedAt is creation time, not completion.

Status lifecycle

Draft → Running → Paused. Pausing is the only operation that stops a running campaign. No operation leads back to Draft once a campaign has been started. Completed, Archived, Warning, Blocked, Scheduled, and Preparing are terminal or system-managed states; only the five in the table above appear in observed data. A status outside the observed five is not an error and not a stuck campaign — report it as the state it is rather than as a failure. As a campaign/get filter, status is not validated — an unrecognized value returns an empty 200 rather than an error (call-contract).