Creating a link to start a new topic with pre-filled information

:bookmark: This documentation explains how to create a link that starts a new topic in Discourse with pre-filled information.

:person_raising_hand: Required user level: All users

Sometimes you may want to provide users with a link that opens a new topic composer with certain information pre-filled. This can be useful for various use cases including bug report templates, feature requests, or standardized posts.

Constructing the URL

Base URL

To compose a new pre-filled topic with no extra information, you append /new-topic to your site URL, like so:

https://discourse.example.com/new-topic

Clicking on this will open up a blank new topic composer for any logged-in user (if not logged-in, you’ll be prompted to signin/signup before then opening the composer).

Additional Parameters

While a link to open a blank composer can sometimes be useful, the main strength of this feature is the ability to pre-fill the composer with extra information.

To do this, you can add parameters to the base URL:

https://discourse.example.com/new-topic?title=topic%20title&body=topic%20body&category=category/subcategory&tags=email,planned

This will open a composer window pre-filled with topic title, body, category and tags.

Breaking down the link / URL to show the available options, we have:

  • Base URL: https://discourse.example.com/new-topic
  • The ? URL operator to add the different options
  • Topic title: title=topic%20title
  • The &, used each time when including another parameter
  • Body: body=topic%20body
  • The category and subcategory separated by a slash / if you want to include them: category=category/subcategory
  • The tags separated by comma(s) , if you want to include multiple tags: tags=email,planned

Each of the parameters is optional and can be mix and matched depending on your desired end result.

As an alternative to using the category/subcategory name, you can specify a numeric category_id instead, like:

https://meta.discourse.org/new-topic?title=topic%20title&category_id=3

Example

You can try this here on Meta:

https://meta.discourse.org/new-topic?title=topic%20title&body=topic%20body&category=support/wordpress&tags=wordpress

https://meta.discourse.org/new-topic?title=topic%20title&body=topic%20body&category=support/wordpress&tags=wordpress

:exclamation: Though please don’t actually create the topic :slight_smile: For a more hands-on explore of the feature use our demo site, try.discourse.org

Using a pre-filled URL with Featured Links

This feature also supports Featured Links, provided that the body parameter is not also included.

:information_source: The URL must be URL encoded for the link to work.

For example, to create a topic with the following URL https://www.xkcd.com/556, the link will be:

https://meta.discourse.org/new-topic?title=https%3A%2F%2Fwww.xkcd.com%2F556

