diff --git a/modules/markup/markdown/markdown.go b/modules/markup/markdown/markdown.go
index 2b19e0f1c9..12be3e1c24 100644
--- a/modules/markup/markdown/markdown.go
+++ b/modules/markup/markdown/markdown.go
@@ -116,6 +116,7 @@ func SpecializedMarkdown() goldmark.Markdown {
 				math.NewExtension(
 					math.Enabled(setting.Markdown.EnableMath),
 				),
+				NewIfcURLExtension(),
 			),
 			goldmark.WithParserOptions(
 				parser.WithAttribute(),
diff --git a/modules/setting/markup.go b/modules/setting/markup.go
index 4ab9e7b2d1..862852381e 100644
--- a/modules/setting/markup.go
+++ b/modules/setting/markup.go
@@ -59,8 +59,15 @@ type MarkupSanitizerRule struct {
 	AllowDataURIImages bool
 }
 
+// IfcURL holds configuration for the ifcurl preview service integration.
+var IfcURL = struct {
+	PreviewServiceURL string `ini:"PREVIEW_SERVICE_URL"`
+	ServiceToken      string `ini:"SERVICE_TOKEN"`
+}{}
+
 func loadMarkupFrom(rootCfg ConfigProvider) {
 	mustMapSetting(rootCfg, "markdown", &Markdown)
+	mustMapSetting(rootCfg, "ifcurl", &IfcURL)
 
 	MermaidMaxSourceCharacters = rootCfg.Section("markup").Key("MERMAID_MAX_SOURCE_CHARACTERS").MustInt(50000)
 	FilePreviewMaxLines = rootCfg.Section("markup").Key("FILEPREVIEW_MAX_LINES").MustInt(50)
