Skip to content
send

GitHub Action

Send Discord Webhook

v6.0.2 Latest version

Send Discord Webhook

send

Send Discord Webhook

Send Discord webhook

Installation

Copy and paste the following snippet into your .yml file.

              

- name: Send Discord Webhook

uses: hugoalh/send-discord-webhook-ghaction@v6.0.2

Learn more about this action in hugoalh/send-discord-webhook-ghaction

Choose a version

🌐 English / 漢語


Send Discord Webhook (GitHub Action)

⚖️ MIT

GitHub: hugoalh/send-discord-webhook-ghaction

A GitHub Action to send Discord webhook.

Important

This documentation is v6.0.0 based; To view other version's documentation, please visit the versions list and select the correct version.

🌟 Features

  • Support attachments/files.
  • Support thread.

🔰 Begin

🎯 Targets

GitHub
GitHub Actions Runner - GitHub Hosted Linux 💽 ✔️
GitHub Actions Runner - GitHub Hosted macOS 💽 ✔️
GitHub Actions Runner - GitHub Hosted Windows 💽 ✔️
GitHub Actions Runner - Self Hosted Linux 💽 ✔️
GitHub Actions Runner - Self Hosted macOS 💽 ✔️
GitHub Actions Runner - Self Hosted Windows 💽 ✔️

💽 Softwares

  • NodeJS ^ v20.9.0

Note

It is possible to use this action in other methods/ways which not listed in here, however it is not officially supported.

#️⃣ Registries Identifier

  • GitHub:
    hugoalh/send-discord-webhook-ghaction
    

Note

It is recommended to use this action with tag for immutability.

🛡️ Permissions

This action does not require any permission.

🧩 Inputs

Legend Description
🔐 Should be an encrypted secret.

key

🔐 <string> Key; Both long and short forms are acceptable.

https://discord.com/api/webhooks/70971114/ueyzeWxB_8bb1zMhL  ⬅Long
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^  ⬅Short

https://discordapp.com/api/webhooks/70971114/ueyzeWxB_8bb1zMhL  ⬅Long (Legacy)
                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^  ⬅Short (Legacy)

content

[Optional] <string> Content of the message, up to 2000 characters; Support Discord Markdown.

Important

At least either inputs of content, embeds, or files must be provided.

content_links_no_embed

