---
title: "Creates a new campaign and sends it."
method: POST
path: "/api/campaigns/{campaignDraftId}"
tags: ["Campaigns"]
---

# Creates a new campaign and sends it.

`POST /api/campaigns/{campaignDraftId}`

## Request

- Base URL: `https://api.gmass.co`
- URL: `https://api.gmass.co/api/campaigns/{campaignDraftId}`
- Auth: none declared

Set when the campaign should send, along with other options like tracking in the campaignSettings object. You must already have a campaignDraftId value from the /api/campaigndrafts method.

## Path parameters

- `campaignDraftId` string, required

## Request body

- CampaignSettings
  - `openTracking` boolean: Choose whether to track opens. True or False.
  - `clickTracking` boolean: Choose whether to track clicks. True or False.
  - `sendTime` string: Do not specify to send a campaign right now. Otherwise, specify time with an optional time zone offset. Example: "04/27/21 14:30 -04:00" indicates April 27, 2021 at 2:30 PM EST time.
  - `skipWeekends` boolean: Determines whether the scheduler should avoid sending this campaign on the weekend. True or False.
  - `skipHolidays` boolean: Determines whether the scheduler should avoid sending this campaign on designated holidays. True or False.
  - `friendlyName` string: A friendly name by which to identify this campaign.
  - `allowedDays` string: Specify the days of the week on which this campaign may send. Submit full weekday names as a comma-separated string. Example: "Monday,Wednesday,Friday".
  - `previewText` string: Optional preview text which displays next to the subject line in most email clients. See https://www.gmass.co/blog/preview-text/
  - `throttling` integer: Add a pause after each individual email that is sent as part of this campaign. Specify as 1, 2, or 3. See https://www.gmass.co/blog/mail-merge-feature-throttle-your-email-campaign/
  - `suppressionDays` integer: Filter out recipients that have received another campaign from you in the last X days. Specify the number of days as an integer. 1=5 to 10 seconds.2=10 to 60 seconds.3=1 to 5 minutes. See https://www.gmass.co/blog/suppress-addresses-by-number-of-days-since-last-email/
  - `suppressionCampaigns` string: Filter out recipients of a prior campaign. Specify a comma-separated string of campaign ID numbers. See https://www.gmass.co/blog/new-gmail-mail-merge-feature-use-suppression-lists-to-filter-out-recipients-of-past-campaigns/
  - `sendAsReply` boolean: Specify whether the campaign should be sent as a new thread of an existing thread. True or False. See https://www.gmass.co/blog/send-email-campaign-as-reply-to-recent-conversation/
  - `replyTo` string: Specify a custom Reply-To header for the campaign. If a Reply-To address is already set in your Gmail account, that will be used. This setting can override what's set in your Gmail account. See https://www.gmass.co/blog/reply-to-address/
  - `createDrafts` boolean: Specify whether to actually send emails for this campaign or just create DRAFTs which can be reviewed and sent later. True or False. Default value is False. See https://www.gmass.co/blog/no-more-fear-preview-your-emails-as-drafts-then-send-them-with-one-click/
  - `emailsPerDay` integer: Set a fixed number of emails that should be sent per day.
  - `fromName` string: Specify the From Name that will be seen by your recipients. This will override the From Name set for the From Address in your Gmail account.
  - `useSMTP` boolean: Specify whether the campaign should be sent through your SMTP server or natively through Gmail. True or False.
  - `skipSent` boolean: Specify whether emails should be logged in your SENT folder. True or False.
  - `verify` boolean: Specify whether each recipient address should be verified before sending. True or False.
  - `campaignIdToReplyTo` integer: To be used in conjunction with sendAsReply. Specify an optional campaign if the replies should be threaded to a prior campaign.
  - `imagesMode` string: Specify how images should be included. d: default, h: hosted, e: embedded
  - `stageOneDays` integer: STAGE 1: Number of days after original campaign message that this stage follow-up is sent
  - `stageOneCampaignText` string: STAGE 1: Text to use for the follow-up email.
  - `stageOneCampaignId` integer: STAGE 1: Custom content to be used for the follow-up email. If both stageOneCampaignId and stageOneCampaignText are set, then stageOneCampaignId will be used.
  - `stageOneAction` string: STAGE 1: Determines which behavior follow-ups should be sent based on. r=No Reply. o=No Open. c=No Click. s=No Reply or Click. a=Everyone
  - `stageOneTime` string: STAGE 1: Optionally, specify the time of day the follow-up should be sent. Specify without a time zone offset, but in the same time zone as sendTime.
  - `stageOneThread` string: STAGE 1: Optionally, specify whether the message should be sent as part of the "same" thread or a "new" thread. Default is "same".
  - `stageTwoDays` integer: STAGE 2: Number of days after original campaign message that this stage follow-up is sent
  - `stageTwoCampaignText` string: STAGE 2: Text to use for the follow-up email.
  - `stageTwoCampaignId` integer: STAGE 2: Custom content to be used for the follow-up email. If both stageTwoCampaignId and stageTwoCampaignText are set, then stageTwoCampaignId will be used.
  - `stageTwoAction` string: STAGE 2: Determines which behavior follow-ups should be sent based on. r=No Reply. o=No Open. c=No Click. s=No Reply or Click. a=Everyone
  - `stageTwoTime` string: STAGE 2: Optionally, specify the time of day the follow-up should be sent. Specify without a time zone offset, but in the same time zone as sendTime.
  - `stageTwoThread` string: STAGE 2: Optionally, specify whether the message should be sent as part of the "same" thread or a "new" thread. Default is "same".
  - `stageThreeDays` integer: STAGE 3: Number of days after original campaign message that this stage follow-up is sent
  - `stageThreeCampaignText` string: STAGE 3: Text to use for the follow-up email.
  - `stageThreeCampaignId` integer: STAGE 3: Custom content to be used for the follow-up email. If both stageThreeCampaignId and stageThreeCampaignText are set, then stageThreeCampaignId will be used.
  - `stageThreeAction` string: STAGE 3: Determines which behavior follow-ups should be sent based on. r=No Reply. o=No Open. c=No Click. s=No Reply or Click. a=Everyone
  - `stageThreeTime` string: STAGE 3: Optionally, specify the time of day the follow-up should be sent. Specify without a time zone offset, but in the same time zone as sendTime.
  - `stageThreeThread` string: STAGE 3: Optionally, specify whether the message should be sent as part of the "same" thread or a "new" thread. Default is "same".
  - `stageFourDays` integer: STAGE 4: Number of days after original campaign message that this stage follow-up is sent
  - `stageFourCampaignText` string: STAGE 4: Text to use for the follow-up email.
  - `stageFourCampaignId` integer: STAGE 4: Custom content to be used for the follow-up email. If both stageFourCampaignId and stageFourCampaignText are set, then stageFourCampaignId will be used.
  - `stageFourAction` string: STAGE 4: Determines which behavior follow-ups should be sent based on. r=No Reply. o=No Open. c=No Click. s=No Reply or Click. a=Everyone
  - `stageFourTime` string: STAGE 4: Optionally, specify the time of day the follow-up should be sent. Specify without a time zone offset, but in the same time zone as sendTime.
  - `stageFourThread` string: STAGE 4: Optionally, specify whether the message should be sent as part of the "same" thread or a "new" thread. Default is "same".
  - `stageFiveDays` integer: STAGE 5: Number of days after original campaign message that this stage follow-up is sent
  - `stageFiveCampaignText` string: STAGE 5: Text to use for the follow-up email.
  - `stageFiveCampaignId` integer: STAGE 5: Custom content to be used for the follow-up email. If both stageFiveCampaignId and stageFiveCampaignText are set, then stageFiveCampaignId will be used.
  - `stageFiveAction` string: STAGE 5: Determines which behavior follow-ups should be sent based on. r=No Reply. o=No Open. c=No Click. s=No Reply or Click. a=Everyone
  - `stageFiveTime` string: STAGE 5: Optionally, specify the time of day the follow-up should be sent. Specify without a time zone offset, but in the same time zone as sendTime.
  - `stageFiveThread` string: STAGE 5: Optionally, specify whether the message should be sent as part of the "same" thread or a "new" thread. Default is "same".
  - `stageSixDays` integer: STAGE 6: Number of days after original campaign message that this stage follow-up is sent
  - `stageSixCampaignText` string: STAGE 6: Text to use for the follow-up email.
  - `stageSixCampaignId` integer: STAGE 6: Custom content to be used for the follow-up email. If both stageSixCampaignId and stageSixCampaignText are set, then stageSixCampaignId will be used.
  - `stageSixAction` string: STAGE 6: Determines which behavior follow-ups should be sent based on. r=No Reply. o=No Open. c=No Click. s=No Reply or Click. a=Everyone
  - `stageSixTime` string: STAGE 6: Optionally, specify the time of day the follow-up should be sent. Specify without a time zone offset, but in the same time zone as sendTime.
  - `stageSixThread` string: STAGE 6: Optionally, specify whether the message should be sent as part of the "same" thread or a "new" thread. Default is "same".
  - `stageSevenDays` integer: STAGE 7: Number of days after original campaign message that this stage follow-up is sent
  - `stageSevenCampaignText` string: STAGE 7: Text to use for the follow-up email.
  - `stageSevenCampaignId` integer: STAGE 7: Custom content to be used for the follow-up email. If both stageSevenCampaignId and stageSevenCampaignText are set, then stageSevenCampaignId will be used.
  - `stageSevenAction` string: STAGE 7: Determines which behavior follow-ups should be sent based on. r=No Reply. o=No Open. c=No Click. s=No Reply or Click. a=Everyone
  - `stageSevenTime` string: STAGE 7: Optionally, specify the time of day the follow-up should be sent. Specify without a time zone offset, but in the same time zone as sendTime.
  - `stageSevenThread` string: STAGE 7: Optionally, specify whether the message should be sent as part of the "same" thread or a "new" thread. Default is "same".
  - `stageEightDays` integer: STAGE 8: Number of days after original campaign message that this stage follow-up is sent
  - `stageEightCampaignText` string: STAGE 8: Text to use for the follow-up email.
  - `stageEightCampaignId` integer: STAGE 8: Custom content to be used for the follow-up email. If both stageEightCampaignId and stageEightCampaignText are set, then stageEightCampaignId will be used.
  - `stageEightAction` string: STAGE 8: Determines which behavior follow-ups should be sent based on. r=No Reply. o=No Open. c=No Click. s=No Reply or Click. a=Everyone
  - `stageEightTime` string: STAGE 8: Optionally, specify the time of day the follow-up should be sent. Specify without a time zone offset, but in the same time zone as sendTime.
  - `stageEightThread` string: STAGE 8: Optionally, specify whether the message should be sent as part of the "same" thread or a "new" thread. Default is "same".
  - `ABTest` boolean: Set to true or false, based on whether this campaign is being A/B tested
  - `ABTestDecision` string: Set to m or a, based on whether the winner should be decided manually or automatically
  - `ABTestHoursAfter` integer: Set to the number of hours after the test portion is sent that a winner should be picked
  - `ABTestPercentage` integer: Set the percentage of the campaign that should be sent as the test portion
  - `ABTestDecisionFactor` string: Only required if ABTestDecision=a. The parameter by which the winner will be decided. o=opens c=clicks r=replies
  - `MultiSend` string: Specify a comma-separated list of accounts to distribute the volume over. MultiSend accounts must already be connected to your primary account.
  - `MultiSendSkipPrimary` boolean: If true, the primary account making the API request will not be used to send messages as part of MultiSend.
  - `MultiSendPrimaryMaxAllowed` integer: Optional MultiSend daily maximum for the primary account. Only applies when MultiSendSkipPrimary is false. A value of 0 means no custom MultiSend maximum.
  - `SpinMax` boolean: Determines if SpinMax is set for this campaign. True or False.
  - `additionalStages` ExtraStage[]: Any follow-up stage ≥ 9. Only specify stages 9 and higher here. The first 8 are specified in the separate fixed parameters.
    - `stageNumber` integer: Stage number (9, 10, 11 …)
    - `days` integer: Days after original send.
    - `action` string: r = no-reply · o = no-open · c = no-click · s = no reply/click · a = everyone
    - `campaignText` string: Optional custom text to send for this stage. If both campaignText **and** campaignId are supplied, campaignId wins.
    - `campaignId` integer: Optional ID of an existing campaign to re-use instead of text.
    - `time` string: Optional time of day – same format you already use for stageOneTime, etc.
    - `thread` string: same = reply in same thread · new = force new thread (default = same)

