SendGrid · Arazzo Workflow

SendGrid Campaign Test Then Send

Version 1.0.0

Create a campaign, send a test to yourself, and send the campaign for real.

1 workflow 1 source API 1 provider
View Spec View on GitHub EmailEmail APIMarketing EmailSMTPT1Transactional EmailArazzoWorkflows

Provider

sendgrid

Workflows

campaign-test-then-send
Create a campaign, test it, and send it to the full audience.
Creates a campaign, sends a test to a review address, and then sends the campaign to its recipients.
3 steps inputs: apiKey, htmlContent, listIds, plainContent, senderId, subject, suppressionGroupId, testEmail, title outputs: campaignId, status, testedTo
1
createCampaign
CreateCampaign
Create a campaign with content and recipient lists.
2
sendTest
SendTestCampaign
Send a test of the campaign to the review address so the content can be checked before the full send.
3
sendCampaign
SendCampaign
Send the campaign to its full recipient audience.

Source API Descriptions

Arazzo Workflow Specification

sendgrid-campaign-test-then-send-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: SendGrid Campaign Test Then Send
  summary: Create a campaign, send a test to yourself, and send the campaign for real.
  description: >-
    A safe-send flow for legacy Marketing Campaigns. The workflow creates a
    campaign with content and recipient lists, sends a test message to a single
    address so the content can be reviewed, and then sends the campaign to its
    full audience. Campaign creation returns 201, the test send returns 201, and
    the real send returns 201 with the campaign status. Each step inlines its
    request and bearer token so the flow can be read and run without the OpenAPI
    files.
  version: 1.0.0
sourceDescriptions:
- name: campaignsApi
  url: ../openapi/tsg_lmc_campaigns_v3.yaml
  type: openapi
workflows:
- workflowId: campaign-test-then-send
  summary: Create a campaign, test it, and send it to the full audience.
  description: >-
    Creates a campaign, sends a test to a review address, and then sends the
    campaign to its recipients.
  inputs:
    type: object
    required:
    - apiKey
    - title
    - subject
    - senderId
    - listIds
    - suppressionGroupId
    - htmlContent
    - plainContent
    - testEmail
    properties:
      apiKey:
        type: string
        description: SendGrid API key sent as a bearer token.
      title:
        type: string
        description: The internal title of the campaign.
      subject:
        type: string
        description: The subject line of the campaign.
      senderId:
        type: integer
        description: The ID of the sender used as the from address.
      listIds:
        type: array
        description: The recipient list IDs the campaign targets.
        items:
          type: integer
      suppressionGroupId:
        type: integer
        description: The unsubscribe suppression group ID.
      htmlContent:
        type: string
        description: The HTML content of the campaign.
      plainContent:
        type: string
        description: The plain text content of the campaign.
      testEmail:
        type: string
        description: The address that should receive the test campaign.
  steps:
  - stepId: createCampaign
    description: Create a campaign with content and recipient lists.
    operationId: CreateCampaign
    parameters:
    - name: Authorization
      in: header
      value: "Bearer $inputs.apiKey"
    requestBody:
      contentType: application/json
      payload:
        title: $inputs.title
        subject: $inputs.subject
        sender_id: $inputs.senderId
        list_ids: $inputs.listIds
        suppression_group_id: $inputs.suppressionGroupId
        html_content: $inputs.htmlContent
        plain_content: $inputs.plainContent
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      campaignId: $response.body#/id
  - stepId: sendTest
    description: >-
      Send a test of the campaign to the review address so the content can be
      checked before the full send.
    operationId: SendTestCampaign
    parameters:
    - name: Authorization
      in: header
      value: "Bearer $inputs.apiKey"
    - name: campaign_id
      in: path
      value: $steps.createCampaign.outputs.campaignId
    requestBody:
      contentType: application/json
      payload:
        to: $inputs.testEmail
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      testedTo: $response.body#/to
  - stepId: sendCampaign
    description: Send the campaign to its full recipient audience.
    operationId: SendCampaign
    parameters:
    - name: Authorization
      in: header
      value: "Bearer $inputs.apiKey"
    - name: campaign_id
      in: path
      value: $steps.createCampaign.outputs.campaignId
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      status: $response.body#/status
  outputs:
    campaignId: $steps.createCampaign.outputs.campaignId
    testedTo: $steps.sendTest.outputs.testedTo
    status: $steps.sendCampaign.outputs.status