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

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

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

List contacts (Contacts.List)

Use cursor pagination for large lists:
limit := 50
subscribed := true
search := "john"

page1, err := client.Contacts.List(ctx, &mailrify.ListContactsParams{
  Limit: &limit,
  Subscribed: &subscribed,
  Search: &search,
})
if err != nil {
  panic(err)
}

println(len(page1.Contacts), page1.HasMore)
Fetch the next page with Cursor:
if page1.HasMore && page1.Cursor != nil {
  page2, err := client.Contacts.List(ctx, &mailrify.ListContactsParams{
    Limit: &limit,
    Cursor: page1.Cursor,
  })
  if err != nil {
    panic(err)
  }

  println(len(page2.Contacts))
}

Create a contact (Contacts.Create)

subscribed := true

created, err := client.Contacts.Create(ctx, &mailrify.CreateContactParams{
  Email: "[email protected]",
  Subscribed: &subscribed,
  Data: map[string]interface{}{
    "firstName": "John",
    "plan": "premium",
  },
})
if err != nil {
  panic(err)
}

println(created.ID, created.Meta.IsNew, created.Meta.IsUpdate)

Get one contact (Contacts.Get)

contact, err := client.Contacts.Get(ctx, created.ID)
if err != nil {
  panic(err)
}

println(contact.Email, contact.Subscribed)

Update a contact (Contacts.Update)

Update subscription status

unsubscribed := false

updated, err := client.Contacts.Update(ctx, created.ID, &mailrify.UpdateContactParams{
  Subscribed: &unsubscribed,
})
if err != nil {
  panic(err)
}

println(updated.Subscribed)

Update custom data

updated, err := client.Contacts.Update(ctx, created.ID, &mailrify.UpdateContactParams{
  Data: map[string]interface{}{
    "plan": "pro",
  },
})
if err != nil {
  panic(err)
}

println(updated.Data["plan"] == "pro")

Count contacts (Contacts.Count)

count, err := client.Contacts.Count(ctx, nil)
if err != nil {
  panic(err)
}

subscribedOnly := true
subscribedCount, err := client.Contacts.Count(ctx, &mailrify.ListContactsParams{
  Subscribed: &subscribedOnly,
})
if err != nil {
  panic(err)
}

println(count, subscribedCount)

Delete a contact (Contacts.Delete)

if err := client.Contacts.Delete(ctx, created.ID); err != nil {
  panic(err)
}
See full details in the Contacts API reference.