A CSAT (customer satisfaction) survey asks one question on a fixed scale, so every answer is a number, and adds one sentence on why. Here is one that runs in a Telegram bot: a star rating and a reason, two fields for you to add, a thank-you to paste in, and a webhook that forwards only the low scores.
Two things first. The rating is a fixed 1 to 5 stars, so this is CSAT, not the 0 to 10 scale of NPS (Net Promoter Score), even though the template is named after NPS. And the survey is not anonymous: you see the customer's Telegram name and @username. If you searched for an anonymous feedback form, this is not one.
Four questions for a CSAT survey, and two to add
This is the Customer Feedback / NPS template in Easy Post. 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.
- Rating (required; prompt "How would you rate your experience?"). Five buttons in one row, from one star to five. The scale is fixed in the editor. The answer is saved as a digit, "1" to "5", and your card shows the digit, not the stars. A customer who types an answer instead of tapping is accepted too: typed digits arrive as digits and typed stars arrive as stars. If you want 0 to 10, add it yourself as a Buttons field with the options 0, 1, 2 and so on up to 10, which the bot shows as eleven stacked buttons. Easy Post still will not calculate NPS from them.
- What you liked (required; prompt "What did you like?"; 5 to 500 characters). This question weakens the survey: a customer who gave one star must still write at least five characters about what they liked. The character limits are fixed in the editor, but the rest is yours. Change the prompt to "What is the main reason for your score?" and the field name to "Reason", so the card says what the answer is. If you also uncheck Required, the customer gets a skip button, and a typed answer is still checked against the 5-character minimum. You can reword the "too short" refusal under "Button and error texts" on the field.
- Improvements (optional; prompt "What could be improved?"; the skip button says "Everything was great"). Every customer sees that button, including the one who just gave two stars, so change it under "Button and error texts" to "Nothing to add". A skip saves nothing and the line is missing on your card, but a typed "Everything was great" is saved as written. If the reason question already asks why, delete this field.
- Contact OK (required; prompt "Can we reach out for more details?"; buttons Yes and No). A "Yes" helps only if you can reach the customer. Inside Easy Post, the card shows the Telegram first name and, if they have one, the @username, and the bot chat is one-way. A customer with no @username who tapped Yes has given you no way to write back, which is why you add the last field below.
- Order or visit (add this one yourself). A score without context is a number you cannot act on: which visit, which order, which staff member. Add the field with "+ Add Field". Fill in two boxes: "Field name", which is the label you see on the card (write "Order"), and "Bot prompt", which is what the customer sees ("Order number or date of your visit:"). An empty Field name gives an empty label on the card. Check Required and press the up arrow next to the field once for each place it must move, because a new field goes to the end of the form. Then press Save. Note that a required typed question in front of the one-tap rating makes the first step slower.
- How to reach you (add this one yourself; leave Required unchecked). Fill in the Field name ("Contact") and the Bot prompt: "If you said Yes: your phone or email (optional)". The form does not skip this question for a customer who answered No, so the prompt says who it is for.
What happens after a customer sends a rating
- Send the link when the service ends: in the message that closes the order, on the receipt, in the chat with the customer. The bot cannot start the survey by itself: the customer has to open the link. After your own test, "Still to do" on the pipeline page shows "Send the form to real people" with a "Copy link" button. That item disappears once a real customer has answered, so save the link somewhere else. The customer taps Start and answers one question at a time, with a progress bar.
- When the customer sends the last answer, it reaches you in Telegram. The bot writes to you and to everyone on your project who has linked Telegram: the answers, the customer'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. The dashboard shows the sender's full name and no @username.
- Read the low scores the same day. The card cuts every answer at 300 characters; the dashboard shows the whole text.
- Write to the customer through the @username on the card, or with the contact from the extra field.
- The customer sees your thank-you right after sending (text below).

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

Illustration: the texts are the bot's own, and "Order" and "Reason" are field names you set 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": it links your Telegram, so the cards can reach you. Leave the channel under "Still to do" empty. The card heading carries the pipeline's name, which starts as "Customer Feedback / NPS": rename it on the pipeline's Edit page. This is the same setup as the bug report form and 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 survey is and that it is not anonymous: "A few quick questions about your visit. We see who answers, and we may write to you." "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.
Thank you, we read every answer. If your score was low, we will write to you today. Questions: t.me/yourshop
Replace t.me/yourshop with your own contact, and write only what you will do. Under the thank-you the bot shows a "Submit another" button, which invites a second answer from the same person. You can rename it in the "Add More Button Text" box, for example to "Rate another visit", but you cannot switch it off.

Illustration: the text is the one pasted above; names and data are made up.
Send low scores somewhere else
The dashboard lists every answer, newest first, with tabs by status and no search or filter by field. It does not average the ratings or draw a trend. A webhook with a condition can forward only the low scores to a tool you choose. Your Telegram card still arrives for every answer, five stars included, so the receiving tool is the only place where low scores stand alone.
- 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 Rating field, the operator "less than" and the value 3. The webhook then fires for scores of 1 and 2. The operator works on numbers, so a customer who typed stars is not caught.
- 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 answer as JSON to that URL: the answers and the customer's Telegram name, username and chat ID.
With any enabled action, your card is headed "Auto-approved submission in…" and no longer says "Saved in your dashboard", for every answer, including the ones the condition skipped. Skipped runs are written to the action's log. You write the receiving end, or point it at an automation tool that accepts webhooks and sends you a message or adds a row to a spreadsheet. To count averages, leave the condition empty so every answer arrives, and convert the rating from text to a number in the sheet. 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 has to link their own Telegram with the "Link Telegram" button under "Still to do", or in their profile. Members can also change the form, so add only people you trust with it.
Where a survey gets stuck
- A half-finished survey never reaches you. The card, the webhook and the "All" tab in the dashboard appear only after the last answer. An unhappy customer is the one who quits at a required question that asks for five characters, or for an order number. A started but unfinished survey sits under a "Pending" tab. Keep the form short and the reason optional.
- The same person answers many times. The template allows 20 starts a day and 100 a month per customer, and you can change both under "Submission Limits" in Form Settings. Nothing flags a customer who rates the same visit twice; the Order field helps you spot it.
- Mixed rating values. A tap gives "4"; a typed "⭐⭐⭐⭐" stays as stars. Clean the column before you average it, or replace the Rating field with a Buttons field with the options 1 to 5, which refuses typed stars and loses the star buttons.
What the form does not do
- It does not compute NPS, CSAT percentages, averages or trends, and it has no 0 to 10 scale unless you build one.
- It is not anonymous: the customer's name is on the card, in the dashboard and in the webhook.
- It does not answer the customer for you. In this setup there are no Approve and Reject buttons.
Set it up in four steps
- In onboarding, or "+ New pipeline" if you already have an account, pick the Customer Feedback / NPS template. Press "Test the form in Telegram" and leave the channel under "Still to do" empty.
- In Form Settings change the reason question and its field name, set the skip button of Improvements, write your Welcome Text and Completion Text, and add "Order or visit" and "How to reach you".
- Answer the survey yourself and check the card, the dashboard and the thank-you.
- Press "Copy link" under "Send the form to real people" and add the link to the message you send when a service ends.
New to bots? How to create a Telegram bot without code shows how to make one.