Skip to content

Getting started

As a package

Using shoutrrr is easy! There is currently two ways of using it as a package.

Using the direct send command

Easiest to use, but very limited.

url := "slack://token-a/token-b/token-c"
err := shoutrrr.Send(url, "Hello world (or slack channel) !")

Using a sender

Using a sender gives you the ability to preconfigure multiple notification services and send to all of them with the same Send(message, params) method.

urlA := "slack://token-a/token-b/token-c"
urlB := "telegram://110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw@telegram?channels=@mychannel"
sender, err := shoutrrr.CreateSender(urlA, urlB)

// Send notifications instantly to all services
sender.Send("Hello world (or slack/telegram channel)!", map[string]string { "title": "He-hey~!"  })

// ...or bundle notifications... 
func doWork() error {
    // ...and send them when leaving the scope
    defer sender.Flush(map[string]string { "title": "Work Result" })

    sender.Enqueue("Started doing %v", stuff)

    // Maybe get creative...?
    defer func(start time.Time) { 
        sender.Enqueue("Elapsed: %v", time.Now().Sub(start)) 

    if err := doMoreWork(); err != nil {
        sender.Enqueue("Oh no! %v", err)

        // This will send the currently queued up messages...

    sender.Enqueue("Everything went very well!")

    // ...or this:

Through the CLI

Start by running the script. You may then run the shoutrrr executable:

$ ./shoutrrr

./shoutrrr <ActionVerb> [...]
Possible actions: send, verify, generate

On a system with Go installed you can install the latest Shoutrrr CLI command with:

go install



Send a notification using the supplied notification service url.

$ shoutrrr send \
    --url "<SERVICE_URL>" \
    --message "<MESSAGE BODY>"


Verify the validity of a notification service url.

$ shoutrrr verify \
    --url "<SERVICE_URL>"


Generate and display the configuration for a notification service url.

$ shoutrrr generate [OPTIONS] <SERVICE>
Flags Description
-g, --generator string The generator to use (default "basic")
-p, --property stringArray Configuration property in key=value format
-s, --service string The notification service to generate a URL for

Note: Service can either be supplied as the first argument or using the -s flag.

For more information on generators, see Generators.



Enables debug output from the CLI.

Flags Env. Default Required
--debug, -d SHOUTRRR_DEBUG false


The target url for the notifications generated, see overview.

Flags Env. Default Required
--url, -u SHOUTRRR_URL N/A

From a GitHub Actions workflow

You can also use Shoutrrr from a GitHub Actions workflow.

See this example and the action on GitHub Marketplace:

name: Deploy
      - main

    runs-on: ubuntu-latest
      - name: Some other steps needed for deploying
        run: ...
      - name: Shoutrrr
        uses: containrrr/shoutrrr-action@v1
          url: ${{ secrets.SHOUTRRR_URL }}
          title: Deployed ${{ github.sha }}
          message: See changes at ${{ }}.