[Optional] <RegExp[]> Specify links in the content to prevent Discord resolve and display as embed under the message, only supports HTTP and HTTPS, separate each value per line.

  • All: .+
  • .png Image: \.png(?:\?|#|$)
  • .webp Image: \.webp(?:\?|#|$)
  • Twitch: twitch\.tv

username

[Optional] <string> Override the default username of the webhook, up to 80 characters; "Clyde" is not allowed.

avatar_url

[Optional] <string> Override the default avatar of the webhook with source URL, only supports HTTP and HTTPS.

tts

[Optional] <boolean = false> Whether to use TTS (Text To Speech) for the message.

embeds

[Optional] <object[]> Embed rich content for the message, by JSON or YAML with restricted format and pattern, up to 10 embeds and 6000 characters for summation from inputs:

Important

At least either inputs of content, embeds, or files must be provided.

embeds[*].title

[Optional] <string> Title of the embed, up to 256 characters; Support Discord Markdown.

embeds[*].description

[Optional] <string> Description of the embed, up to 4096 characters; Support Discord Markdown.

embeds[*].url

[Optional] <string> URL of the embed.

embeds[*].timestamp

[Optional] <string> Timestamp of the embed, by ISO 8601 format (e.g.: "2011-11-11T11:11:11Z").

embeds[*].color

[Optional] <number | string = 2105893> Color of the embed (i.e.: left border's color of the embed); RGB integer, Hex (with prefix # (sharp)), namespace, and CSS colors (e.g.: "rgb(32, 34, 37)") forms are acceptable.

Exclusive namespace:

Namespace Value Description
"Default" "#202225" / "rgb(32, 34, 37)" Default.
🍭 "Random" Random.
"Discord Blurple" "#5865F2" / "rgb(88, 101, 242)" Discord blurple.
"Discord Fuchsia" "#EB459E" / "rgb(254, 231, 92)" Discord fuchsia.
"Discord Green" "#57F287" / "rgb(87, 242, 135)" Discord green.
"Discord Red" "#ED4245" / "rgb(237, 66, 69)" Discord red.
"Discord Yellow" "#FEE75C" / "rgb(254, 231, 92)" Discord yellow.
"Embed Background Dark" "#2F3136" / "rgb(47, 49, 54)" Embed background in dark mode.

Important

  • Alpha channel is not supported.
  • General namespace are provided by meodai/color-names, maybe change and/or remove without any notification, it is recommended to use value instead except you want a random color.

embeds[*].footer

[Optional] <object> Footer of the embed.

embeds[*].footer.text

[Optional] <string> Footer text, up to 2048 characters; Support Discord Markdown.

embeds[*].footer.icon_url

[Optional] <string> Source URL of the footer icon, only supports HTTP, HTTPS, and attachments.

embeds[*].image

[Optional] <object> Image of the embed.

embeds[*].image.url

[Optional] <string> Source URL of the image, only supports HTTP, HTTPS, and attachments.

embeds[*].thumbnail

[Optional] <object> Thumbnail of the embed.

embeds[*].thumbnail.url

[Optional] <string> Source URL of the thumbnail, only supports HTTP, HTTPS, and attachments.

embeds[*].author

[Optional] <object> Author of the embed.

embeds[*].author.name

[Optional] <string> Author name, up to 256 characters.

embeds[*].author.url

[Optional] <string> Author URL.

embeds[*].author.icon_url

[Optional] <string> Source URL of the author icon, only supports HTTP, HTTPS, and attachments.

embeds[*].fields

[Optional] <object[]> Fields of the embed, up to 25 fields.

embeds[*].fields[*].name

[Optional] <string> Field name, up to 256 characters; Support Discord Markdown.

embeds[*].fields[*].value

[Optional] <string> Field value, up to 1024 characters; Support Discord Markdown.

embeds[*].fields[*].inline

[Optional] <boolean = false> Whether the field should display inline.

allowed_mentions_parse

[Optional] <string[] = "roles,users,everyone"> Allowed mention types to parse from the content, separate each value with comma (,), vertical bar (|), semi-colon (;), whitespace, or per line.

  • "roles": Control roles mentions.
  • "users": Control users mentions.
  • "everyone": Control @everyone and @here mentions.

allowed_mentions_roles

[Optional] <string[]> Allowed roles' IDs to mention, separate each value with comma (,), vertical bar (|), semi-colon (;), whitespace, or per line, up to 100 IDs.

allowed_mentions_users

[Optional] <string[]> Allowed users' IDs to mention, separate each value with comma (,), vertical bar (|), semi-colon (;), whitespace, or per line, up to 100 IDs.

files

[Optional] <string[]> Files as attachments of the message, separate each value per line, up to 8 MB and 10 files.

Important

At least either inputs of content, embeds, or files must be provided.

wait

[Optional] <boolean = true> Whether to wait for Discord confirmation of message send before response, and returns the created message body. When this input is false, a message that is not saved does not return an error.

thread_id

[Optional] <string> Thread ID for the message channel. When this input is defined, the message will send to the specify thread, the thread will automatically unarchive.

Important

Only either inputs of thread_id or thread_name can be provided.

thread_name

[Optional] <string> Thread name for the forum channel, up to 100 characters. When this input is defined, the message will create a new thread with the name.

Important

Only either inputs of thread_id or thread_name can be provided.

truncate_enable

[Optional] <boolean = true> Whether to try truncate firstly when inputs are too large.

truncate_ellipsis

[Optional] <string = "..."> Ellipsis mark.

truncate_position

[Optional] <string = "end"> Ellipsis position.

  • "end": At the end of the string.
  • "middle": At the middle of the string.
  • "start": At the start of the string.

🧩 Outputs

response

<string> Response content.

status_code

<number> Request status code.

status_ok

<boolean> Whether the request was successful.

status_text

<string> Request status text.

✍️ Examples

  • Hello, world!
    jobs:
      job_id:
        name: "Send Discord Webhook"
        runs-on: "ubuntu-latest"
        steps:
          - uses: "hugoalh/send-discord-webhook-ghaction@v6.0.0"
            with:
              key: "${{secrets.DISCORD_WEBHOOK_KEY}}"
              content: "Hello, world!"
  • birdie0 (from birdie0's Discord Webhooks Guide)
    jobs:
      job_id:
        name: "Send Discord Webhook"
        runs-on: "ubuntu-latest"
        steps:
          - uses: "hugoalh/send-discord-webhook-ghaction@v6.0.0"
            with:
              key: "${{secrets.DISCORD_WEBHOOK_KEY}}"
              content: "Text message. Up to 2000 characters."
              username: "Webhook"
              avatar_url: "https://i.imgur.com/4M34hi2.png"
              embeds: |
                [
                  {
                    "author": {
                      "name": "Birdie♫",
                      "url": "https://www.reddit.com/r/cats/",
                      "icon_url": "https://i.imgur.com/R66g1Pe.jpg"
                    },
                    "title": "Title",
                    "url": "https://google.com/",
                    "description": "Text message. You can use Markdown here. *Italic* **bold** __underline__ ~~strikeout~~ [hyperlink](https://google.com) `code`",
                    "color": 15258703,
                    "fields": [
                      {
                        "name": "Text",
                        "value": "More text",
                        "inline": true
                      },
                      {
                        "name": "Even more text",
                        "value": "Yup",
                        "inline": true
                      },
                      {
                        "name": "Use `\"inline\": true` parameter, if you want to display fields in the same line.",
                        "value": "okay..."
                      },
                      {
                        "name": "Thanks!",
                        "value": "You're welcome :wink:"
                      }
                    ],
                    "thumbnail": {
                      "url": "https://upload.wikimedia.org/wikipedia/commons/3/38/4-Nature-Wallpapers-2014-1_ukaavUI.jpg"
                    },
                    "image": {
                      "url": "https://upload.wikimedia.org/wikipedia/commons/5/5a/A_picture_from_China_every_day_108.jpg"
                    },
                    "footer": {
                      "text": "Woah! So cool! :smirk:",
                      "icon_url": "https://i.imgur.com/fKL31aD.jpg"
                    }
                  }
                ]
    Example birdie0 Result

📚 Guides