Release notes

What's new

Every change to canusign, transparently documented — what we built, when, and why. Feedback welcome via feedback.

v0.21.0

Full funnel visibility: editor, redirect-payments, per-product CTR

Up to now the conversion funnel had two big blind spots: the editor step between upload and checkout (we knew people uploaded PDFs but had no idea what they did before paying), and Stripe-hosted Checkout-Session redirects (Pro subscriptions and sublease document payments fired no payment_succeeded events at all, so the dashboard showed real money coming in but no funnel attribution). This release wires both up. Five new editor events (editor_opened → document_added → field_placed → editor_continue_clicked → contract_finalized) make every step between upload and payment visible, and three new redirect-flow events (checkout_opened → checkout_redirected → payment_succeeded on the success page) close the gap for subscription and sublease purchases. The funnel-snapshot script now produces per-product CTR for credit-pack, pro-subscription, and sublease-document so we can see which entry point converts best.

Editor funnel events — see drop-off between upload and checkout

New

editor_opened (with template/draft/from-landing breakdown), document_added, field_placed, editor_continue_clicked (with docCount and types), contract_finalized, and editor_continue_failed for backend errors. Each fires once per editor session so counts are comparable to upload and payment events.

Redirect-payment tracking for Pro Subscription and Sublease

New

Pro Subscription (CTA on landing → Stripe-hosted Checkout) and Sublease Document Payment (sublease form → Stripe-hosted Checkout) now fire checkout_opened before redirecting and payment_succeeded on their success pages. Real Stripe charges that previously didn't appear in the funnel are now attributed to a product.

All payment events tagged with product slug

Improvement

Inline credit-pack purchases (checkout-form.tsx) now include product, packId, and flow on every event. Funnel-snapshot script splits per-product CTR (credit-pack vs. pro-subscription vs. sublease-document) so we can see which path converts best at every step.

checkout_failed — catches backend errors before Stripe loads

New

When the create-checkout API call fails (network error, 500 response, missing URL), checkout_failed fires with the error type. We see hangs at 'opened but no Stripe' before users do.

Funnel-snapshot script: full 11-step session funnel

Infra

scripts/funnel-snapshot.ts now reports the complete page_view → upload_completed → editor_opened → document_added → field_placed → editor_continue_clicked → contract_finalized → checkout_opened → payment_submitted → payment_succeeded order with drop-off rates, plus per-product breakdown and per-flow split (inline vs. redirect).

v0.20.0

Locale-aware blog content & dependency refresh

Cleaned up 61 mis-localized blog posts that were literal translations of US-centric content into FR/IT/PT/NL/PL/TR/JA — they ranked for nothing because they referenced US laws (HIPAA, ESIGN, IRS) instead of local frameworks (eIDAS, RGPD, Kodeks cywilny, KEP). Posts with organic traffic now redirect to the locale blog index. New blog generation is locale-aware: banned-term enforcement plus required local legal frameworks per market. Stripe SDK upgraded to v22 along with all other dependencies.

Blog content now respects local jurisdictions

Improvement

Articles for non-English locales now reference the actual local legal framework (eIDAS, RGPD, BGB, Codice Civile, KEP, 電子署名法) instead of US-only terms. Geo-locked topics (HIPAA, IRS Form 8879, ABA Model Rules) are blocked from generating in non-US locales.

Removed 61 mis-localized blog posts

Infra

Posts that were just translations of US-specific topics into FR/IT/PT/NL/PL/TR/JA were deleted. The 6 posts with organic traffic now permanently redirect to the locale blog index so search-engine visitors land on something useful.

Stripe SDK upgraded to v22

Security

Stripe Node SDK bumped from v21 to v22, plus 23 other dependency updates including Next 16.2.4, React 19.2.5, Prisma 7.8, lucide-react 1.14, next-intl 4.11, zod 4.4 — keeps payment processing on the latest secure baseline.

v0.19.0

Funnel analytics & meta polish

