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.
Use a secret key client for campaign methods.
import (
"context"
"os"
mailglyph "github.com/MailGlyph/mailglyph-go"
)
client := mailglyph.New(os.Getenv("MAILGLYPH_SECRET_KEY"))
ctx := context.Background()
List campaigns (Campaigns.List)
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)
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)
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
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)
campaign, err := client.Campaigns.Get(ctx, campaignAll.ID)
if err != nil {
panic(err)
}
println(campaign.Name, campaign.Status)
Update a campaign (Campaigns.Update)
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)
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)
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)
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)
stats, err := client.Campaigns.Stats(ctx, campaignAll.ID)
if err != nil {
panic(err)
}
println(stats.Success)
Cancel a scheduled campaign (Campaigns.Cancel)
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.