If clients write "how much for X?" in chat, you ask the same four things back every time: what exactly, for what budget, by when, and how to reach them. A quote request form asks them once, before your first reply. Here is one that runs in a Telegram bot: four questions, two fields for you to add, budget buttons in your currency, and a rule that sends only the big requests to your tool.
Two limits first. The form collects requests: it does not write a quote, calculate a price or track a sale, and it is not a CRM, because requests sit in a list one by one. If you searched for a printable quote request template, this is not one. For an agency's lead routing, see the client intake form for agencies.
Four questions for a quote request form, and two to add
This is the Agency Lead Form template in Easy Post, and it suits any business that quotes: a contractor, a studio, a workshop, an agency. After you pick it, you can rename, delete or add fields in Form Settings (the Form button on the pipeline page); the no-code form builder guide compares the ways to build such a form. Keep a field only if you will read the answer.
- Company (required; prompt "Company name:"). A person who orders a bathroom repair has no company. Change the prompt to "Your name or company:" and the Field name, which is the label on your card, to "Client".
- Task (required; prompt "Describe the task:"; 10 to 1,000 characters). Under 10 characters the bot answers "Must be at least 10 characters."; over 1,000 it refuses and the client sends a shorter text. The limits are fixed in the editor, the prompt is yours. Ask for the result, not the method: "What do you need done, and what should be different when it is finished?"
- Budget (required; prompt "Budget range:"; buttons "< $1K", "$1K-$5K", "$5K-$20K", "$20K+"). The buttons are in dollars in every language, so a client whose budget is in euros has to translate the bands in their head. The ranges also overlap at $5K and at $20K, so a client with exactly $5,000 can tap either of two. Rename the buttons to your currency and to bands that do not touch. Type the options with no commas, because a comma starts a new button: write "1000 to 4999", not "1,000 to 4,999". Keep the names short. A client who types an amount instead of tapping is told "Please select one of the available options."
- Timeline (optional; prompt "Desired timeline:"; the skip button says "Flexible"). If the client skips, Timeline is missing from your card, which means no deadline; a typed "Flexible" is saved as written. Change the skip button under "Button and error texts" on the field to "No deadline".
- Contact (add this one yourself). The template has no field for it. You get the client's Telegram first name and, if they have one, the @username, and you cannot reply to the client through the bot. A client with no @username leaves you no way to answer. Add the field with "+ Add Field". Fill in two boxes: "Field name", which is the label you see on the card (write "Contact"), and "Bot prompt", which is what the client sees ("Phone or email:"). An empty Field name gives an empty label on the card. Check Required, press the up arrow next to the field once for each place it must move, and press Save. If you set its Type to Phone, the bot also checks for at least seven digits, but it then refuses an email, so change the prompt to "Phone number:".
- Photo (add this one yourself; leave Required unchecked). For a repair, a fitting or a design, a photo or a sketch replaces a paragraph. Add a field of the type Photo, with the Field name "Photo" and the Bot prompt "A photo of the place or a sketch (optional):". It takes photos only, up to ten. Any other message gets "Please send a photo.", and a PDF is not saved. The card does not show photos: they are in the dashboard, as small thumbnails that open at full size. One limit comes with it: when a request has a photo, the text built from Company, Task, Budget and Timeline must stay under 1,024 visible characters. Above that the bot deletes the request and the client has to start again, so a Task near 1,000 characters plus a photo can break it. Ask for a short task, or skip the Photo field.
What happens after a client sends a request
- Put the link where clients ask: in your profile, under your price list, in the pinned message. After your own test, "Still to do" on the pipeline page shows "Send the form to real people" with a "Copy link" button. It disappears once a real client has answered, so save the link elsewhere. The client taps Start and answers one question at a time, with a progress bar.
- When the client sends the last answer, the request reaches you in Telegram. The bot writes to you and to everyone on your project who has linked Telegram: the answers, the client's Telegram first name (with @username, if they have one) and a "Review submissions" link to the list in the dashboard. There are no buttons, because nothing here waits for your approval.
- Read the card, then reply with a quote through the @username or the contact field. Each answer is cut at 300 characters on the card; the dashboard shows the whole text.
- The client sees your confirmation right after sending (text below).

