<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: himanshu</title>
    <description>The latest articles on DEV Community by himanshu (@rajhimanshu).</description>
    <link>https://dev.to/rajhimanshu</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3955872%2F97a796a9-6b85-433b-ae4f-e4deebb38f37.jpeg</url>
      <title>DEV Community: himanshu</title>
      <link>https://dev.to/rajhimanshu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rajhimanshu"/>
    <language>en</language>
    <item>
      <title>Building a Zero-Loss Lead Engine: SHA-256 MongoDB Dedup, Cloudflare Turnstile, and Google Sheets API v4</title>
      <dc:creator>himanshu</dc:creator>
      <pubDate>Tue, 11 Aug 2026 02:13:33 +0000</pubDate>
      <link>https://dev.to/rajhimanshu/building-a-zero-loss-lead-engine-sha-256-mongodb-dedup-cloudflare-turnstile-and-google-sheets-4jnn</link>
      <guid>https://dev.to/rajhimanshu/building-a-zero-loss-lead-engine-sha-256-mongodb-dedup-cloudflare-turnstile-and-google-sheets-4jnn</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F09ly7rd7v7izd7g8z57t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F09ly7rd7v7izd7g8z57t.png" alt=" " width="799" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;live site:-&lt;a href="https://wellora-healthcare.vercel.app/#demo" rel="noopener noreferrer"&gt;wellora&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;description: How I built a production-grade, highly resilient healthcare landing page and form processing pipeline with zero-duplicate lead protection, multi-layer telemetry, and automated health monitoring.&lt;/p&gt;

&lt;p&gt;When building web applications where &lt;strong&gt;every submission counts&lt;/strong&gt;—such as healthcare platforms, demo booking forms, or high-intent lead pipelines—a simple &lt;code&gt;&amp;lt;form action="..."&amp;gt;&lt;/code&gt; just doesn't cut it.&lt;/p&gt;