Better visibility into the conversion funnel and a tightened Open Graph / manifest setup so links shared on social platforms render with the proper preview, theme color, and Apple web-app metadata. Plus the usual round of small UX fixes on the payment page.

Funnel-tracking analytics

New

Custom events now fire across the upload → editor → payment → sign funnel so we can see where users drop off. Wired into Vercel Analytics and Microsoft Clarity for session replay.

Manifest, theme color & Apple web-app metadata

Design

Proper PWA manifest, theme color tokens for browser chrome, and Apple-specific metadata so the site behaves like a native install on iOS Safari "Add to Home Screen".

Browser-back from payment now lands in editor

Fix

Hitting the browser back button after a Stripe redirect used to throw users into a broken state. Now it properly returns to the editor with the document still loaded.

Pricing copy reflects credit-pack model

Fix

Removed legacy "€1/document" claims from marketing pages — pricing now matches the actual credit-pack tiers (Single €1.49, Starter €4.90, Popular €9.90, Business €24.90, Pro €15/mo).

v0.18.0

Credit system, accounts & anti-abuse

The biggest change since launch: moved from per-document Stripe checkout to a credit pack system with user accounts, magic-link login, and a personal dashboard. New users get one free credit on signup, then buy packs with bonus credits stacked on top. Inline Stripe payment element means no more redirect to checkout. Plus a referral program, anti-abuse system, and exit-intent conversion optimization.

Credit packs with bonus tiers

New

Buy credits in bundles: Single (€1.49), Starter (€4.90 with +1 bonus), Popular (€9.90 with +5 bonus), Business (€24.90 with +15 bonus), or Pro at €15/month for unlimited use. Bonus credits highlighted in green throughout the UI.

User accounts & dashboard

New

Magic-link login via email (no passwords). Personal dashboard shows your documents, credit balance, and credit history. Guest documents created before signup get migrated to your account on first login.

Inline Stripe payment

New

No more redirect to Stripe Checkout. Card form is embedded directly on the payment page so you stay in context. Single pack pre-selected for one-click purchases.

Referral program

New

Each account has a 6-character referral code. Invite a friend and you both get a free credit when they sign up. Email notification when someone redeems your link.

Anti-abuse system

Security

Disposable email domains blocked at signup (~100 domains covered). IP rate limit: max 3 bonus-credit signups per IP per 24h. Browser fingerprint plus signup-fingerprint persistence prevent bonus farming via account deletion + re-registration.

Avatar dropdown & credit badge

Improvement

New header with avatar dropdown (Settings / Feedback / Logout) and a credit badge that turns mint when you have credits, gray when at zero. Click the badge to jump straight to your settings.

Conversion optimization

Improvement

Trust badges (SSL, eIDAS, GDPR), social proof on the homepage, exit-intent popup with discount, and a sticky blog CTA bar that follows you while reading articles.

v0.17.0

Better signing flow & mobile polish

The signing experience got a major redesign with an integrated document header, page tabs with status icons, and proper mobile gestures. Loading states feel responsive, navigation is unified across all step types, and pinch-to-zoom works the way users expect.

Integrated document header during signing

Improvement

Status, page counter, page tabs and the action button are now combined into one header on top of the document. Page tabs are numbered and show a pen icon for unsigned pages, a check for signed ones — colored to match each signer.

Pinch-to-zoom on mobile

Improvement

Native pinch gesture support plus dedicated zoom controls underneath the document. Touch targets for navigation arrows enlarged for fingers.

Unified navigation for every step type

Improvement

Same navigation pattern whether the document is a contract, uploaded PDF, text, or image. Reduces cognitive load and code surface.

Signing loader overlay

New

Visible loading state during the signing API call — no more wondering if the click was registered.

"Partially signed" status

New

Documents with at least one signature but not all show as "Partially signed" in the dashboard, with a clear count of remaining signers.

Missing a feature or have feedback?

Send feedback