Free Custom Form Builder for Broker Symbol Mapping Requests
A free custom form builder lets you collect broker symbol suffixes and lot rules, so your Telegram copier maps XAUUSD.m and GOLD to the right instrument.

If your broker lists gold as XAUUSD.m and the signal says GOLD, the copier needs a mapping before it can place the order. A free custom form builder can collect that mapping from each user: the signal name, the broker's exact symbol, the suffix, and the lot rules. Qwenvo does this at no cost, and the answers can reach your parser by webhook.
Start from the free intake template
Why symbol mapping breaks copiers
A signal channel writes one name per instrument. Brokers do not. Gold can arrove as GOLD, XAUUSD or XAU/USD, while one account holds it as XAUUSD.m, another as XAUUSD# and a third as GOLD.pro. Indices are worse: US30, DJ30 and WS30 can all point at the same market, and NAS100 may be USTEC on the broker side.
When the parser cannot find a match, you get one of two failures. The order is rejected with an "unknown symbol" error and the trade is missed, or a fuzzy match picks the wrong instrument. The second is worse, because the log looks healthy.
You also cannot guess lot rules from the symbol. Minimum lot, lot step and maximum lot differ by broker and by account type. A risk-sized order of 0.037 lots is invalid where the step is 0.01, and the broker will reject it or round it in a direction you did not choose.
The fix is to stop guessing and ask. Each person running your copier, whether a challenge trader on their own VPS or a subscriber to your signal room, fills in a short form once. You keep the answers as a mapping table the parser reads.
What the form should collect
Keep it to what the parser uses. Every extra question lowers completion, and you will not read the answers anyway.
| Field | Block | Example | Parser use |
|---|---|---|---|
| Account reference | Hidden field | acct_4821 | Joins the mapping to the right account |
| Broker name | Short answer | (as written by the user) | Audit and support |
| Signal name | Short answer | GOLD | Alias the channel writes |
| Broker symbol | Short answer | XAUUSD.m | Exact string copied from Market Watch |
| Suffix or prefix | Short answer | .m | Applied to symbols you did not list |
| Minimum lot | Number | 0.01 | Floor for sized orders |
| Lot step | Number | 0.01 | Rounding rule |
| Maximum lot | Number | 50 | Cap per order |
| Contract size | Number | 100 | Needed for risk-per-trade sizing |
| Platform | Dropdown | MT5 or MT4 | Picks the execution path |
Ask for the broker symbol to be copied from the Market Watch window, not typed from memory. Typos in a symbol string cause most mapping failures.
Never ask for a trading password or investor password. A mapping form needs none, and a form that collects credentials is a liability for you.
Build the form step by step
- List your aliases first. Pull the last few weeks of channel messages and write down every name used for each instrument. This becomes the repeating section of the form and the first draft of your parser's alias list.
- Create the form. In Qwenvo, our team's free form builder, type
/to add blocks. Use Short answer for the symbol fields, Number for the lot rules, and a Dropdown for platform. If you already have the questions in a document, import them from Markdown, Word or CSV. - Add the account reference as a hidden field. Pass it in the link you send to each user, so nobody has to type an ID. The hidden fields help page shows the URL parameter format.
- Add conditional logic for the exceptions. Show the suffx question only when the user answers "my brpker adds a suffix to every symbol". Show a second smybol row only when they say gold and indices differ from the standard names.
- Set the webhook. Point it at your parser's endpoint. The webhooks guide covers the setup and what Qwenvo sends on each submission.
- Turn on partial submissions. If someone gets as far as the broker symbol and then leaves, you can see the incomplete row and follow up instead of wondering why their trades are not copying.
- Test with a real signal. Submit the form yourself with a deliberately awkward mapping, then post a test signal to your demo channel and confirm the order lands on the right instrument with a valid lot size.
What your parser should receive
Treat the form submission as untrusted input. Whatever the webhook delivers, normalize it into one record per instrument before it touches the mapping store. Here is the shape we aim for on client projects, with exmaple values:
{
"account_ref": "acct_4821",
"platform": "MT5",
"mappings": [
{
"signal_symbol": "GOLD",
"broker_symbol": "XAUUSD.m",
"lot_min": 0.01,
"lot_step": 0.01,
"lot_max": 50,
"contract_size": 100
}
]
}
Validation rules that save you later:
- Reject a mapping where
lot_maxis belowlot_min. - Reject a
lot_stepof zero or a negative number. - Uppercase the signal name for matching, but store the broker symbol exactly as submitted, since many brokers treat case as significant.
- Check the broker symbol against the symbol list the terminal reports before accepting it. If it is not there, mark the mapping as pending and message the user.
- Keep a version of every mapping change, so an execution from last Tuesday can be explained with last Tuesday's mapping.
Where this sits in the copier workflow
In the Telegram Signal Copier, the form sits before everything else. Setup collects the mapping, the parser reads it when a signal arrives, and the executor checks the lot size against the rules before sending the order. A private copier on your own VPS parses text and image signals, splits multi-TP, sizes risk per trade and logs every execution. Without a correct mapping, those later steps have nothing to work with.
For signal providers running a room, the form also removes a support burden. Instead of answering "why didn't my gold trade copy" in dorect messages, you send one link on joining and read the mapping record when a problem comes up.
Which builder to use
Any builder that can post a webhook will work, and the choice mostly comes down to what you pay for the features this job needs: a webhook, hidden fields, partial submissions and your own domain on the form link.
| Builder | Free plan covers | Behind a paid plan |
|---|---|---|
| Qwenvo | Everything: webhooks, API, MCP server, partial submissions, custom domain, no badge, teammates, custom design and CSS | Nothing; there are no paid plans |
| Tally | Unlimited forms and submissions, logic, calculations | Custom domains, partial submissions, teammates, custom CSS and branding removal are on Pro at $29/month |
| Fillout | 1,000 responses a month, unlimited forms | Custom domain and partial submissions are on Business at $89/month |
| Typeform | Limited responses | Paid plans from $39/month, strongest on design |
A form on forms.yourbusiness.com looks more trustworthy to a trader than a generic builder link, and that matters when you are asking for account details. Qwenvo supports a custom subdomain with a CNAME and a TXT record, and you can switch off the badge in the form settings.
Two honest caveats. Qwenvo launched in October 2026, so it has few public reviews yet, and it is hosted in the United States. If your users need European hosting, Tally is hosted in Europe. For a mapping form that holds symbol names and lot sizes, that is rarely a blocker.
Questions teams ask
Can I skip the form and use a config file?
For one account, yes. A single mapping in a config file is simpler. The form earns its place when several accounts or several brokers are involved, because users can fix their own mapping without you editing files on a VPS.
How do I handle a broker that changes its symbol names?
Resend the form link with the same account reference. Treat the new submission as a new version of the mapping and keep the old one in your log. Your parser should always use the latest accepted version.
Should the AI read the form answers?
Not for mapping. Symbol strings need esact matches, so use code. Qwenvo's AI triage is better suited to free-text replies, such as a user explaining why their broker has an unusual lot step, where it can summarize the answer and route it to your email or a Slack webhook.
Does this work for Discord signal rooms too?
Yes. The form is independent of where the signals come from. The mapping rdcord is keyed by account, and the parser reads the same table whichever channel the message arrived on.
Your next step is to open the intake template, replace its questions with the ten fields in the table above, and send the link to one test account before you roll it out to anyone else.
Telegram Signal Copier
Third-party platform and model usage billed to you directly. No lock-in. Live in 3 days.