&lt;p&gt;If your backend relies on basic database inserts or unindexed spreadsheet scans, you face three major vulnerabilities:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Race conditions &amp;amp; duplicate spam&lt;/strong&gt; when users double-click or spammers flood your endpoint.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Silent pipeline failures&lt;/strong&gt; when third-party service credentials (like Google OAuth tokens or Turnstile keys) expire unnoticed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sluggish response times&lt;/strong&gt; caused by un-indexed full scans.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To solve this, I engineered &lt;strong&gt;Wellora Healthcare&lt;/strong&gt;—a modern, high-conversion landing page powered by an enterprise-grade backend pipeline featuring &lt;strong&gt;SHA-256 hash fingerprinting in MongoDB Atlas&lt;/strong&gt;, &lt;strong&gt;Cloudflare Turnstile bot protection&lt;/strong&gt;, &lt;strong&gt;Google Sheets API v4 lead logging&lt;/strong&gt;, and an &lt;strong&gt;automated 360° health checkup suite&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Here is how it works under the hood.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ The Tech Stack
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Frontend&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;React 19 + TypeScript + Vite&lt;/strong&gt;: Ultra-fast build toolchain with strict type safety.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vanilla CSS (Design System &amp;amp; Micro-animations)&lt;/strong&gt;: Glassmorphism, HSL tailored color palette, high contrast &amp;amp; accessibility-first design tailored for seniors and caregivers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloudflare Turnstile React Integration&lt;/strong&gt;: Invisible, privacy-focused bot verification without painful CAPTCHAs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Backend &amp;amp; Infrastructure&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Node.js + Express 5&lt;/strong&gt;: Clean API architecture exported seamlessly as Vercel Serverless Functions (&lt;code&gt;/api/demo-request&lt;/code&gt;, &lt;code&gt;/api/health&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MongoDB Atlas Free Tier&lt;/strong&gt;: SHA-256 identity hash indexing (&lt;code&gt;emailHash&lt;/code&gt; &amp;amp; &lt;code&gt;phoneHash&lt;/code&gt;) with database-enforced unique constraints (&lt;code&gt;E11000&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Sheets API v4&lt;/strong&gt;: Direct RSA-SHA256 JWT service account authentication for zero-third-party-zapier dependency.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Telemetry &amp;amp; Parsing&lt;/strong&gt;: &lt;code&gt;ua-parser-js&lt;/code&gt; for browser/OS/device identification and multi-layer IP header detection.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🏗️ System Architecture
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sequenceDiagram
    autonumber
    participant Client as 💻 User Browser
    participant API as 🚀 Express API (Vercel)
    participant CF as 🛡️ Cloudflare Turnstile
    participant Mongo as 🍃 MongoDB Atlas (Dedup Index)
    participant GS as 📊 Google Sheets API v4

    Client-&amp;gt;&amp;gt;API: POST /api/demo-request
    API-&amp;gt;&amp;gt;API: 1. Validate inputs &amp;amp; honeypot check
    API-&amp;gt;&amp;gt;CF: 2. Verify Turnstile security token
    CF--&amp;gt;&amp;gt;API: ✓ Verified Human

    API-&amp;gt;&amp;gt;Mongo: 3. Query SHA-256 (emailHash OR phoneHash)
    alt Duplicate Found
        Mongo--&amp;gt;&amp;gt;API: Match exists
        API--&amp;gt;&amp;gt;Client: 201 "Request received." (Silent Dedup)
        Note over API: Log [DEDUP] marker internally
    else Unique Submission
        Mongo--&amp;gt;&amp;gt;API: No match found
        API-&amp;gt;&amp;gt;GS: 4. Append row (IST Timestamp + User Metadata)
        GS--&amp;gt;&amp;gt;API: ✓ Row appended
        API-&amp;gt;&amp;gt;Mongo: 5. Insert { emailHash, phoneHash, createdAt }
        Mongo--&amp;gt;&amp;gt;API: ✓ Unique index enforced
        API--&amp;gt;&amp;gt;Client: 201 "Request received."
    end
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ⚡ What Makes This Special?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Sub-15ms Duplicate Detection via Dual SHA-256 Hashes
&lt;/h3&gt;

&lt;p&gt;Scanning an entire Google Sheet for existing emails or phone numbers becomes exponentially slower as your lead database grows (~500ms–1.5s per submission).&lt;/p&gt;

&lt;p&gt;Instead of storing raw PII in a secondary lookup database, we generate &lt;strong&gt;deterministic SHA-256 cryptographic hashes&lt;/strong&gt; of the normalized email and phone number:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// server/hashService.ts&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createHash&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;node:crypto&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;hashEmail&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;normalized&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;trim&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;toLowerCase&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;createHash&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sha256&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;normalized&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;digest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hex&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;hashPhone&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;phone&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;digitsOnly&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;phone&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;\D&lt;/span&gt;&lt;span class="sr"&gt;/g&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;createHash&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sha256&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;digitsOnly&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;digest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hex&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In MongoDB Atlas, we enforce &lt;strong&gt;two independent unique indexes&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;identities&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createIndex&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;emailHash&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;unique&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="nx"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;identities&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createIndex&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;phoneHash&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;unique&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Why This Is a Game-Changer:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Lightning Fast&lt;/strong&gt;: Hash lookups execute in &lt;strong&gt;5–15ms&lt;/strong&gt;, a &lt;strong&gt;97% latency reduction&lt;/strong&gt; compared to spreadsheet API scans.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Race-Condition Proof&lt;/strong&gt;: If two identical requests hit the server at the exact same millisecond, MongoDB's unique index catches the duplicate via &lt;code&gt;E11000 DuplicateKeyError&lt;/code&gt; at the database engine level.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy-First&lt;/strong&gt;: The dedup database stores zero plaintext PII—only 64-character SHA-256 strings.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  2. Silent Anti-Spam UX
&lt;/h3&gt;

&lt;p&gt;When a duplicate submission or honeypot bot trap is triggered, the API &lt;strong&gt;returns a graceful &lt;code&gt;201 Request received.&lt;/code&gt; success response&lt;/strong&gt;, but suppresses the database write and logs a &lt;code&gt;[DEDUP]&lt;/code&gt; marker on the server console.&lt;/p&gt;

&lt;p&gt;Why?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Spammers get no feedback&lt;/strong&gt;: Malicious bots cannot probe your system to determine which emails or phones exist in your database.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Users don't freak out&lt;/strong&gt;: Double-clicking users see a reassurance message without terrifying red error banners.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  3. Native Google Sheets API v4 Integration (No Zapier Needed)
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7mut7t1mfkpy7mkh3bp5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7mut7t1mfkpy7mkh3bp5.png" alt=" " width="623" height="771"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Instead of relying on third-party webhooks (like Zapier or Make) which add monthly costs and failure points, the backend signs a native &lt;strong&gt;RSA-SHA256 JWT&lt;/strong&gt; using Google Service Account credentials:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// server/googleSheetsService.ts&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;createServiceAccountJwt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;privateKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;issuedAt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;header&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;encodeBase64Url&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;alg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;RS256&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;typ&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;JWT&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}));&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;claims&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;encodeBase64Url&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;iss&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;scope&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://www.googleapis.com/auth/spreadsheets&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;aud&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://oauth2.googleapis.com/token&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;iat&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;issuedAt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;exp&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;issuedAt&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;3600&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;unsignedToken&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;header&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;claims&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;signer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;createSign&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;RSA-SHA256&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;signer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;unsignedToken&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;signer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;end&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;unsignedToken&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;signer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sign&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;privateKey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;base64url&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  4. Rich Metadata &amp;amp; Telemetry
&lt;/h3&gt;

&lt;p&gt;Every submission records enriched lead context:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Kolkata (IST) 12-Hour AM/PM Timestamp&lt;/strong&gt;: Formatted using &lt;code&gt;Intl.DateTimeFormat&lt;/code&gt; (&lt;code&gt;10 Aug 2026, 08:36:34 PM IST&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clean Browser &amp;amp; OS Parsing&lt;/strong&gt;: Powered by &lt;code&gt;ua-parser-js&lt;/code&gt; (&lt;code&gt;Chrome 128.0.0.0 / Windows 10 (Desktop)&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Layer IP Fallback&lt;/strong&gt;: Inspects &lt;code&gt;x-vercel-forwarded-for&lt;/code&gt; → &lt;code&gt;x-forwarded-for&lt;/code&gt; → &lt;code&gt;x-real-ip&lt;/code&gt; → &lt;code&gt;cf-connecting-ip&lt;/code&gt; → &lt;code&gt;socket.remoteAddress&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vercel Geo-IP Decoding&lt;/strong&gt;: Automatically extracts &lt;code&gt;City&lt;/code&gt; and &lt;code&gt;Region&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  5. Automated 360° Health Monitoring (&lt;code&gt;GET /api/health&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;Production health isn't just "is the server running?". It's "are all external services authorized and working?".&lt;/p&gt;

&lt;p&gt;The built-in health endpoint (&lt;code&gt;/api/health?deep=true&lt;/code&gt;) tests:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;API Uptime &amp;amp; Memory&lt;/strong&gt;: Node process readiness.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloudflare Turnstile Config&lt;/strong&gt;: Secret key format and readiness.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Sheets OAuth&lt;/strong&gt;: Live token issuance check.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MongoDB Atlas Index&lt;/strong&gt;: Connection pool health.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Combined with &lt;strong&gt;GitHub Actions scheduled workflows&lt;/strong&gt;, the system automatically alerts via email or Discord webhook if Google credentials expire—&lt;strong&gt;before any customer experiences a failure&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  📊 Benchmarks &amp;amp; Performance Comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Traditional Spreadsheet Scan&lt;/th&gt;
&lt;th&gt;Our SHA-256 MongoDB Architecture&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dedup Latency&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~300ms – 1,500ms&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;5ms – 15ms&lt;/strong&gt; (97% faster)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Race-Condition Safety&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌ Prone to duplicate rows&lt;/td&gt;
&lt;td&gt;✅ Database-enforced atomic unique index&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Data Privacy&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Plaintext stored in dedup DB&lt;/td&gt;
&lt;td&gt;SHA-256 hashes only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Uptime Monitoring&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Manual checks&lt;/td&gt;
&lt;td&gt;Automated deep health API + GitHub Actions&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  💡 Key Takeaways
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Decouple Dedup from Storage&lt;/strong&gt;: Use fast, indexed hash lookups for dedup while keeping your primary lead storage (Google Sheets/Postgres) simple and append-only.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enforce Uniqueness at DB Level&lt;/strong&gt;: Never rely solely on application-level &lt;code&gt;findOne()&lt;/code&gt; checks; database unique indexes prevent multi-request race conditions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build Health Probes Early&lt;/strong&gt;: Deep health endpoints that audit OAuth token issuance save hours of production debugging.&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  💬 What do you think?
&lt;/h3&gt;

&lt;p&gt;How do you handle zero-duplicate lead pipelines in your apps? I'd love to hear your thoughts in the comments below! 👇&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(If you found this article helpful, give it a 💖 and a bookmark!)&lt;/em&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>mongodb</category>
      <category>typescript</category>
    </item>
  </channel>
</rss>
