Categorygithub.com/tilebox/loops-go
repositorypackage
0.0.0-20250303150439-0d5192d4b5ba
Repository: https://github.com/tilebox/loops-go.git
Documentation: pkg.go.dev

# Packages

No description provided by the author

# README

Loops GO SDK

Introduction

A Go SDK for interacting with Loops's API.

Installation

go get github.com/tilebox/loops-go

Usage

Below are a few examples of how to use the SDK to send API requests. For some full, working examples, see the examples directory.

Create a client:

package main

import (
	"context"
	"github.com/tilebox/loops-go"
	"log/slog"
)

func main() {
	ctx := context.Background()
	client, err := loops.NewClient(loops.WithAPIKey("YOUR_LOOPS_API_KEY"))
	if err != nil {
		slog.Error("failed to create client", slog.Any("error", err.Error()))
		return
	}
	
	// now use the client to make requests
}

Contacts

Find a contact

contact, err := client.FindContact(ctx, &loops.ContactIdentifier{
    Email: loops.String("[email protected]"),
})
if err != nil {
    slog.Error("failed to find contact", slog.Any("error", err.Error()))
    return
}

Create a contact

contactID, err := client.CreateContact(ctx, &loops.Contact{
    Email:      "[email protected]",
    FirstName:  loops.String("Neil"),
    LastName:   loops.String("Armstrong"),
    UserGroup:  loops.String("Astronauts"),
    Subscribed: true,
    // custom user defined properties for contacts
    CustomProperties: map[string]interface{}{
        "role": "Astronaut",
    },
})
if err != nil {
    slog.Error("failed to create contact", slog.Any("error", err.Error()))
    return
}

Delete a contact

err = client.DeleteContact(ctx, &loops.ContactIdentifier{
    Email: loops.String("[email protected]"),
})
if err != nil {
    slog.Error("failed to delete contact", slog.Any("error", err.Error()))
    return
}

Events

Send an event

err = client.SendEvent(ctx, &loops.Event{
    Email:     loops.String("[email protected]"),
    EventName: "joinedMission",
    EventProperties: &map[string]interface{}{
        "mission": "Apollo 11",
    },
})
if err != nil {
    slog.Error("failed to send event", slog.Any("error", err.Error()))
    return
}

Transactional emails

Send a transactional email

err = client.SendTransactionalEmail(ctx, &loops.TransactionalEmail{
    TransactionalId: "cm...",
    Email:           "[email protected]",
    DataVariables: &map[string]interface{}{
        "name": "Recipient Name",
    },
})
if err != nil {
    slog.Error("failed to send transactional email", slog.Any("error", err.Error()))
    return
}

API Documentation

The API documentation is part of the official Loops Documentation and can be found here.

Contributing

Contributions are welcome! Especially if the loops API is updated, please feel free to open PRs for new or updated endpoints.

Authors

Created by Tilebox - The Solar System’s #1 developer tool for space data management.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Development

Testing

go test ./...

Linting

golangci-lint run --fix  ./...