How Cinch works
Everything needed to build a funnel, publish it and get the answers where you want them. Docs grow as beta does — if something is missing here, ask and it gets written.
Quickstart
- Start from a template. Pick the closest one from the library and change the questions to yours. Starting blank works too, but templates carry the structure that makes funnels convert.
- Set the result. Decide what someone gets for finishing: a score, a range, a plan, a recommendation. Then decide what you ask for in return.
- Publish and share. You get a link — put it in your bio, a story, or embed it on your site. Answers arrive by email, and through a webhook if you have set one up.
Blocks
A funnel is an ordered list of blocks, one screen each. The editor shows them stacked in the order people will meet them. Every block is edited where it sits, with no settings panel hiding behind it. The + between any two adds a block. Each block's own header moves it up or down, duplicates it or deletes it.
| Block | What it does |
|---|---|
| Question | One question per screen. At least two options, and six or fewer reads best on a phone. Each option carries a score. Set it to Several if people should be able to tick more than one. |
| Something to read | A fact, a reassurance or a bit of proof between questions. Nothing to answer — it exists to keep momentum where a question would break it. |
| Short answer | A short typed answer — text, email, phone, number or date. Use sparingly: typing costs completions in a way tapping does not. |
| A pause | A timed loader that shows the work being done before a result appears. |
| Result | The result page. Different wording above and below a score, values from their answers dropped into the copy, and as many contact fields as you need. |
| Payment | A price, what they get, and a button to your own checkout. Pro plan — see Taking payment. |
Questions with several answers
Some questions have more than one true answer. “Which of these have you tried?” is one. So is “what is getting in the way?”.
On a question block, switch One answer to Several. The options become tick boxes, and the funnel waits for a Continue tap instead of moving on at the first tap. Say so in the question itself — “tick all that apply” — because the square boxes alone are easy to miss.
Then choose how the ticks are scored. This matters more than it looks:
| Scoring | What it does |
|---|---|
| The average | The default. Ticking a weak option alongside a strong one pulls the score down, so a question with six tickable options cannot outweigh everything else in the funnel. |
| The total | Every tick adds. Use it when more genuinely is more — a list of symptoms, or things someone is spending money on. Watch the maximum: six options worth 30 each reach 180. |
| The highest | Only the best tick counts. Use it for a list where the strongest item decides — the security template scores “which of these are in place” this way, so admitting to a weak control alongside a strong one never costs anyone points. |
The answer arrives as a list rather than a single value. In a condition or a result, test it with contains() — contains(answers.tools, "typeform"). Comparing the whole list with = will not match. In a webhook and in the CSV the ticked labels are joined with commas.
How the answers look
Every question has a How the answers look line under it. Open it to choose between a List and a Grid. A grid puts the answers in tiles, two across on a phone. It suits pictures, or short answers like sizes and colours.
To add a picture to an answer, press the image button on its row. PNG, JPEG or WebP, up to 2MB. Pictures show on top of the tile in a grid, and beside the text in a list.
Tick Show only the pictures to hide the text on answers that have one. Keep writing the text anyway. It is what a screen reader says, what your result page and webhook report was chosen, and what goes in the CSV. An answer without a picture keeps its text, so you never end up with a blank button.
Change the order with the up and down arrows on each row. Visitors see the answers in that order, and the number keys follow it.
Asking for a phone number
Set a field’s type to Phone and it gets a country picker beside the box. The country starts on whatever your funnel’s language is set to, and the person answering can change it.
They type their number the way they normally write it — 07700 900123 — and it is stored in international form, +447700900123. That is what reaches your CRM, your webhook and the CSV. It matters because a number written down without a country is a number in one of several countries, and nothing downstream can tell which.
We check the length and the shape, not the carrier. A number three digits short is caught. A number that is the right length but disconnected is not — no form can know that.
Scoring
Every option carries a score. They add up across the funnel to a single total, capped at 100 unless you change the maximum.
The result block can show that total to the visitor. It can also pick which version of the result they see. Each version has a score it starts from, and the highest one they reach wins. Scores are sent with the response too, so you can sort leads by them.
Writing questions that get finished
- Put the easiest question first. The first answer is the commitment that carries the rest.
- Keep option labels short enough to read at a glance on a phone.
- Ask for the email after the value is obvious, not before.
- Six steps or fewer is a good default. Every extra question costs completions.
Branching
Most funnels ask everyone the same questions. That is usually right, because every branch is another path you have to think about. When a question only applies to some people, there are three ways to handle it. All three are on the block itself, under Show this only sometimes, or skip ahead.
| What you want | Where |
|---|---|
| Ask a question only sometimes | Only show this step when. A skipped step is not asked and not scored. So scores stay comparable between people who saw it and people who did not. |
| Skip past several steps at once | Jump to — pick a later step and give it a condition. The first rule that matches wins. |
| Hide one answer, not the whole question | The branch icon on the answer row. Good for options that only make sense given an earlier answer. |
Jumps only ever go forwards. The list only offers steps below the current one, so a funnel cannot loop and can always tell someone roughly how far through they are. If you move a block so that a jump would point backwards, the rule turns red and says so. It is not dropped for you. A rule you wrote on purpose should not vanish because you rearranged something.
A condition is three dropdowns: the question, how to compare it, and the answer. Only questions asked before that point are offered, since a rule about an answer nobody has given yet can never be true.
Write it myself shows the same rule as text: answers.owns == 'yes', score > 70, contains(answers.services, 'seo'). That is how you write the rules the dropdowns cannot make, such as checking two things at once. Anything the dropdowns can represent is read back into them, so switching to text is not a one-way door. The expression reference lists what is available.
The result
The result block can say the same thing to everyone, or a different thing to each person, with their own numbers in it. Three things to know, and then the result reference has the rest.
Anything you type can carry an answer. Titles, summaries, figure labels, figure values and the name of the score all accept {{ labels.plan }}. The buttons under the summary box put them in for you. To format a value, add a vertical bar: {{ computed.quote | currency }}.
Several versions, one shown. Add a version for a higher score, or give one a condition like answers.timing == 'as-soon-as-possible'. Conditions are checked first, then score thresholds, and the version at the bottom with neither is what everyone else sees. Leave it there — it is the safety net.
Figures are the small bars. A label, a value and a bar length. Three fit across a phone. The bar is a judgement rather than a calculation, and an empty one is refused at publish rather than shipped looking broken.
What happens at the end
A funnel does not have to end the same way for everyone. It does not have to ask for an email at all. At the bottom of the result block there is a box marked Then what happens, with four choices.
| Ending | What it does |
|---|---|
| Show a message and stop | The default. Says thank you and finishes there. |
| Offer them a button | They choose whether to press it. Good for booking a call, where sending somebody straight to a calendar can feel pushy. |
| Send them straight to a page | Your checkout, your booking page, your own thank-you page. If you are not asking for an email, it happens the moment they arrive. |
| Carry on to the next block | Keeps going through the funnel, to a Payment block for instance. |
Sending your best leads somewhere different
That box sets what everyone gets. Any version of the result can override it.
Under a version there is a link marked Send these people somewhere else. Use it and only the people who match that version get that ending. So a high scorer can be handed your calendar while everyone else gets a thank-you, without them all seeing the same button.
A version with no ending of its own uses the block’s, so a funnel that finishes the same way for everybody carries nothing extra. Same as everyone puts a version back that way.
There are two ways to refer to an answer, because your writing and your rules want different things. {{ labels.plan }} prints what the visitor read, such as “Monthly”. It is what the buttons in the editor insert. answers.plan holds the value saved underneath, which is what a rule should compare. If a result page ever says “option-bdd6e9”, you have used the wrong one.
Wherever you send them, the address can carry their answers, so the next page already knows who has arrived:
https://cal.com/you?email={{ answers.email | urlencode }}&score={{ score }}Values can be passed through a filter first: urlencode, upper, lower, number, percent and currency. Only https, http and addresses on your own site are ever followed. Anything else is refused when the funnel is published, and refused again before the browser moves. Cinch adds nothing of its own to the end of your funnel. Once someone gives you their details, what they see next is yours to decide.
Taking payment
A payment block shows the price and what they get, then sends them to a checkout page you own. The money goes straight to you. Cinch never sees a card, holds no keys and takes no cut — it is your checkout, reached from your funnel.
Payment blocks are a Pro feature. Setting one up takes about two minutes:
- In your own Stripe dashboard, go to Payment Links and create one for what you are selling. Stripe gives you a URL like
https://buy.stripe.com/aEU00b1Vn0k2fXq144. No code, and it is free. - In Cinch, add a Payment block, set the price and the bullets.
- Paste the link into checkout link. The funnel will not publish without it.
Any https checkout works, not just Stripe — Gumroad, Lemon Squeezy, PayPal and SumUp links all behave the same way.
Matching a payment to the answers
Cinch adds the response id to your checkout link as client_reference_id. Stripe shows it on the payment and includes it in the checkout.session.completed webhook, so you can tell which set of answers produced which sale. Nothing to configure — it is on every payment link Cinch sends someone to.
Their answers are sent to you the moment they tap the button, before the browser leaves for the checkout. Someone who pays and never comes back is still a lead, and so is someone who gets to the payment step and thinks better of it.
Sending them back afterwards
Stripe can return people to a page of your choosing once they have paid. On the Payment Link, set After payment to Redirect customers to your website and give it the URL you want — your own thank-you page, or the funnel link again.
What Cinch does not know
Because payment happens on your provider’s page, Cinch is not told whether anyone paid. There is no paid or unpaid state on a response, no revenue reporting, and a payment block cannot lock content behind it. Stripe is where you see the money; Cinch is where you see the answers, joined up by the response id.
Publishing and sharing
Publishing gives you a link, shown on the funnel page with a button to copy it. Everything else is that same link somewhere different.
- Hosted link —
cinchfunnel.com/you/your-quizonce you have claimed an address in Settings. Works in the Instagram, TikTok and Facebook in-app browsers, which is where most bio-link traffic actually lands. - Custom domain — on Pro, point a CNAME such as
quiz.yoursite.comat your funnel from its Settings tab. The certificate is issued for you. - QR code — on the funnel page, under the link. Download it as an SVG so it stays sharp at any size on print. It points at the same link, so it keeps working if you later move the funnel to your own domain.
Embedding it in a page
The funnel page has an Embed button under the link that gives you the snippet with your own URL already in it. Webflow, Framer, WordPress and plain HTML all take it in an embed or custom-code block:
<iframe
src="https://cinchfunnel.com/you/your-quiz"
title="Your quiz"
style="width:100%;height:640px;border:0"
loading="lazy"
></iframe>Give it more height than feels necessary — a result page is taller than a question, and an iframe will not grow itself. Views and responses are counted the same as on the hosted link.
Getting the answers out
Every response is stored and readable in the dashboard, including the unfinished ones. On top of that, a completed response can be delivered to both of these at once:
- Email — a notification per lead, to one or more addresses. On by default, to the address you signed up with.
- Webhook — a signed JSON
POSTto your own endpoint. See the webhook reference.
And whenever you want the lot, CSV export is on the funnel and on its responses page — one column per question, including questions you have since deleted.
Zapier, Make and everything behind them
There is no separate Zapier integration to set up, because the webhook already is one. Both Zapier and Make start a scenario from an incoming webhook, so pointing Cinch at that URL puts every response into their catalogue of a few thousand apps.
- In Zapier, create a Zap with the Webhooks by Zapier trigger and the Catch Hook event. In Make, start a scenario with a Custom Webhook module.
- Copy the URL it gives you.
- Paste it into your funnel under Where leads go, in the Webhook box.
- Run through your own funnel once so a real response arrives — that is what teaches Zapier or Make the shape of the data.
You do not need Zapier for Slack or Discord. Both are in the same Where leads go list: make a webhook in the app, paste the address in, done. Each message carries the name, the score and the first few answers, with a link to the rest.
Not built as one-click integrations yet: Google Sheets, Supabase and Airtable. The Zapier route above reaches all three today. It is more setup than a button, and it is the honest position until the built-in versions land.
Data and privacy
You are the controller of the responses you collect and Cinch is your processor — details in the privacy policy. Ask only for what you need, tell people what it is for, and delete responses you no longer use — there is a delete on every response. Never ask for card numbers or passwords in a question; use a Payment block, which hands over to your own checkout rather than collecting anything here.