Skip to content

Connector · Messaging and email

Discord, in every client’s workflows.

Post a message, edit a message, with the client’s own Discord account.

Triggers
0start a workflow
Actions
2steps in a workflow

Do it in Discord

A step with its own fields: values from the run go in by name, and what Discord answers is there for the next step.

  • Post a messagePost to the channel the webhook belongs to.
  • Edit a messageChange a message this webhook posted, in place. Its name and picture stay as they were.

Connect the client’s Discord

On the client’s page in Thrum: Add credential, type Discord webhook URL.

In the client’s Discord server: Server Settings → Integrations → Webhooks → New Webhook → pick the channel → Copy Webhook URL.

The key is stored encrypted and bound to that client: another client’s workflow cannot use it, and no template or pack copies it.

Discord’s API documentation

Via HTTP

Or by web request: post a message to a channel

For clients who run their team, or their community, in a Discord server. The web request step, filled in: paste it, swap in the client’s ids, add their key.

  1. 01

    Add the client’s credential

    On the client’s page in Thrum: Add credential, type Webhook URL. In the client’s server: Server Settings → Integrations → Webhooks → New Webhook → pick the channel → Copy Webhook URL.

    {
      "url": "https://discord.com/api/webhooks/…/…"
    }
  2. 02

    Add a web request step

    Name it “Post to Discord”, set it as here, and pick the credential. Values in double braces are read from the run: here, the lead the form brought in.

    {
      "method": "POST",
      "url": "{{ credential.url }}?wait=true",
      "body": {
        "content": "New lead: {{ lead.name }}, {{ lead.phone }}. {{ lead.summary }}",
        "username": "Leads"
      }
    }
  3. 03

    What goes out, and what comes back

    `?wait=true` makes Discord answer with the message it posted; without it the answer is an empty 204.

    POST https://discord.com/api/webhooks/1234567890/abcDEF_ghi-123?wait=true
    content-type: application/json
    
    {
      "content": "New lead: Nadia Karim, +447700900222. Quote for a new bathroom, two basins and a shower",
      "username": "Leads"
    }
    200
    {
      "id": "1290000000000000001",
      "type": 0,
      "channel_id": "1280000000000000001",
      "content": "New lead: Nadia Karim, +447700900222. Quote for a new bathroom, two basins and a shower",
      "webhook_id": "1234567890"
    }

Watched like everything else

When Discord stops answering or refuses the client’s key, you hear about it, and your client does not.

A failing request
Tried 3 times, 5 seconds apart and doubling, only for errors a retry can fix
A service that asks for a pause
Given it, up to an hour
Requests at once, per account
2, per worker; the rest wait their turn
Timeout
15 seconds, unless the step sets its own
Private and internal addresses
Refused, on every redirect too
The client’s key
Encrypted, bound to the client, and kept out of every run record
A step that keeps failing
Marks the workflow Degraded and alerts you, not the client

Discord and its logo are trademarks of their owner, used here only to say what Thrum works with; no endorsement is implied.

Thrum is cooking.

Get early access and you’ll be among the first in. Early members get a launch perk.