## Response `200`

OK

- Campaign
  - `campaignId` integer: The GMass-generated campaign ID number for a campaign.
  - `subject` string
  - `friendlyName` string
  - `stage` integer
  - `creationTime` string, date-time
  - `fromLine` string
  - `statistics` Statistics
    - `recipients` integer
    - `opens` integer
    - `clicks` integer
    - `replies` integer
    - `unsubscribes` integer
    - `bounces` integer
    - `blocks` integer
  - `status` string: Will be set to one of the following: sent, scheduled, error, processing, unknown, cancelled, paused, abpaused
  - `lists` List[]
    - `listAddress` string: The GMass-generated address to represent an email list. Looks like aaabbb-cccc@gmass.co
    - `listSource` ListSource
      - `listSourceSheet` ListSourceSheet
        - `spreadsheetId` string: The "id" value of the Google Sheet. Can be retrieved from the sheets.google.com URL
        - `worksheetId` string: The Google assigned ID of the worksheet within a Google Sheet. The default worksheet usually has an ID of 0.
        - `spreadsheetName` string: The name of the Google Sheet
        - `worksheetName` string: The name of the tab (worksheet) inside the Google Sheet
        - `KeepDuplicates` boolean: Whether duplicates should be kept or filtered out. Set to true or false.
        - `FilterCriteria` string: A string value representing a filter of rows in the Sheet. See https://www.gmass.co/blog/send-mail-merge-to-selected-rows-spreadsheet/
        - `AndOr` string: If FilterCriteria specified, then specify whether the criteria should be joined by a boolean AND or OR. The default is AND. Specify as "And" or "Or".
        - `UpdateSheet` boolean: Whether GMass should update the Sheet with additional columns to track reporting data. Set to true or false.
  - `autoFollowups` AutoFollowup[]: Auto follow-ups associated with this campaign
    - `stage` integer
    - `campaignId` integer
    - `batches` AutoFollowupBatch[]
      - `batchId` integer
      - `status` string
      - `creationTime` string, date-time
      - `estimatedCount` integer

---

[API](https://skmtc.dev/gmass/apis/gmass-api.md) - [All operations](https://skmtc.dev/gmass/apis/gmass-api/llms.txt) - [OpenAPI document](https://skmtc.dev/gmass/apis/gmass-api/revisions/0498e4a9c765?raw)
