How Suprsend identifies a user
SuprSend identifies users with immutable distinct_id
. It’s best to map the same identifier in your DB with distinct_id
in SuprSend. Do not use identifiers that can be changed like email or phone number. You can view synced users by searching distinct_id
on Users page.
Create User
To create a new user or to update an existing user, you’ll have to fetch user instance. Call supr_client.user.get_instance
to instantiate user object.
user := suprClient.Users.GetInstance("_distinct_id_") // Unique identifier of user in your application
// Save user
_, err = user.Save()
if err != nil {
log.Fatalln(err)
}
Edit User
To Edit user, you need to first fetch user instance, call all the update methods and save changes using users.Save()
method.
func main() {
// Fetch user instance
user := suprClient.Users.GetEditInstance("_distinct_id_")
// Call user update methods
user.SetTimezone("America/Los_Angeles")
user.Set("name", "John Doe")
// Save Changes
res, err := user.Save()
if err != nil {
log.Fatalln(err)
}
fmt.Println(res)
}
Here’s a list of all edit methods:
After calling Add/Remove/Unset
methods, don’t forget to call user.Save()
since user edit is async update and the changes will be sent to SuprSend only after calling this method.
Bulk Update Users
There isn’t any limit on number-of-records that can be added to bulk_users
instance.
Use .Append()
on bulk_users instance to add however-many-records to call in bulk.
// create bulkUsers instance
bulkIns := suprClient.BulkUsers.NewInstance()
// Prepare user1
user1 := suprClient.Users.GetInstance("__distinct_id1__")
user1.AddEmail("user1@example.com")
user1.AddWhatsapp("+1909090900")
// prepare user 2
user2 := suprClient.Users.GetInstance("__distinct_id2__")
user2.AddEmail("user2@example.com")
user2.AddWhatsapp("+2909090900")
// Append all users to bulk instance
bulkIns.Append(user1, user2)
// Call save
bulkResponse, err := bulkIns.Save()
if err != nil {
log.Fatalln(err)
}
log.Println(bulkResponse)
Get User Details
func main() {
// Fetch user instance
res, err := suprClient.Users.Get("_distinct_id_")
if err != nil {
log.Fatalln(err)
}
fmt.Println(res)
}
Delete User
func main() {
// Delete user instance
res, err := suprClient.Users.Delete("_distinct_id_")
if err != nil {
log.Fatalln(err)
}
fmt.Println(res)
}
Get list of objects subscribed by user
You can pass optional query parameters -limit
, before
, after
func main() {
// Get objects the user is subscribed to
params := map[string]interface{}{
"after": "01JJW6HXXXXPB59ARDW85G0KN",
"limit": 1,
}
res, err := suprClient.Users.GetObjectsSubscribedTo("_distinct_id_", params)
if err != nil {
log.Fatalln(err)
}
fmt.Println(res)
}
Get lists subscribed by user
You can pass optional query parameters -limit
, before
, after
func main() {
// Get lists the user is subscribed to
params := map[string]interface{}{
"after": "01JJW6HXXXXPB59ARDW85G0KN",
"limit": 1,
}
res, err := suprClient.Users.GetListsSubscribedTo("_distinct_id_", params)
if err != nil {
log.Fatalln(err)
}
fmt.Println(res)
}