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 -limitbeforeafter

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 -limitbeforeafter

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)
}