Client feedback form template for the end of every project

Updated 2026-10-30

The invoice is paid and the project is done, but you still do not know what the client really thought. Politeness fills the final call. I would rather ask when the work is fresh, in writing, and read the answers alone.

Before the project closes

Send the link with the final delivery, not weeks later. Write a warm line in the form description and say who reads the answers. Clients speak more freely when they know it is you.

While the client answers

They give ratings for the project overall, communication, quality and timing. Then they say what worked and what to change. A client's AI would ask "How would you rate the quality?" Then "What should we do differently?" Then "Would you hire us again?" It shows the answers and sends only after a yes. Read about agent-fillable forms.

After the answers arrive

Read the low scores first. Thank the client by hand, because the form emails no one. Clients who tick the reference box are the people to ask for a quote or a case study.

Find more in forms for agencies and forms for consultants. A client onboarding form starts the next relationship well, and a referral form turns a happy client into introductions.

Questions

When is the right time to send it?

With the final delivery, or within a few days of it. Memory fades fast, and an old project gets short, polite answers instead of useful ones.

Can clients stay anonymous?

The name field is required here so you can act on it. If you prefer anonymous replies, make it optional and say so in the form description.

How do I turn the ratings into something useful?

Download the CSV and average each rating column across projects. A low timing score on several projects points to estimating, not to one bad week.

Try the form

Live demo ยท nothing is saved

How did we do?

Your honest view helps us work better with you and with the next client.

How would you rate the project overall? (required)
How was our communication?
How was the quality of the work?
Did we keep to the schedule?

1 is far off, 5 is exactly on time.

Were the updates the right amount?
Would you hire us again? (required)
What else could we help with?
I am happy to be a reference
You may quote my words

Or paste the JSON

Give this to your AI. It needs the AI Form API MCP server or an API key. It makes the form and sends you the link.