Illustration: the texts are the bot's own, with the added questions left out, and the budget buttons are renamed; names and data are made up.

Illustration: the texts are the bot's own, and "Contact" is the field you add yourself; names and data are made up.
Nothing waits for you here because no action is switched on: in onboarding you only pick the template, and the pipeline is built at once without a channel. On the pipeline page press "Test the form in Telegram" so the cards can reach you, and leave the channel under "Still to do" empty. The card heading carries the "Channel Name" of the pipeline, which starts as "Agency Lead Form": change it on the pipeline's Edit page. The setup is the same as in the job application form.
Two texts to paste into the settings
"Welcome Text" in Form Settings is the first message; the default is "Welcome! Press the button to submit your entry." Say there what the form is for and how long it takes: "A few quick questions, so we can send you a quote." "Completion Text" is what the bot sends after the last answer; the default is "Thank you! Your submission is awaiting review." Nobody reviews anything in this setup, so replace it. Telegram HTML tags such as <b> work in both, and a stray "<" or "&" in the text can break the message.
Request received. We will send you a quote within one working day. Questions: t.me/yourstudio
Replace t.me/yourstudio with your own contact, and write only the deadline you will keep. Under the thank-you the bot shows a "Submit another" button, which starts a new request. You can rename it in the "Add More Button Text" box, but you cannot switch it off.

Illustration: the text is the one pasted above; names and data are made up.
Send the big requests to your tool
The dashboard lists every request, newest first, with tabs by status and no search or filter by field. Because Budget is a button, a webhook with a condition can forward only the requests in your top band to a tool that accepts webhooks: a CRM or an automation tool. Your Telegram card still arrives for every request, so the webhook adds a second path and does not replace the first.
- On the pipeline page open Actions.
- In the Add Action form choose Webhook, name the action and enter the URL.
- Click "Conditions" to open it, press "+ Add condition", choose the Budget field, the operator "equals" and the value exactly as the button reads, for example "20000 and more". The comparison is exact: if you rename the button later, change the condition too.
- Check Auto-approve. It is off by default, and without it every card gets Approve and Reject buttons and the webhook runs only after you press Approve.
- Press Add. Easy Post then sends each matching request as JSON to that URL: the answers, the client's Telegram name, username and chat ID, and links to the photos. Those links open without signing in, so send them only to a tool you trust.
With an auto-approve action on, as in this recipe, your card is headed "Auto-approved submission in…" and no longer says "Saved in your dashboard", for every request, including the ones the condition skipped. Webhooks are not included in every plan, so check the pricing section on the home page first. To have several people read the cards, add them under Members: each needs an Easy Post account and a linked Telegram ("Link Telegram" under "Still to do" after your own test, or in their profile), and members can also change the form.
Where a request gets stuck
- A half-finished request gives you no card. The Telegram card and the webhook appear only after the last answer. The partial answers sit under a "Pending" tab in the dashboard, which shows only when there is one, so check it now and then. Keep the form short and Timeline and Photo optional.
- The limit per client. The template allows 10 starts a day and 50 a month per Telegram account, and you can change both under "Submission Limits" in Form Settings. A start counts even if the client quits. Your own tests count against your own account only.
Set it up in four steps
- In onboarding, or "+ New pipeline" if you already have an account, pick the Agency Lead Form template. Press "Test the form in Telegram" and leave the channel under "Still to do" empty.
- In Form Settings change the company prompt, rename the budget buttons, set the skip button of Timeline, write your Welcome Text and Completion Text, and add "Contact" and "Photo".
- Send yourself a request and check the card, the dashboard and the confirmation.
- Press "Copy link" under "Send the form to real people" and put the link where clients ask for a price.
New to bots? How to create a Telegram bot without code shows how to make one.