> ## 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.

# Segments

> Create and manage segments with the MailGlyph Go SDK.

Use a **secret key** client for segments 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 segments (`Segments.List`)

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

println(len(segments))
```

## Create a segment (`Segments.Create`)

```go theme={null}
trackMembership := true

segment, err := client.Segments.Create(ctx, &mailglyph.CreateSegmentParams{
  Name: "Premium users",
  Description: strPtr("Users on paid plans"),
  Condition: &mailglyph.FilterCondition{
    Logic: "AND",
    Groups: []mailglyph.FilterGroup{
      {
        Filters: []mailglyph.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`)

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

println(existing.Name)
```

## Update a segment (`Segments.Update`)

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

println(updated.Name)
```

## List segment contacts (`Segments.ListContacts`)

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

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

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

## Delete a segment (`Segments.Delete`)

```go theme={null}
if err := client.Segments.Delete(ctx, segment.ID); err != nil {
  panic(err)
}
```

```go theme={null}
func strPtr(v string) *string { return &v }
```

See full details in the [Segments API reference](https://docs.mailglyph.com/api-reference/segments/listSegments.md).


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