Newsletter Tools

Newsletter tools let you create email campaigns with AI-generated or manual content, build automation workflows with triggers and conditions, and check email performance statistics. Everything stays in draft until you review and send from the dashboard.

Overview

The Newsletter tool category covers email campaigns, automation workflows, and email performance analytics. You can create fully-designed campaigns with AI-generated content, build complex automation workflows with multiple steps, and monitor how your emails perform.

Permission required:Copilot.Newsletter

manage_campaign

Creates or updates a newsletter email campaign. Campaigns are always created in DRAFT status — you review and send them from the dashboard.

Parameters

ParameterTypeRequiredDescription
idstringNoCampaign ID. Omit to create, provide to update.
namestringConditionalCampaign name. Required when creating.
subjectstringNoEmail subject line.
preheaderstringNoPreview text shown in email inbox.
senderNamestringNoDisplay name for the sender. Auto-detected if omitted.
senderEmailIdstringNoSender email ID. Auto-detected if omitted.
contentstringNoDirect HTML email content (table-based layout with inline styles).
generateContentstringNoAI prompt to generate email HTML from scratch, or editing instructions when combined with a source.
fromTemplateIdstringNoUse a saved template's content as the starting point.
fromCampaignIdstringNoCopy content from a previous campaign.
useVariablesbooleanNoAllow {{variable}} placeholders in AI-generated content (e.g., {{name}}, {{email}}, {{unsubscribeURL}}).
recipientsobjectNoTarget audience. See recipient options below.

Content Sources

You have four ways to provide email content (pick one):

SourceHow It Works
contentPaste your own HTML directly. Must use table-based layout with inline styles for email compatibility.
generateContentDescribe the email and AI generates professional HTML. Uses table-based layout automatically.
fromTemplateIdCopy content from a saved email template. Find template IDs with list_records (table: email_templates).
fromCampaignIdCopy content from a previous campaign. Find campaign IDs with list_records (table: campaigns).

Combining sources: You can combine fromTemplateId or fromCampaignId with generateContent to have AI edit existing content. For example, take last month's campaign and ask AI to update the headline.

Recipient Options

OptionDescription
allActiveTarget all verified subscribers.
segmentIdsArray of contact segment IDs. Find IDs with list_records (table: contact_segments).
groupIdsArray of contact group IDs. Find IDs with list_records (table: contact_groups).

These are mutually exclusive — use only one recipient method per campaign.

How It Works

Creating a campaign:

  • Only name is required, but you'll typically also provide subject and content.
  • A verified sender email is automatically detected from your organization's email domains. You can override it with senderEmailId.
  • Returns a dashboardUrl where you can review and send the campaign.

Updating a campaign:

  • Only DRAFT campaigns can be updated.
  • If you provide generateContent without a source and the campaign already has content, AI edits the existing content.

Important: This tool cannot send campaigns. It always creates them in DRAFT status. Use the returned dashboardUrl to review and send from the dashboard.

Example Prompts

  • "Create a newsletter campaign called 'March Update' with the subject 'What's New in March'."
  • "Generate a promotional email about our spring sale with 50% off all items."
  • "Create a campaign using my Welcome template as the base." (lists templates first, then creates the campaign)
  • "Take my last campaign and create a new one with the headline changed to 'Summer Sale'." (lists campaigns, finds the last one, creates new with AI edits)
  • "Set the recipients for my March campaign to all active subscribers."
  • "Target the 'Premium Users' group for this campaign."
  • "Update the subject line of my draft campaign."
  • "Create a welcome email campaign with AI content, personalization variables, and target the 'New Signups' group."

get_email_stats

Retrieves email performance statistics for a campaign or workflow.

Parameters

ParameterTypeRequiredDescription
sourcestringYes"campaign" or "workflow".
sourceIdstringYesThe campaign or workflow ID.

How It Works

  • Returns email performance metrics including: sends, opens, clicks, bounces, unsubscribes, and more.
  • The campaign or workflow must belong to your organization.

Example Prompts

  • "What are the stats for my March campaign?" (lists campaigns first to find the ID)
  • "Show me the open rate and click rate for my last campaign."
  • "How is my welcome series workflow performing?"
  • "Compare the stats of my last two campaigns." (lists campaigns, gets stats for each)

manage_email_workflow

Creates, updates, or edits email content within newsletter automation workflows. This is the most powerful newsletter tool — it uses AI to generate entire workflow structures from plain English descriptions.

Actions

This tool has three modes of operation, controlled by the action parameter:

action: "create"

Generates a new workflow from an AI description.

