Sign inGet Started

Go SDK

Send email with Fiber

Use Parcel Wing from Fiber routes with JSON request parsing.

Install the SDK

The official Go SDK is published as github.com/parcelwing/parcelwing-go.

Terminal

go get github.com/parcelwing/parcelwing-go

Fiber route

Create the Parcel Wing client during server startup, then reuse it from trusted server-side handlers.

main.go

package main
 
import (
"os"
 
"github.com/gofiber/fiber/v2"
parcelwing "github.com/parcelwing/parcelwing-go"
)
 
func main() {
client, err := parcelwing.New(os.Getenv("PARCELWING_API_KEY"))
if err != nil {
panic(err)
}
 
app := fiber.New()
app.Post("/send-welcome", func(c *fiber.Ctx) error {
payload := map[string]string{}
if err := c.BodyParser(&payload); err != nil {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "invalid json"})
}
 
emails, err := client.Emails.Send(c.UserContext(), parcelwing.EmailSendRequest{
From: os.Getenv("PARCELWING_FROM_EMAIL"),
To: payload["email"],
TemplateAlias: "welcome",
TemplateParams: map[string]any{"first_name": payload["first_name"]},
})
if err != nil {
return c.Status(fiber.StatusBadGateway).JSON(fiber.Map{"error": err.Error()})
}
 
return c.JSON(fiber.Map{"id": emails[0].ID})
})
 
app.Listen(":8080")
}

Production notes

  • Keep PARCELWING_API_KEY in server-side environment variables.
  • Use the incoming request context where available so sends can respect request cancellation.
  • Log structured *parcelwing.Error fields for support and debugging.