Skip to main content
Contacts are automatically created when you send messages. You can retrieve and update contact information.

Get Contact

result, err := client.Contacts.Get(context.TODO(), "con_abc123")
if err != nil {
	panic(err)
}

fmt.Println(result.ID)
fmt.Println(result.PhoneNumber)
fmt.Println(result.CountryCode)
fmt.Println(result.AvailableChannels)
fmt.Println(result.DefaultChannel)

Get Contact by Phone

result, err := client.Contacts.GetByPhone(context.TODO(), "+14155551234")
if err != nil {
	panic(err)
}

fmt.Println(result.ID)
fmt.Println(result.AvailableChannels) // ["sms", "whatsapp"]

Update Contact

result, err := client.Contacts.Update(context.TODO(), "con_abc123", zavudev.ContactUpdateParams{
	DefaultChannel: zavudev.String("whatsapp"),
	Metadata: map[string]string{
		"name": "John Doe",
		"tier": "premium",
	},
})

List Contacts

result, err := client.Contacts.List(context.TODO(), zavudev.ContactListParams{
	Limit: zavudev.Int(50),
})
if err != nil {
	panic(err)
}

for _, contact := range result.Items {
	fmt.Println(contact.ID, contact.PhoneNumber)
}

// Filter by phone number
result, err := client.Contacts.List(context.TODO(), zavudev.ContactListParams{
	PhoneNumber: zavudev.String("+1415"),
})

// Pagination
var cursor *string
for {
	result, err := client.Contacts.List(context.TODO(), zavudev.ContactListParams{
		Cursor: cursor,
		Limit:  zavudev.Int(50),
	})
	if err != nil {
		panic(err)
	}

	for _, contact := range result.Items {
		fmt.Println(contact.ID)
	}

	if result.NextCursor == nil {
		break
	}
	cursor = result.NextCursor
}

Phone Introspection

Validate a phone number and check available channels:
result, err := client.Introspect.Phone(context.TODO(), zavudev.PhoneIntrospectionParams{
	PhoneNumber: zavudev.String("+14155551234"),
})
if err != nil {
	panic(err)
}

fmt.Println(result.ValidNumber)      // true
fmt.Println(result.CountryCode)      // "US"
fmt.Println(result.NationalFormat)   // "(415) 555-1234"
fmt.Println(result.LineType)         // "mobile"
fmt.Println(result.AvailableChannels) // ["sms", "whatsapp"]
if result.Carrier != nil {
	fmt.Println(result.Carrier.Name) // "Verizon Wireless"
}