This guide describes how to create a link to start a new personal message with pre-filled information, including best practices.
Required user level: All users
Discourse allows you to compose a new personal message with pre-filled information via URL parameters. This can save time and ensure consistency for common messages.
Structure of the URL
To create a new pre-filled message, format your URL like this:
https://discourse.example.com/new-message?username=techapj&title=message%20title&body=message%20body
When broken down, the URL parameters include:
-
Base URL:
https://discourse.example.com/new-message -
Username:
username=techapj -
Title:
title=message%20title -
Body:
body=message%20body - The
?URL operator to add the different options
You can try this on try.discourse.org:
https://try.discourse.org/new-message?username=rudy&title=message%20title&body=message%20body
You can also compose a pre-filled message for a group via URL:
https://meta.discourse.org/new-message?groupname=team&title=topic%20title&body=topic%20body
Notice the groupname param in above URL, this means that you want to create a new pre-filled message for a group (as opposed to username for composing a message for user). You can also use group_name as an alternative to groupname.
Tags
You can pre-fill tags on a personal message by adding the tags parameter:
https://discourse.example.com/new-message?username=techapj&title=Bug%20Report&body=Details&tags=tag1,tag2
This requires the pm_tags_allowed_for_groups site setting to include the groups that the user belongs to. If PM tagging is not enabled for the user, the tags parameter will be silently ignored.
Best practices
-
You can send message to multiple users by comma separating the usernames. For example
https://meta.discourse.org/new-message?username=foo,bar -
You don’t need to fill in all of the params. For example any of these would work:
https://meta.discourse.org/new-message https://meta.discourse.org/new-message?username= https://meta.discourse.org/new-message?title=foo&body=bar https://meta.discourse.org/new-message?groupname= -
You can add line spaces using the %0A and %0A%0D codes to give some structure to the body of the message:
https://yoursite.discourse.org/new-message?username=test_user&title=Bug%20Report&body=Please%20include%20all%20relevant%20details.%0A%0DCPU:%0AMemory:%0A%0DDescribe%20Issue: -
If you have DiscourseConnect (SSO), you can link to
example.com/session/ssoand then set the return path to create the personal message. If the user is already logged in they will be redirected automatically to the url supplied by the return path. If they aren’t logged in they will be taken to the DiscourseConnect login page and then redirected to the return path url. The return path will need to be url encoded.href="http://localhost:3000/session/sso?return_path=http%3A%2F%2Flocalhost%3A3000%2Fnew-message%3Fusername%3Dscossar%26title%3DInformation+requested+about+gentle+yoga+classes">
Currently not supported
- Use the pre-filled URL to compose a message to multiple groups.
- Use the pre-filled URL to open the composer in a user’s summary page.
- Using email instead of the username to pre-fill a personal message.
Additional resources
Last edited by @hugh 2025-07-23T20:13:10Z
Check document
Perform check on document: