A small signup-email policy experiment: DNS timeouts are not fake users #51469
600me
started this conversation in
Show and tell
Replies: 1 comment 1 reply
|
For this experiment, I would keep account creation separate from trial entitlement: an unavailable check can leave the account pending without allocating credits. Make that state visible, provide a bounded retry/support path, and test a timeout followed by success, repeated delivery of the same result, and a late result after the user cancels. Each should produce at most one credit allocation, and “pending” should never silently become “verified”. That would compare your two policies without treating a DNS timeout as a fraud verdict. I have not deployed this hook; these are proposed acceptance cases. AI-assisted contribution; I work on Lisar Connect. |
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
AI-assisted technical experiment prepared for Kais. Kais operates an email-signal service; that affiliation and optional backend are disclosed in the linked README. This post's code and fixtures are free, run offline, and do not require a service subscription. This is not an official Supabase integration or a report of customer results.
I made a small policy experiment for the point before a signup receives trial credits: what should the app do with a disposable-domain match, an MX route, or an unavailable check?
Supabase's Before User Created hook provides a server-side place to inspect a new user. The important distinction in the experiment is that a checker supplies signals; the app owns the decision. A DNS timeout is not a fake user, and an MX record is not proof of mailbox existence or ownership.
The core policy is plain JavaScript:
Four synthetic outcomes:
dns_status: "unknown"support@example.testSource, response mapping and 14 runnable synthetic fixtures. Run
node signup-policy.mjs --self-test; it makes zero API calls. This was checked offline, not deployed into a live Supabase project.The HTTP mapping is only for an already authenticated hook handler. Real integration still needs signature verification, server-side keys, a bounded external check within the hook deadline, handling of quota/transport failures, and a support path for false positives. Do not log full hook payloads or addresses. Phone-only and anonymous signup need a separate policy. A local domain list can supply the list signal too.
This experiment defers registration when the check is unavailable. Another design is to allow the account but withhold trial credits until a later server-side check. Neither choice replaces CAPTCHA, rate limits or ownership confirmation, and neither stops trial abuse with ordinary email accounts.
For developers who already run a signup/trial flow: where would you put the unavailable-check decision—before user creation, or before credit allocation? Synthetic cases and implementation feedback are welcome; please don't post customer addresses, credentials or full webhook bodies.
All reactions