Best Practices

  • w3Schools HTML URL Encoding Reference is a good resource to find what text characters are encoded as in the URL. If you have a lot of text to add, there is also a text-to-URL converter in the ‘Try It Yourself’ section.
  • Always URL encode the parameters to avoid issues with special characters.
  • If you’re unsure about the category ID, you can check it by looking at the number in the category URL. (eg. https://meta.discourse.org/c/documentation/using-discourse/126)
  • Test the pre-filled links to ensure they work as expected.

:information_source: It is not currently possibly to have a pre-filled link that opens a composer to reply to a specific topic.

Additional Resources

「いいね!」 89
Start creating a new topic via link?
Link that pre-populates the composer?
Fill in post for user?
What is the best way to integrate member applications?
Open Composer with Prefilled information
Unlisted categories
URL to set up new topic and category, tags
Problem in sso redirection for compose a new pre-filled topic via URL
Pre-filled topics don't recognize subcategories anymore
Topic-specific reply template
Rename @discobot's start new user command
Bookmarklet or chrome extension for posting links to a Discourse
Add one button for topic create with pre-filled content without composer or API?
How Coinbase Uses Discourse to Educate Customers and Improve SEO
Link to New Topic?
Link to create a new topic with parsed values in GET-method data?
[PAID] extra input fields for new topic
How to "replace" +New Topic with a custom button that brings up the composer
Discourse Templates
Create new topic via URL and set tag or category
Wording for private/secure categories
Topic-specific reply template
Topic-specific reply template
How to add a "button" which composes a pre-filled topic
Start a topic by pasting a link (like Reddit)
Link to start a topic with a pre-filled attachment file
How to create a post clicking a link?
Is there any link to open composer (for hyperlink)?
"push" sso users to discourse?
Post commits via webhook inside a topic as reply
Was this Article helpful? Yes or No
Gitter: Post notifications to chat, post transcripts to forum
How to make all users who sign up or accept in invite go to a specifed category(with post composer open)
Category-specific "new topic" email address/url in notification email?
Open new topic composer in a separate window
Onboarding: Discobot, automated messages, other options?
Deep link to new topic or account creation
Alerts that react to the user
Feedback form / reporting bugs
How to have a reply link with pre-filled information?
How do I create a link which opens Create Topic?
Create a link that will open the editor with a specific category and a specific tag
Any Direct URL To New Topic Page?
Creating pre-filled personal message links
URL for "Sign Up" or "Create Topic"?
Link to "Create new topic" and passing tag and category with query var?
Opening a reply window via URL
How do I create a link which opens Create Topic?
Opening a reply window via URL
Prefilled composer link generator
[Solved] In plugin: opening the composer without changing the route
URL to start new post
New Topic Create URL is not working for Subcategory
Create new topic in category with specific tag via URL
Is there a way to make an input form for structured data?
Placeholder Forms
Direct link to composing a comment?
Topic-specific reply template
Creating pre-filled personal message links
Oneboxing not working when starting a topic with pre-filled information
Using topic templates for categories
Impossible to copy heading links
Topic Templates
Have url for creating topic with specific title
Oneboxing not working when starting a topic with pre-filled information
Is there a way to link directly to the editing screen?
Directly linking to new-topic not working when default list filter = no sub categories
Chrome/Firefox extension "Share to discourse"
How to add%{post_url} in customize URL
How to auto set topic title?
How can I create a new topic in Discourse via a link or direct the person to the topic if it exists

ここには多くの技術的な重労働があり、それがこれを凡人には少し受け入れがたいものにしています。人々がこれらのリンクを簡単に生成できる「ヘルパー」ウェブページを作成できると思います。

これに相当するものは、誰かが実装するための気の利いた小さなプロジェクトになるかもしれません。

import urllib

site = 'meta.discourse.org'
title = '''My special checklist'''
category = 'todo'
tags = ['tag1', 'tag2']

template = '''\
# Important!

Do these things:

[ ] thing one
[ ] thing two
'''

query = urllib.parse.urlencode(dict(
    title =    title,
    category = category,
    tags =     ','.join(tags),
    body =     template,
))
print(f'https://{site}/new-topic?{query}')

このリンク を出力します

「いいね!」 4

たぶん* - ドキュメントはウィキだと思っていました :thinking:

「いいね!」 2

これは変更されました

「いいね!」 3

アイデアをありがとうございます!それを見て、Prefilled composer link generator を作成するきっかけになりました。

「いいね!」 5

おお!それは素晴らしい実装のアイデアですね。よくできました!

「いいね!」 4

質問です。

テーマコンポーネントを実装しました。これにはボタンがあり、クリックするとコンテンツとタイトルがあらかじめ入力された新しいトピックのフォームが開きます。次のようにします。

https://www.mydomain.com/new-topic?title=${title}&body=${body}

これはうまく機能し、新しいトピックのフォームが開きますが、続行したくない場合、「破棄」をクリックすると、トピックは破棄されず、代わりに下書きとして保存されます…「破棄」をクリックしたので、下書きとして保持したくありません。後で下書きをクリーンアップする必要があります。

この new-topic URLを使用すると、これは予期された動作なのでしょうか?破棄を選択した場合に下書きとして保存されないようにする方法はありますか?

ありがとうございます。

再現方法:

  1. テーマコンポーネントで、参照を以下のように新しいトピックの URL に設定したボタンを追加します。
const topicBody = `.....`;
const title = "....";

// 新しいトピックの URL
const createTopicUrl = `https://www.mydomain.com/new-topic?title=${title}&body=${topicBody}`;

const createTopicLink = `<span><a href="${createTopicUrl}" rel="noopener noreferrer">new topic</a></span>`;

const meta = `<div>${publisher}${pub_date} ${createTopicLink}</div>`;

const description = `<p>${description}</p>`;

// 「新しいトピック」ボタンを UI に追加
return `<li class="news-item"><hr><div class="news-title"><a href="${url}" target="_blank">${title}</a></div>${meta}${description}</li>`;
  1. 「新しいトピック」ボタンをクリックすると、タイトルとコンテンツがあらかじめ入力された新しいトピックのフォームが開きます。
  2. 破棄をクリックし、確認します。
  3. 「マイ投稿」を確認すると、破棄された新しいトピックの新しい下書きがあります。

Metaでは再現できないようです。セーフモードでも発生しますか?お使いのインスタンスのバージョンは何ですか?ありがとうございます。

私のインスタンスはバージョン 2026.1.0 です。

システムに組み込まれている機能を使用して新しいトピックを作成する場合、破棄すると下書きとして保存されません。

私のケースでは、テーマコンポーネントに追加したボタンに new-topic の URL をフックしました。
組み込みの機能と異なる理由がわかりません…

「いいね!」 1

やあ、ネイト

Copilotが以下のように説明してくれました。
もしこれが本当なら、これを防ぐためにURLに引数を追加できるか知りたいです。もしできれば素晴らしいです。
&auto_save=false のように指定します。
ご協力ありがとうございます。

はい、それはDiscourseでは想定されている動作です。新しいトピックのURL(タイトル/本文が事前入力された状態)でコンポーザーを開くと、コンポーザーが初期化された時点で下書きが作成されます。「破棄」をクリックして確認した場合でも、Discourseは後でコンテンツを復元できるように、そのルートに対して下書きエントリを保持する場合があります。その動作は、URL形式ではなく、コアのコンポーザー/下書きの自動保存ロジックに由来します。

下書きを避けたい場合は、カスタムアプローチ(例:モーダルを開く、クリップボードにコピーする、またはドラフトキーの上書きを指定してコンポーザーAPIを呼び出す)が必要になりますが、プレーンな新しいトピックのURLは常に下書きの自動保存を有効にします。

それが正確かどうかはわかりません :person_shrugging:。Metaではセーフモードでこれを再現できません。フォーラムでは安定版/ESRバージョンをご利用でしょうか?

Nateさん、こんにちは。私もGeminiのその回答には確信が持てません。

興味深いことに、今日はもう再現できなくなりました。私のテーマコンポーネントはその部分に変更がないにもかかわらずです。

ご協力ありがとうございます。さらなる発見があれば投稿します…

「いいね!」 1