ParameterTypeRequiredDescription
action"create"Yes
namestringYesWorkflow name.
descriptionstringYesPlain English description of the workflow. AI generates the full structure.
triggerTypestringNoHint for the trigger type: "MANUAL", "DATE", "SUBSCRIBE", "UNSUBSCRIBE", or "API". AI auto-detects if omitted.

How it works:

  • AI generates the entire workflow structure: trigger configuration, all nodes (emails, delays, conditions, actions), and the connections between them.
  • The AI has access to your organization's context: contact groups, custom fields, other workflows, and verified sender emails.
  • Email nodes are created with subject/preheader only — use action: "edit_email" to add HTML content to each email.
  • All node positions are automatically calculated by the layout engine.

action: "update"

Modifies an existing workflow.

ParameterTypeRequiredDescription
action"update"Yes
idstringYesWorkflow ID.
namestringNoRename the workflow.
descriptionstringNoAI sees the current workflow and applies your changes (add/remove/restructure nodes).
triggerSettingsobjectNoDirect trigger config object.
activebooleanNoActivate or deactivate the workflow.

How it works:

  • When you provide description, AI sees the entire current workflow and generates an updated version.
  • Existing nodes are preserved where possible and new ones are added.
  • You can combine description with name, triggerSettings, and active in a single call.

action: "edit_email"

Sets the HTML content of a specific email node within the workflow.

ParameterTypeRequiredDescription
action"edit_email"Yes
idstringYesWorkflow ID.
emailNodeIdstringYesThe node ID within the workflow (e.g., "2" or "5").
subjectstringNoEmail subject line for this node.
preheaderstringNoEmail preview text.
contentstringNoDirect HTML email content.
generateContentstringNoAI generates or edits the email HTML.
fromTemplateIdstringNoUse a template's content.
fromCampaignIdstringNoCopy content from a campaign.
useVariablesbooleanNoAllow {{variable}} placeholders.
senderEmailIdstringNoSender email ID for this node.
senderNamestringNoSender display name.

How it works:

  • Sets the email content for the specified node.
  • Content source options work the same as in manage_campaign.
  • The workflow structure shows which nodes are email nodes — use those node IDs here.

Building email workflows works best as an iterative process:

Create the workflow structure

Use action: "create" with a description of the full automation flow. This generates all nodes and connections.

Review the structure

The response shows all nodes and their types. Identify the email node IDs.

Design each email

Use action: "edit_email" for each email node, generating content with AI or providing your own HTML.

Refine and activate

Use action: "update" to make structural changes, then set active: true when ready.

Node Types

TypeDescription
triggerThe starting point — when the workflow activates (subscribe, unsubscribe, date, manual, API).
emailSends an email to the contact.
delayWaits a specified duration before continuing.
conditionBranches based on a condition (creates yes/no paths).
actionPerforms an action: update a field, copy/move/remove from groups, unsubscribe.
webhookSends a webhook to an external URL.
fetchFetches data from an external URL.
workflowTriggers another workflow.

Example Prompts

  • "Create a welcome email workflow: when someone subscribes, send a welcome email immediately, wait 3 days, send a tips email."
  • "Create an onboarding series: subscribe trigger, wait 1 day, send welcome, wait 3 days, check if they opened the welcome email, if yes send a thank-you, if no send a reminder."
  • "Add a condition to my workflow to check if the contact's country is US, and only send the promotional email to US contacts."
  • "Rename my workflow to 'New Customer Onboarding'."
  • "Activate my onboarding workflow."
  • "Write the welcome email content for the first email node — make it warm, professional, and include our logo."
  • "Generate the reminder email for node 5 — it should encourage the reader to check out our getting started guide."
  • "Use my Welcome template for the first email, but change the headline to 'Welcome to the team!'"
  • "Show me the stats for my welcome workflow." (uses get_email_stats)

Common Workflow Patterns

Quick Campaign

  1. Create with AI contentmanage_campaign with generateContent
  2. Set recipientsmanage_campaign (update) with recipients
  3. Review and send → Use the returned dashboardUrl

Example prompt: "Create a campaign called Holiday Sale with AI-generated promotional content about 30% off everything, target all active subscribers."

Complete Workflow Build

  1. Create workflow structuremanage_email_workflow (create)
  2. Design each emailmanage_email_workflow (edit_email) for each email node
  3. Activatemanage_email_workflow (update) with active: true

Example prompt: "Build me a complete re-engagement workflow: when someone hasn't opened emails in 30 days, send a 'we miss you' email, wait a week, if they still haven't opened, send a final reminder with a discount offer, then unsubscribe if no response."