RReTestimonial
Sign inStart free
Collection · Smart Invites

The right ask,
at the right moment.

Smart Invites turns happy customers into testimonials — automatically. Trigger personalized email sequences from Stripe, Shopify, a CSV, or a one-off send, then route each customer to the form that fits their story.

4
ways to trigger
3-step
default sequence
32%
avg submission rate
Day 0 · delivered
10:42 AM
From: feedback@acme.co · To: marina@brightlabs.io
We'd love your feedback, Marina!
Hi Marina,
Thank you for choosing {project_name}! We'd really appreciate it if you could take a moment to share your experience.
Share Your Experience →
Day 3 · queued
in 3d
From: feedback@acme.co · To: marina@brightlabs.io
Quick reminder — your feedback matters
Day 7 · scheduled
in 7d
From: feedback@acme.co · To: marina@brightlabs.io
Last chance to share your experience
Stripe
checkout.completed
Shopify
orders/fulfilled
CSV import
142 queued

Four ways in. One unified queue.

Pick whichever fits the moment — every contact lands in the same campaign, sequence, and analytics view.

Stripe logoWebhook
Stripe
checkout.session.completed
Auto-invite customers seconds after a successful checkout. Filter by amount, plan, or coupon.
Shopify logoWebhook
Shopify
orders/fulfilled
Trigger on fulfillment, not order — so the ask lands when the box hits the doorstep.
Bulk
CSV import
Bulk · email · name · company
Drop a customer list, map columns, queue up to thousands of invites with throttled sending.
1:1
One-off send
Single contact · Proof Loop
Send to a single customer when Proof Intelligence flags a page that needs a specific story.
Spotlight · Webhook auto-invites

Connect once.
Invite forever.

Point Stripe or Shopify at a signed endpoint. We verify the signature, extract the email + name + metadata, dedupe against prior invites, and drop them into the right campaign.

  • HMAC signature verification — Stripe + Shopify natively
  • JSON-path field mapping for email, name, company
  • Cooldown windows prevent re-inviting the same contact
  • Per-webhook event filters & rate limits
StripePOST /webhooks/stripe200 · 47ms
{
"type": "checkout.session.completed",
"data": {
"object": {
"customer_email": "marina@brightlabs.io",
"customer_name": "Marina Chollet",
"amount_total": 4900,
"currency": "usd"
}
}
}
Field mapping
JSON path → contact field
data.object.customer_email
emailRequired
data.object.customer_name
name
data.object.amount_total
metadata.amount
data.object.currency
metadata.currency
Signature verified
Email sequences

One ask is not a campaign.

A 3-step default sequence with merge tags, smart skip logic, and per-stage delay — fully editable, with live preview and test sends.

T+0
First ask
✓ Sent
delay 0 min
We'd love your feedback, Marina!
Friendly request · CTA: Share Your Experience
T+3d
Reminder
✓ Sent
delay 4 320 min
Quick reminder — your feedback matters
Soft nudge · skips if already submitted
T+7d
Final
Scheduled
delay 10 080 min
Last chance to share your experience
No-pressure close · then quiet forever
Available merge tags
{recipient_name}{recipient_email}{project_name}{form_name}{form_url}{recipient_company}{unsubscribe_url}{meta:amount}
Spotlight · Conditional routing

Different customers,
different asks.

Match each invite to the form and template that fits. First rule that matches wins — same logic engine as a routing table.

OrderRule labelCondition→ Form→ Template
01
High-value customers
metadata.amount$500
Premium Story Form
VIP Sequence
02
Annual plan upgrades
data.object.plancontainsannual
Long-term Form
Default
03
International orders
data.object.currencyusd
Global Form
Localized
Fallback
everything elsedefault
Standard Form
Default
Operators:equalsnot_equalscontainsexistsgreater_thanless_than
CSV import

Bulk in. Auto-map.
Throttled out.

Drop a CSV. We auto-detect email, name, company; extra columns become metadata. Dedupe runs against existing contacts; sends throttle by plan.

customers-q1.csv142 rows · 0 dupes
email
name
company
amount
marina@brightlabs.io
Marina
Bright Labs
490
diana@northwind.co
Diana
Northwind
1200
kenji@forge.dev
Kenji
Forge
190
One-off send

Single send.
Surgical proof.

When Proof Intelligence flags a missing-story page, fire a one-off invite to the customer most likely to fill that gap. Same sequences. Same analytics. Same dedupe.

Send manual invite
Tomarina@brightlabs.io
FormPricing Page Stories
TemplateVIP Sequence
Proof Loop: /pricing has weak proof — Marina is on Premium and matched to this story.
delivers in 0 min
Send invite →
Spotlight · Campaign analytics

Funnel + cohort. Per campaign.

Watch each stage drop. Compare campaigns. Catch a broken template before sending another batch.

32%
submission rate
62%
open rate
1.7%
bounce rate
<1%
unsubscribe
Q1 Customer Stories
30-day window
Stripe webhook · auto · ongoing
Invited1,450100%
Sent1,42698%
Opened89261%
Clicked51135%
Submitted46332%
Daily — invited vs submittedlast 14 days

From transaction to testimonial in five steps.

01
Customer pays
Stripe / Shopify / CSV / 1:1
02
Webhook fires
Signature verified · payload mapped
03
Routing matches
Right form · right template
04
Sequence runs
3-step ask · skip on submit
05
Funnel reports
Invited → Submitted, per campaign

Stop chasing testimonials.
Let them come to you.

Connect Stripe in 90 seconds. Three-step sequences, unified funnel, and conditional routing on every plan above Free.