Repository navigation
feat(website): result-aware signup box on the free tool pages - #249
Merged
Merged
Conversation
The tool pages rank but asked for nothing at the moment of highest intent: the checker's only call to action was a generic card linking to the docs, and the builders ended at a copy button. One shared ToolSignupBox now sits next to each result, with copy picked by a pure function (lib/tool-cta.ts) from what the visitor found: - checker (and its four aliases): an SES domain with issues is offered `email connect`, a non-SES domain with issues `email init`, a clean result a soft prompt; the three demo domains keep the generic offer - spf-builder, dmarc-builder: `email init` - bounce-rate-calculator, email-header-analyzer: by rate zone and by failing checks - Better Auth guide: `email connect`, stacked layout for the docs column SES detection uses the SPF record and includes, the checker's own AWS SES DKIM warning, and an SES MX host. DKIM selectors cannot identify SES. No gating or email capture, and no price claims in the box. Views and clicks are reported as tool_cta_view / tool_cta_click with tool, state and page_path; signup_click still fires on the signup link. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQS5X19PmvDpismbiPz
…etter Auth guide Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQS5X19PmvDpismbiPz
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
CodeQL flagged `includes("amazonses.com")` as incomplete URL substring
sanitization. Nothing here is a security check (it only picks which offer to show),
but the match was genuinely loose: `include:amazonses.com.evil.example` or
`notamazonses.com` was taken for SES.
SPF is now read as delegated hosts (`include:` and `redirect=`, with any qualifier),
and an MX host must be `amazonses.com` or a subdomain of it, with or without a
trailing dot. Look-alike hosts and a bare mention outside an include are not SES.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GxJAQS5X19PmvDpismbiPz
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
The free tool pages already rank, but they ask for nothing at the moment of highest intent. Over 90 days Search Console shows
/tools/ses-calculatoralone at 36K impressions, and four more tools sit at position 6 to 19. The checker's only call to action was a generic card that linked to the docs quickstart, and the SPF and DMARC builders ended at a copy button. The Better Auth guide (45 real visitors in 30 days) had no path to signup at all.What changed
One shared
ToolSignupBox, with copy chosen by a pure function (lib/tool-cta.ts) from what the visitor found:/toolsand its aliases (dmarc-checker,dkim-checker,blacklist-check,mx-lookup)email connect. Other domain with issues:email init. Clean: a soft prompt. The three demo domains keep the generic offer.spf-builder,dmarc-builderemail initbounce-rate-calculatoremail-header-analyzer/docs/guides/better-authemail connect, stacked layout for the docs columnSES detection uses the SPF record and includes, the checker's existing "AWS SES" DKIM warning, and an SES MX host. DKIM selectors cannot identify SES because it picks them at random.
The tools stay free and ungated: no email capture, and no price claims in the box.
Analytics
tool_cta_view(once per tool and state, at 50% visible) andtool_cta_clickcarrytool,state,page_path,cta_variant: tool_box_v1, pluscontrol(primary,secondaryorcopy) on clicks.signup_clickstill fires on the signup link as before. With about four signups a week, read click-through (clicks / views) per state after roughly four weeks rather than signups.Testing
tsc -bclean; biome warnings unchanged (43 before and after).stackedlayout.pnpm sitemap:datesregenerated in its own commit; it also clears the/changelogstaleness already onmain.Not verified, please check on the preview
The checker box has not been seen live: the checker needs the Cloudflare Turnstile secret, which is not set locally. Only the picker's unit tests and the types cover that wiring. Before merging, run the checker on the preview with one SES domain, one non-SES domain and one clean domain.
Review notes
WRAPS_API_KEY. Please read the wording.🤖 Generated with Claude Code
https://claude.ai/code/session_01GxJAQS5X19PmvDpismbiPz