The Lists SDK methods lets you create / manage list of subscribers. You can then send broadcast to all the users in the list or create a workflow that triggers when a new user enters / exits list.
Create / Update List
You can use suprClient.SubscriberLists.Create
method to create a new list
package main
import (
"context"
"log"
suprsend "github.com/suprsend/suprsend-go"
)
func main() {
// Initialize SDK
opts := []suprsend.ClientOption{
// suprsend.WithDebug(true),
}
suprClient, err := suprsend.NewClient("__api_key__", "__api_secret__", opts...)
if err != nil {
log.Println(err)
}
ctx := context.Background()
// ================= Create subscriber list
subscriberListCreated, err := suprClient.SubscriberLists.Create(ctx, &suprsend.SubscriberListCreateInput{
ListId: "prepaid-users", // max length 64 characters
ListName: "Users With Prepaid Vouchers",
ListDescription: "Users With Prepaid Vouchers above $250",
})
if err != nil {
log.Fatalln(err)
}
log.Println(subscriberListCreated)
}
Guidelines on defining the list_id
list_id
is case-insensitive. Suprsend first converts list_id to lowercase before storing it or doing any sort of comparison on it.
list_id
can be of max 64 characters.
- It can contain characters [a-z0-9_-] that is alphanumeric characters, _(underscore) and -(hyphen).
Get list data
You can get the latest information of a list using suprClient.SubscriberLists.Get
method.
subscriberListData, err := suprClient.SubscriberLists.Get(ctx, "_list_id_")
Get all lists
To get the data of all the lists created in your workspace, use suprClient.SubscriberLists.GetAll
method
allSubscriberList, err := suprClient.SubscriberLists.GetAll(ctx, &suprsend.SubscriberListAllOptions) // default limit 20
allSubscriberList, err := suprClient.SubscriberLists.GetAll(ctx, &suprsend.SubscriberListAllOptions{Limit: 10, Offset: 0}) // max limit 1000
Add Subscribers to the list
Use suprClient.SubscriberLists.Add
to add list subscribers. There is no limit to the number of subscribers that you can add to a list.
addDistinctIds := []string{"distinct_id_1", "distinct_id_2"}
addResponse, err := suprClient.SubscriberLists.Add(ctx, "users-with-prepaid-vouchers-1", addDistinctIds)
if err != nil {
log.Fatalln(err)
}
log.Println(addResponse)
Remove Subscribers from the list
removeDistinctIds := []string{"distinct_id_1", "distinct_id_2"}
removeResponse, err := suprClient.SubscriberLists.Remove(ctx, "users-with-prepaid-vouchers-1", removeDistinctIds)
if err != nil {
log.Fatalln(err)
}
log.Println(removeResponse)
Delete list
deleteListResp, err := suprClient.SubscriberLists.Delete(ctx, "users-with-prepaid-vouchers-1")
if err != nil {
log.Fatalln(err)
}
log.Println("delete list resp: ", deleteListResp)
Replace users from the list
In case you want to refresh list with a new set of users completely, you can replace users by creating a draft version of the list and updating users in it.
Start Sync to create draft version of the list
This method will create a draft version of the list where you can add the new set of users to replace users.
// start sync
newVersion, err := suprClient.SubscriberLists.StartSync(ctx, "users-with-prepaid-vouchers-1")
if err != nil {
log.Fatalln(err)
}
log.Println("start sync resp: ", newVersion)
versionId := newVersion.VersionId
Add Subscribers to draft list
You can use this method to add subscribers to List draft version created in Step 1. You’ll get version_id
in start sync response.
// ================= Add users to a draft list (with versionId)
addDistinctIds := []string{"id-399999", "id-399998"}
addResponse, err := suprClient.SubscriberLists.AddToVersion(ctx, "users-with-prepaid-vouchers-1", versionId, addDistinctIds)
if err != nil {
log.Fatalln(err)
}
log.Println("add to version resp:", addResponse)
Remove Subscribers from draft list
You can use this method to remove subscribers from List draft version created in Step 1. You’ll get version_id
in start sync response.
// ================= remove users from a list
removeDistinctIds := []string{"distinct_id_1", "distinct_id_2"}
removeResponse, err := suprClient.SubscriberLists.RemoveFromVersion(ctx, "users-with-prepaid-vouchers-1", versionId, removeDistinctIds)
if err != nil {
log.Fatalln(err)
}
log.Println("remove from version resp: ", removeResponse)
Finish Sync to make the draft version live
Once your subscribers are updated in the list, use this method to finish sync and make the draft version updated in above steps live.
// finish sync
finishSyncResp, err := suprClient.SubscriberLists.FinishSync(ctx, "users-with-prepaid-vouchers-1", versionId)
if err != nil {
log.Fatalln(err)
}
log.Println("finish sync resp: ", finishSyncResp)
Delete Draft list
You can also delete draft list if it’s created by mistake.
deleteVersionResp, err := suprClient.SubscriberLists.DeleteVersion(ctx, "users-with-prepaid-vouchers-1", tempListVersion.VersionId)
if err != nil {
log.Fatalln(err)
}
log.Println("delete version resp: ", deleteVersionResp)