Social proof is incredibly important for new businesses, but the process of getting and displaying customer quotes breaks down too easily. And then it ends up on the back burner.
Here’s a workflow that automates the entire system from collection to publishing.
We’ll use a few simple tools for this setup.
You can swap Webflow for Framer if you want. Now, let’s build the first part of the workflow.
Open Jotform:
Keep the form short. Most customers will not spend 15 minutes writing feedback. Short forms get completed more often.
Now, add these fields first:
Next, add the testimonial questions:
That last question is important. Specific results make testimonials stronger.
Finally, add a Checkbox
Then, make the important fields required before publishing the form.
This step is important. If customers have not used the product yet, the feedback is usually too general. It helps to wait until they:
In this example, the request will send after a customer upgrades in Stripe.
Open Zapier:
Zapier should find a recent upgrade event.
This keeps free users out of the workflow.
This gives customers time to use the product.
Keep the email simple. Here’s an example.
Quick question about your experience
Hey {First Name},
I saw you've been using the product for a couple weeks now.
If you have a minute, I’d love to hear how your experience has been so far.
Here's the form: {{Jotform Link}}
Replace the form link with your Jotform URL from Step 1. Before turning the Zap on, send a test email to yourself first. Check:
Then turn the Zap on.
Now, you need one place to keep all the responses. Without organization, testimonials become difficult to reuse later.
You do not need a complicated setup here. Start with these fields:
Now, go back to Zapier.
Example: “What changed after using the product?” → Result After
Submit a fake testimonial through the form. Then open Airtable. You should now see the testimonial appear automatically as a new record.
Most customers are not strong writers. That’s normal. Many testimonials come in:
The goal is not to fake the testimonial. The goal is to make it easier to read while keeping the original meaning.
Now paste this prompt (or similar):
Rewrite this testimonial clearly.
Keep the meaning the same.
Keep any numbers or measurable results.
Remove fluff.
Keep it under 50 words.
Make it sound natural.
Testimonial: {Result After}
Next, map the Airtable field Result After into the prompt.
You should now see a cleaned-up version of the testimonial.
Save the cleaned version back into Airtable.
Then, return to Zapier.
Now, every testimonial has:
Once you collect enough testimonials, finding the right one becomes difficult. You need some structure.
Paste this prompt (or similar):
Read this testimonial.
Return:
Customer type
Use case
Main outcome
Testimonial: {{Clean Testimonial}}
Then: Test Step
Go back to Airtable. Create these fields:
Return to Zapier.
Map the AI responses into the Airtable fields like this:
At this point, each testimonial is stored in fields you can search and filter.. That makes it easier to display relevant testimonials on different pages later.
You can publish testimonials automatically after the AI cleanup step. But you may prefer a quick manual review first, especially once you start collecting a larger number of submissions.
That gives you an opportunity to check:
To do this, inside Airtable, add: Status
Then create options like:
Then, in Zapier:
If you do not need manual review, you can skip this step and publish testimonials to Webflow automatically after the AI cleanup step.
Next, we need a way to publish testimonials automatically. Open Webflow.
Then, create these fields:
Click: Create Collection
Now, go back to Airtable.
Add:
Now, create another Zap.
This prevents drafts from reaching the website.
Map:
Now click: Test Step
Open Webflow CMS. You should now see the testimonial appear automatically.
This helps prevent the same Airtable record from being published again.. At this point, approved testimonials automatically move from Airtable into your website.
Most founders show the same testimonials on every page. That is usually less effective. Different pages need different customer testimonials.
Here are some examples:
Your pricing page needs:
Your onboarding page needs:
In Webflow:
Then:
Each page will now show more relevant testimonials.
Some testimonials sound impressive but do nothing. Others quietly improve conversions. You need data to know the difference.
Then choose the events you already track in PostHog, such as:
Run the test long enough to collect enough data. As a general rule, detailed testimonials often perform better than vague ones.
this same problem shows up in app store screenshots too - the best proof is specific and tied to a before/after moment. i ran into that enough that i built appkit for screenshot iteration, happy to share if useful.
Love the focus on timing here. Most companies ask for testimonials way too early. Waiting until customers have actually seen results makes a huge difference. The AI tagging part is clever too—collecting testimonials is easy, finding the right one later usually isn't.
Strong point. The highest-converting testimonial systems usually do one extra step before publishing: they tag each quote by buyer anxiety.
A simple structure I’d use:
That makes the testimonial useful instead of just “nice social proof.”
I’m doing a few same-day landing page / copy audits today for $30 if anyone wants outside eyes on their page or deck. DM me and I’ll take a look.
I kept seeing the same thing, teams collect the quote but never turn it into homepage copy before the moment passes. The field I would add is one tiny destination tag on the form itself, homepage, sales deck, or social proof wall, because reuse gets way easier later. For the rewrite pass after collection I still bounce between Airtable, ChatGPT, and PostPilot depending on whether I need raw quotes or cleaner snippets, lol.
t
The insight about specificity is the key one here. Generic testimonials ('great product!') fail because they match every product — they don't reduce the buyer's uncertainty about their specific situation. The best testimonials are the ones where the reader thinks 'that's exactly my problem too.' The automation angle is interesting but I'd push back slightly on the prompt engineering part: LLMs are good at extracting the narrative structure, but they tend to sand down the idiosyncratic language that makes testimonials convincing. A customer who says 'I stopped dreading Monday mornings' is more persuasive than a cleaned-up version that says 'improved work-life balance.' Worth preserving the rough edges.
The AI cleanup step is where this workflow actually earns its keep. Raw feedback is almost always unusable — not because customers don't have strong opinions, but because they write the way they talk, which rarely maps to what converts on a landing page.
I ran into the same problem building ReportRemarks, a tool that turns raw teacher notes into polished student report comments. The core tension is identical: preserve the person's actual meaning while making the output readable and specific. What we found is that constraining the AI prompt matters more than the model — "keep any numbers, remove filler, stay under 50 words" reliably outperforms an open-ended rewrite instruction.
One thing worth adding to Step 4: keep the original alongside the cleaned version in Airtable (as you suggested) and occasionally spot-check the delta. When the AI starts diverging too far from the source, the testimonial stops feeling authentic even if it reads well — and that erodes the trust effect you're trying to build.
I did this too after a few customer wins, and the quote only got usable once the trust question lived in the same flow. Typeform or Senja can grab the praise part, I built PrivacyForge because founders usually miss the consent and privacy layer once Stripe, support tools, and analytics get stitched in. asking for the quote right after the upgrade plus that public-use checkbox is the move, imo.
ask right after a win, and ask for one specific before and after. generic praise rarely converts.
Testing comment - please ignore this
Testing comment - please ignore
This is a test comment to verify posting works correctly
Testing comment posting
The grind is part of the deal. What nobody tells you is that it gets quieter before it gets louder. How are you holding up?
The grind is part of the deal. What nobody tells you is that it gets quieter before it gets louder. How are you holding up?
wouldn't have even thought to do that. great advice as always.