~/writingsales-funnel-demo
A sales funnel you can watch: the working demo on matchlessweb.com
Ten emails over 18 days that change course with what you do: how the sales funnel demo on matchlessweb.com is wired, from button clicks to one-word replies.

The sales funnel demo on matchlessweb.com is a real email funnel I built to teach funnels. It comes with my free guide, The Sales Funnel Map: ten emails over about two and a half weeks that change course with what you do. Press a button and the next email arrives in seconds. Reply with one word and a different email comes back. Answer three questions and the advice you get back is chosen from your answers. You can live it in your own inbox, or watch every email on the site without signing up for anything.
What does the demo show?
There are two ways in. Live it by email: request The Sales Funnel Map and the emails arrive over 18 days, or sooner if you skip ahead. Watch it now: the studio page at /sales-funnel-demo shows every email in the order it arrives.
The studio counts it out plainly: ten emails in seventeen versions, plus nine replies set off by what the reader does. You choose a reader's journey and follow it. You can switch between the light and dark designs, and between phone and desktop. Links that would act on a reader's place in the funnel are switched off there, so browsing the studio can't move anyone along.
One thing a browser preview can't prove: Gmail's app applies its own color changes to email. So every design is also checked in real inboxes.
How does the funnel respond to what you do?
A button. Some emails link to a page on matchlessweb.com with a single button on it. The page says it plainly: nothing happens until you press. When you do, the button does what the email promised, and the next email arrives in seconds instead of waiting for its scheduled day.
If the page can't run its button (no JavaScript, for example), you can reply to the email instead, and I'll do it for you.
A one-word reply. One email asks you to reply with a single word. Replies go to my own address, and a Gmail filter forwards them to an email parser in OttoKit, my automation platform. The parser reads the keyword and picks a path:
- CALL sends back a one-time Calendly booking link.
- EXAMPLE sends back an example.
- Anything else is forwarded to me to answer myself.
Only the email address, the keyword and the time are stored. The full reply comes to me, not into a database.
I tested it with real replies sent from an ordinary Gmail account, through the filter and the production parser: about a second from parser to email for EXAMPLE, about three seconds for CALL.
Where do the three answers go?
Another email asks three questions. The answers go to a Google Sheet, an automation picks a recommendation from them, and the advice goes back to you as an email through my CRM, SureContact.
The row in that sheet holds the time, the SureContact contact ID, the three answers and the recommendation. No name, no email address. It stores what it needs to choose the advice and nothing else.
How do you draw a funnel with 29 workflows?
You generate the drawing from the same source that builds the funnel. The whole thing runs on 29 workflows in SureContact and two OttoKit automations (the reply parser and the questions automation), plus the buttons on the site, the spreadsheet and the booking link.
The map on the studio page is drawn from that source, not by hand: a poster of the whole system, left to right in the order a reader moves through it, with a drawing for every workflow and every branch it can take. There are 64 drawings in all, and the whole map downloads as a 19-page PDF. Because it's generated, nobody has to redraw it by hand when the funnel changes.
The OttoKit automations are written as JSON in the repository and imported, so they live in version control next to everything else.
What did I learn?
Keep the funnel's source in one place and generate everything else from it: the emails, the previews and the map. Store as little as the funnel needs to work. And test with real replies in a real inbox, because that's the only test that covers the filter, the parser and the mail client at once.
What surprised me most is how complicated it looks and how simple it was to build. SureContact and OttoKit both have strong MCP servers, so an agent could build most of it on its own.
Stack: SureContact (CRM, workflows and email), OttoKit (email parser and automations), Gmail filters, Google Sheets, Calendly single-use links, webhooks, and matchlessweb.com on Cloudflare Pages.
Jon Phillips builds websites, web apps and automations atMatchless Web in Clinton, Mississippi.


