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 mainimport ("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_KEYin server-side environment variables. - Use the incoming request context where available so sends can respect request cancellation.
- Log structured
*parcelwing.Errorfields for support and debugging.