Go SDK
github.com/philiprehberger/go-webhook-relay-client
Generated client + hand-written signature verifier. View source on GitHub.
Install
shell
go get github.com/philiprehberger/go-webhook-relay-clientSend an event
go
import webhookrelay "github.com/philiprehberger/go-webhook-relay-client"
client := webhookrelay.NewClient(os.Getenv("WEBHOOK_RELAY_KEY"))
event, err := client.Ingest(ctx, webhookrelay.EventCreateInput{
Type: "order.created",
Payload: map[string]any{"orderId": 42},
IdempotencyKey: "order-42-created",
})
if err != nil {
log.Fatal(err)
}
fmt.Println(event["id"])Verify on the receiver
go
import webhookrelay "github.com/philiprehberger/go-webhook-relay-client"
func WebhookHandler(w http.ResponseWriter, r *http.Request) {
body, _ := io.ReadAll(r.Body)
if !webhookrelay.VerifySignature(
os.Getenv("WEBHOOK_SECRET"),
string(body),
r.Header.Get("X-Webhook-Signature"),
0, // default tolerance: 5 minutes
) {
http.Error(w, "bad signature", http.StatusBadRequest)
return
}
// ... handle event
}