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:

< !— vale disable —>

< !— vale enable —>

< !— vale Google.Spacing = NO >

< !— vale Google.Spacing = YES >

< !— vale Google.Spacing = NO >

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.

< !— vale Google.Spacing = YES >

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