diff --git a/bridge/config/config.go b/bridge/config/config.go
index 246d6b82..6244dd6a 100644
--- a/bridge/config/config.go
+++ b/bridge/config/config.go
@@ -77,6 +77,7 @@ type Protocol struct {
 	UseSASL                bool   // IRC
 	UseTLS                 bool   // IRC
 	UseFirstName           bool   // telegram
+	WebhookURL	       string // discord
 }
 
 type ChannelOptions struct {
diff --git a/bridge/discord/discord.go b/bridge/discord/discord.go
index 8c7d9711..e03aaa4d 100644
--- a/bridge/discord/discord.go
+++ b/bridge/discord/discord.go
@@ -19,6 +19,8 @@ type bdiscord struct {
 	UseChannelID  bool
 	userMemberMap map[string]*discordgo.Member
 	guildID       string
+	webhookID     string
+	webhookToken  string
 	sync.RWMutex
 }
 
@@ -35,6 +37,12 @@ func New(cfg config.Protocol, account string, c chan config.Message) *bdiscord {
 	b.Remote = c
 	b.Account = account
 	b.userMemberMap = make(map[string]*discordgo.Member)
+	if b.Config.WebhookURL != "" {
+		flog.Debug("Configuring Discord Incoming Webhook")
+		webhookURLSplit := strings.Split(b.Config.WebhookURL, "/")
+		b.webhookToken = webhookURLSplit[len(webhookURLSplit)-1]
+		b.webhookID = webhookURLSplit[len(webhookURLSplit)-2]
+	}
 	return b
 }
 
@@ -101,7 +109,21 @@ func (b *bdiscord) Send(msg config.Message) error {
 		flog.Errorf("Could not find channelID for %v", msg.Channel)
 		return nil
 	}
-	b.c.ChannelMessageSend(channelID, msg.Username+msg.Text)
+	if b.Config.WebhookURL == ""{
+		flog.Debugf("Broadcasting using API")
+		b.c.ChannelMessageSend(channelID, msg.Username+msg.Text)
+	} else {
+		flog.Debugf("Broadcasting using Webhook")
+		b.c.WebhookExecute(
+			b.webhookID,
+			b.webhookToken,
+			true,
+			&discordgo.WebhookParams{
+				Content: msg.Text,
+				Username: msg.Username,
+				AvatarURL: msg.Avatar,
+		})
+	}
 	return nil
 }
 
@@ -122,6 +144,10 @@ func (b *bdiscord) messageCreate(s *discordgo.Session, m *discordgo.MessageCreat
 	if m.Author.Username == b.Nick {
 		return
 	}
+	// if using webhooks, do not relay if it's ours
+	if b.Config.WebhookURL != "" && m.Author.Bot && m.Author.ID == b.webhookID {
+		return
+	}
 	if len(m.Attachments) > 0 {
 		for _, attach := range m.Attachments {
 			m.Content = m.Content + "\n" + attach.URL
diff --git a/matterbridge.toml.sample b/matterbridge.toml.sample
index 53a584aa..a5c523bf 100644
--- a/matterbridge.toml.sample
+++ b/matterbridge.toml.sample
@@ -454,6 +454,10 @@ Server="yourservername"
 #OPTIONAL (default false)
 ShowEmbeds=false
 
+#Specify WebhookURL. If given, will relay messages using the Webhook, which gives a better look to messages.
+#OPTIONAL (default empty)
+WebhookURL="Yourwebhooktokenhere"
+
 #Disable sending of edits to other bridges
 #OPTIONAL (default false)
 EditDisable=false