> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mailglyph.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Campaigns

> Create, send, test, and analyze campaigns with the MailGlyph Go SDK.

Use a **secret key** client for campaign methods.

```go theme={null}
import (
  "context"
  "os"

  mailglyph "github.com/MailGlyph/mailglyph-go"
)

client := mailglyph.New(os.Getenv("MAILGLYPH_SECRET_KEY"))
ctx := context.Background()
```

## List campaigns (`Campaigns.List`)

```go theme={null}
page := 1
pageSize := 20
status := "DRAFT"

campaigns, err := client.Campaigns.List(ctx, &mailglyph.ListCampaignsParams{
  Page: &page,
  PageSize: &pageSize,
  Status: &status,
})
if err != nil {
  panic(err)
}

println(campaigns.Total, campaigns.TotalPages, len(campaigns.Data))
```

## Create a campaign (`Campaigns.Create`)

### Audience: all contacts

```go theme={null}
campaignAll, err := client.Campaigns.Create(ctx, &mailglyph.CreateCampaignParams{
  Name: "Launch campaign",
  Subject: "Introducing our new feature",
  Body: "<h1>Big news</h1><p>Check out what is new.</p>",
  From: "hello@your-verified-domain.com",
  AudienceType: "ALL",
})
if err != nil {
  panic(err)
}

println(campaignAll.ID, campaignAll.Status)
```

### Audience: filtered contacts

```go theme={null}
campaignFiltered, err := client.Campaigns.Create(ctx, &mailglyph.CreateCampaignParams{
  Name: "Subscribed users campaign",
  Subject: "Feature update",
  Body: "<p>Only subscribed users receive this.</p>",
  From: "hello@your-verified-domain.com",
  AudienceType: "FILTERED",
  AudienceCondition: &mailglyph.FilterCondition{
    Logic: "AND",
    Groups: []mailglyph.FilterGroup{
      {
        Filters: []mailglyph.SegmentFilter{
          {Field: "subscribed", Operator: "equals", Value: true},
        },
      },
    },
  },
})
if err != nil {
  panic(err)
}

println(campaignFiltered.ID)
```

### Audience: segment

```go theme={null}
segmentID := "seg_123"

campaignSegment, err := client.Campaigns.Create(ctx, &mailglyph.CreateCampaignParams{
  Name: "Segment campaign",
  Subject: "Offer for premium users",
  Body: "<p>This goes to one saved segment.</p>",
  From: "hello@your-verified-domain.com",
  AudienceType: "SEGMENT",
  SegmentID: &segmentID,
})
if err != nil {
  panic(err)
}

println(campaignSegment.ID)
```

## Get one campaign (`Campaigns.Get`)

```go theme={null}
campaign, err := client.Campaigns.Get(ctx, campaignAll.ID)
if err != nil {
  panic(err)
}

println(campaign.Name, campaign.Status)
```

## Update a campaign (`Campaigns.Update`)

```go theme={null}
subject := "Updated subject line"
replyTo := "support@your-verified-domain.com"

updated, err := client.Campaigns.Update(ctx, campaignAll.ID, &mailglyph.UpdateCampaignParams{
  Subject: &subject,
  ReplyTo: &replyTo,
})
if err != nil {
  panic(err)
}

println(updated.Subject)
```

## Send a campaign now (`Campaigns.Send`)

```go theme={null}
sendResult, err := client.Campaigns.Send(ctx, campaignAll.ID, nil)
if err != nil {
  panic(err)
}

println(sendResult.Success, sendResult.Message)
```

## Schedule a campaign (`Campaigns.Send` with `SendCampaignParams`)

```go theme={null}
scheduledFor := "2026-03-01T10:00:00Z"

scheduledResult, err := client.Campaigns.Send(ctx, campaignAll.ID, &mailglyph.SendCampaignParams{
  ScheduledFor: &scheduledFor,
})
if err != nil {
  panic(err)
}

println(scheduledResult.Success, scheduledResult.Message)
```

## Send a test email (`Campaigns.Test`)

```go theme={null}
testResult, err := client.Campaigns.Test(ctx, campaignAll.ID, "preview@example.com")
if err != nil {
  panic(err)
}

println(testResult.Success, testResult.Message)
```

## Fetch campaign stats (`Campaigns.Stats`)

```go theme={null}
stats, err := client.Campaigns.Stats(ctx, campaignAll.ID)
if err != nil {
  panic(err)
}

println(stats.Success)
```

## Cancel a scheduled campaign (`Campaigns.Cancel`)

```go theme={null}
cancelled, err := client.Campaigns.Cancel(ctx, campaignAll.ID)
if err != nil {
  panic(err)
}

println(cancelled.Success, cancelled.Message)
```

See full details in the [Campaigns API reference](https://docs.mailglyph.com/api-reference/campaigns/listCampaigns.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.