text
Create this form with the AI Form API create_form tool (or POST https://aiformapi.com/v1/forms with my API key). Then reply with the public_url.

{
  "title": "How did we do?",
  "description": "Your honest view helps us work better with you and with the next client.",
  "fields": [
    {
      "id": "client_name",
      "label": "Your name",
      "type": "short_text",
      "required": true,
      "max_length": 120
    },
    {
      "id": "project_worked_on",
      "label": "Which project did we work on?",
      "type": "short_text",
      "required": true,
      "max_length": 200
    },
    {
      "id": "overall_rating",
      "label": "How would you rate the project overall?",
      "type": "rating",
      "required": true,
      "min": 1,
      "max": 5
    },
    {
      "id": "communication_rating",
      "label": "How was our communication?",
      "type": "rating",
      "min": 1,
      "max": 5
    },
    {
      "id": "quality_rating",
      "label": "How was the quality of the work?",
      "type": "rating",
      "min": 1,
      "max": 5
    },
    {
      "id": "timing_rating",
      "label": "Did we keep to the schedule?",
      "type": "rating",
      "help": "1 is far off, 5 is exactly on time.",
      "min": 1,
      "max": 5
    },
    {
      "id": "update_frequency",
      "label": "Were the updates the right amount?",
      "type": "single_choice",
      "options": [
        "Too few",
        "About right",
        "Too many"
      ]
    },
    {
      "id": "what_worked",
      "label": "What worked well?",
      "type": "long_text",
      "max_length": 1500
    },
    {
      "id": "what_to_change",
      "label": "What should we do differently?",
      "type": "long_text",
      "max_length": 1500
    },
    {
      "id": "hire_again",
      "label": "Would you hire us again?",
      "type": "single_choice",
      "required": true,
      "options": [
        "Yes",
        "Maybe",
        "No"
      ]
    },
    {
      "id": "further_help",
      "label": "What else could we help with?",
      "type": "multi_choice",
      "options": [
        "Maintenance",
        "New features",
        "Training",
        "Marketing",
        "Nothing right now"
      ]
    },
    {
      "id": "reference_ok",
      "label": "I am happy to be a reference",
      "type": "checkbox"
    },
    {
      "id": "quote_ok",
      "label": "You may quote my words",
      "type": "checkbox"
    }
  ]
}

Or call the API

bash
curl -X POST https://aiformapi.com/v1/forms \
  -H "Authorization: Bearer $AIFORMAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"How did we do?","description":"Your honest view helps us work better with you and with the next client.","fields":[{"id":"client_name","label":"Your name","type":"short_text","required":true,"max_length":120},{"id":"project_worked_on","label":"Which project did we work on?","type":"short_text","required":true,"max_length":200},{"id":"overall_rating","label":"How would you rate the project overall?","type":"rating","required":true,"min":1,"max":5},{"id":"communication_rating","label":"How was our communication?","type":"rating","min":1,"max":5},{"id":"quality_rating","label":"How was the quality of the work?","type":"rating","min":1,"max":5},{"id":"timing_rating","label":"Did we keep to the schedule?","type":"rating","help":"1 is far off, 5 is exactly on time.","min":1,"max":5},{"id":"update_frequency","label":"Were the updates the right amount?","type":"single_choice","options":["Too few","About right","Too many"]},{"id":"what_worked","label":"What worked well?","type":"long_text","max_length":1500},{"id":"what_to_change","label":"What should we do differently?","type":"long_text","max_length":1500},{"id":"hire_again","label":"Would you hire us again?","type":"single_choice","required":true,"options":["Yes","Maybe","No"]},{"id":"further_help","label":"What else could we help with?","type":"multi_choice","options":["Maintenance","New features","Training","Marketing","Nothing right now"]},{"id":"reference_ok","label":"I am happy to be a reference","type":"checkbox"},{"id":"quote_ok","label":"You may quote my words","type":"checkbox"}]}'

JSON definition

json
{
  "title": "How did we do?",
  "description": "Your honest view helps us work better with you and with the next client.",
  "fields": [
    {
      "id": "client_name",
      "label": "Your name",
      "type": "short_text",
      "required": true,
      "max_length": 120
    },
    {
      "id": "project_worked_on",
      "label": "Which project did we work on?",
      "type": "short_text",
      "required": true,
      "max_length": 200
    },
    {
      "id": "overall_rating",
      "label": "How would you rate the project overall?",
      "type": "rating",
      "required": true,
      "min": 1,
      "max": 5
    },
    {
      "id": "communication_rating",
      "label": "How was our communication?",
      "type": "rating",
      "min": 1,
      "max": 5
    },
    {
      "id": "quality_rating",
      "label": "How was the quality of the work?",
      "type": "rating",
      "min": 1,
      "max": 5
    },
    {
      "id": "timing_rating",
      "label": "Did we keep to the schedule?",
      "type": "rating",
      "help": "1 is far off, 5 is exactly on time.",
      "min": 1,
      "max": 5
    },
    {
      "id": "update_frequency",
      "label": "Were the updates the right amount?",
      "type": "single_choice",
      "options": [
        "Too few",
        "About right",
        "Too many"
      ]
    },
    {
      "id": "what_worked",
      "label": "What worked well?",
      "type": "long_text",
      "max_length": 1500
    },
    {
      "id": "what_to_change",
      "label": "What should we do differently?",
      "type": "long_text",
      "max_length": 1500
    },
    {
      "id": "hire_again",
      "label": "Would you hire us again?",
      "type": "single_choice",
      "required": true,
      "options": [
        "Yes",
        "Maybe",
        "No"
      ]
    },
    {
      "id": "further_help",
      "label": "What else could we help with?",
      "type": "multi_choice",
      "options": [
        "Maintenance",
        "New features",
        "Training",
        "Marketing",
        "Nothing right now"
      ]
    },
    {
      "id": "reference_ok",
      "label": "I am happy to be a reference",
      "type": "checkbox"
    },
    {
      "id": "quote_ok",
      "label": "You may quote my words",
      "type": "checkbox"
    }
  ]
}