Lead quality
Counts the people who left a contact you can actually use
Free agent skill for Claude Code, Codex, Cursor and Gemini CLI. It works through the SurveyNinja MCP server, with your permissions.
- Category
- Deliver responses
- Tags
- leads, data quality, funnel
- Works with
- Claude Code, Codex, Cursor, Gemini CLI
- MCP tools
- 8, all read only
- Version
- 1.1, October 20, 2026
- Made by
- SurveyNinja
- Price
- Free
- Skill file
- SKILL.md
What it does
- Leads instead of completions. The headline number is the share of people who left a usable contact out of everyone who started.
- You see where people change their mind. The gap between the question before the contact and the contact itself is the people who got there and left.
- Contacts stay out of the chat. The skill counts and checks contacts but does not paste them into the conversation. They belong in an export, Google Sheets, Zapier or a webhook.
Example
You type
How many usable leads did this survey collect?
What the assistant brings back
- 512
- Started
- 243
- Reached the contact47%
- 186
- Left a contact
- 164
- Usable32% of those who started
57 people reached the email field and left it empty. One line explaining why you need the address usually lifts that share more than any design change.
The numbers above are an example. The real count runs on your responses and your link labels.
How it works
- Puts the right number firstThe share of people who left a usable contact, out of everyone who started. Completion can be high while leads are almost absent.
- Finds where people changed their mindIt compares the question before the contact with the contact itself. The gap shows how many got that far and still closed the tab.
- Filters out what you cannot useBroken emails, test@test.com, phone numbers with too few or too many digits, one-letter names and duplicates are counted apart. A lead you cannot reach does not go into the total.
- Splits leads by channelIf the link carried source labels, you see where leads are more numerous and where they are better. Quite often those are different channels.
Try also
- Check the quality of our leads and tell me where we lose them
- Which channel brings better leads?
What it will not do
- Do not count a submission without a contact as a lead
- Do not paste contacts into the chat
- Do not advise removing every required field
- Do not suggest a plan upgrade or lead to payment
The skill works with your permissions. Tools that change data are marked, so you check what the assistant is about to do before you confirm. To cut access, remove the connector in the assistant or delete the API key.
In short
What does the skill count as a lead?
A submission with a usable contact. A submission without a contact is not a lead, and neither is one with a broken email or a phone number that cannot exist.
Why not the completion rate?
When a survey works as a lead form, what matters is how many people you can contact afterwards. The headline number is the share with a usable contact out of everyone who started.
What counts as an unusable contact?
Emails with a broken format, placeholder addresses such as test@test.com, typos like gmial.com, phone numbers with fewer than 7 or more than 15 digits, one-letter names. The skill counts them separately and merges duplicates.
Can I compare channels?
Yes, if the link was shared with labels such as utm_source. Each response carries its labels, so the skill splits leads by label and says where they are better in substance, not only in number.
Will it change my survey or show contacts in the chat?
No. The skill only reads the survey and its responses. It suggests changes, such as asking for the contact later or opening the phone question to every country, and contacts stay in your exports and integrations.
What do I need to use it?
A SurveyNinja account and an assistant that supports MCP and loads skills from a folder, such as Claude Code, Codex, Cursor or Gemini CLI. The MCP server works on every plan, the free one included. You connect with "Allow access" in the assistant or with your own API key.
The full skill
The SKILL.md file the assistant reads, exactly as it is in the archive.
Show the full text
Counting usable leads
When a survey works as a lead form, the completion rate says little. What matters is how many people left a contact the team can actually reach.
Reply to the person in the language they write in.
Collect
get_quiz_structure: find the contact questions (types phone, email, and
fio for the name) and the question right before the first of them.
get_quiz_summary: how many finished (filled_completely) and how many started
but left (started_not_finished). get_quiz_report counts the answers to each
question, but only among completed responses.
get_quiz_answers with is_complete false: the unfinished responses, paged with
limit and offset. They show who reached the contact question and left without
filling it. They are not kept on every plan (incomplete_answers in
get_workspace_tariff, with the workspace_id from get_workspace_list), and
without them is_complete false returns completed responses instead: check the
is_complete field. Then say that the drop-off before the contact cannot be
measured.
get_quiz_report_inputs: the values entered in the contact questions, to check
whether they are usable. It needs report_uuid from get_quiz_report and the
question's widget_id and widget_hash from get_quiz_structure, and returns 50
rows at a time: page with offset. Reading the completed responses with
get_quiz_answers page by page works too.
Link labels such as utm_source, if the link was shared per channel: each
response from get_quiz_answers carries them in extra_fields, and
get_quiz_variables lists the label names set up for the survey. Count leads per
label from the responses.
Compute
- Share with a usable contact out of everyone who started. This is the headline number. Completion can be high while leads are few.
- Where people drop off. Among the unfinished responses, count those that answered the question before the contact but not the contact itself. They are the people who got there and changed their mind.
-
Contact usability. Count separately:
- emails with a broken format, placeholder addresses (
test@test.com,a@a.com, anything atexample.com) and typos in big mail domains (gmial.com,hotmial.com); - phone numbers that cannot exist: fewer than 7 or more than 15 digits (the
international maximum), one digit repeated, runs like
123456789; - one-letter names and keyboard mash.
A lead with a dead email or phone does not count as a lead.
- emails with a broken format, placeholder addresses (
- Duplicates. The same email or phone several times is one lead.
- By channel, if labels exist: leads and the usable share per label.
What usually gets in the way
- The contact is asked too early, before the person sees what they get. Move it closer to the end.
- Too much is asked. Email, phone and city at once: every extra field costs leads. Ask for the one channel the team really uses.
- No reason given. One line such as "we will call to agree on a time" usually lifts the share more than any design change.
- A phone question locked to one country. When respondents come from several countries, a single default country with the selector hidden turns the others away. Suggest country auto-detection or showing the selector in the phone question settings.
- A required contact in an otherwise optional survey: people leave without answering anything.
How to present
Numbers first: started, reached the contact question, left a contact, usable, and usable as a share of those who started. Then where people drop off and what to change, ordered by payoff.
With channels, a table plus a conclusion about which channel brings better leads in substance, since the biggest channel is often not the best one.
What not to do
- Do not count a submission without a contact as a lead.
- Do not paste contacts into the chat: they belong in an export or in the connected Google Sheets, Zapier or webhook.
- Do not advise removing every required field: a lead without a contact is useless.
- Do not suggest a plan upgrade or lead to payment. If a limit is hit, state the fact and stop.
More skills
All skills- Webhook setup Sends survey responses to your own address and checks that the receiver accepted them
- New response notifications Sets up where new responses are announced, by email or in Telegram, and fixes it when they stop arriving
- Why responses are not delivered Finds why responses never reach your Telegram, Google Sheet, Zapier or webhook, and what to do about it
- Survey results summary Answers "so what did the survey say" with figures and a conclusion instead of a raw export
- A/B variant analysis Tells you whether the difference between variants is real or just noise
- Comparing with past results Compares a survey with its own past, because one figure means little and a change says a lot
Connect SurveyNinja to your assistant
The MCP server works on every plan, Free included. Sign up, allow access and ask your assistant to build the first survey.
25 Questions for a Travel Agency Customer Satisfaction Survey