Skip to main content
Use a secret key client for segments methods.
import (
  "context"
  "os"

  mailrify "github.com/Mailrify/mailrify-go"
)

client := mailrify.New(os.Getenv("MAILRIFY_SECRET_KEY"))
ctx := context.Background()

List segments (Segments.List)

segments, err := client.Segments.List(ctx)
if err != nil {
  panic(err)
}

println(len(segments))

Create a segment (Segments.Create)

trackMembership := true

segment, err := client.Segments.Create(ctx, &mailrify.CreateSegmentParams{
  Name: "Premium users",
  Description: strPtr("Users on paid plans"),
  Condition: &mailrify.FilterCondition{
    Logic: "AND",
    Groups: []mailrify.FilterGroup{
      {
        Filters: []mailrify.SegmentFilter{
          {Field: "data.plan", Operator: "equals", Value: "premium"},
        },
      },
    },
  },
  TrackMembership: &trackMembership,
})
if err != nil {
  panic(err)
}

println(segment.ID, segment.MemberCount)

Get one segment (Segments.Get)

existing, err := client.Segments.Get(ctx, segment.ID)
if err != nil {
  panic(err)
}

println(existing.Name)

Update a segment (Segments.Update)

name := "VIP users"
updated, err := client.Segments.Update(ctx, segment.ID, &mailrify.UpdateSegmentParams{
  Name: &name,
  Condition: &mailrify.FilterCondition{
    Logic: "AND",
    Groups: []mailrify.FilterGroup{
      {
        Filters: []mailrify.SegmentFilter{
          {Field: "subscribed", Operator: "equals", Value: true},
        },
      },
    },
  },
})
if err != nil {
  panic(err)
}

println(updated.Name)

List segment contacts (Segments.ListContacts)

page := 1
pageSize := 20

members, err := client.Segments.ListContacts(ctx, segment.ID, &mailrify.ListSegmentContactsParams{
  Page: &page,
  PageSize: &pageSize,
})
if err != nil {
  panic(err)
}

println(members.Total, members.Page, len(members.Data))

Delete a segment (Segments.Delete)

if err := client.Segments.Delete(ctx, segment.ID); err != nil {
  panic(err)
}
func strPtr(v string) *string { return &v }
See full details in the Segments API reference.