You don't need to spend money to look professional online. With the right free tools — Cloudflare, Gmail, Formspree, and a password manager — you can have a complete, secure business presence in an afternoon. This guide walks through every step.

The Full Free Stack

Layer Tool Cost
Domain Cloudflare Registrar (near-cost) ~$9/yr
DNS / CDN Cloudflare Free
Email routing Cloudflare Email Routing Free
Send email as domain Gmail Send As Free
Website hosting Cloudflare Pages Free
Contact form Formspree Free (up to 50/mo)
Password manager Bitwarden Free
MFA Authenticator app Free

The only real cost is the domain itself. Everything else is zero.


Step 1 — Register Your Domain on Cloudflare

Cloudflare Registrar sells domains at wholesale cost with no markup — you pay exactly what ICANN charges. There are no renewal surprises.

  1. Go to dash.cloudflare.com → Domain Registration → Register a domain
  2. Search for your name (e.g. yourcompany.com)
  3. Add to cart and complete purchase
  4. Your domain is now on Cloudflare's nameservers automatically

Choose wisely: .com is still the most credible TLD for business. .io, .co, and .dev are acceptable for tech. Avoid hyphens and numbers.


Step 2 — Set Up Cloudflare Email Routing

Cloudflare Email Routing lets you receive email at you@yourdomain.com and forward it to your personal Gmail — for free, instantly.

  1. In Cloudflare Dashboard, select your domain
  2. Go to Email → Email Routing
  3. Click Enable Email Routing — Cloudflare auto-adds the required MX records
  4. Click Create Address
  5. Verify your Gmail address when Cloudflare sends the confirmation email

Now anyone who emails hello@yourdomain.com lands in your Gmail inbox.


Step 3 — Send Email As Your Domain in Gmail

Receiving is handled. Now configure Gmail so you can reply using your domain address:

  1. In Gmail: Settings (gear) → See all settings → Accounts and Import
  2. Under "Send mail as" → click Add another email address
  3. Enter your name and hello@yourdomain.com
  4. Keep "Treat as an alias" checked → Next Step
  5. SMTP server: smtp.gmail.com, Port: 587
  6. Username: your full Gmail address
  7. Password: App password (not your regular Gmail password)

Generating an App Password:

  1. Go to your Google Account → Security → 2-Step Verification
  2. Scroll to App passwords at the bottom
  3. Select app: Mail, Device: Other → type "Gmail Send As"
  4. Copy the 16-character password → paste into Gmail's SMTP setup
  5. Click Add Account → enter the verification code Gmail sends

From now on, when you reply to emails that came to hello@yourdomain.com, Gmail pre-selects that address as the sender.


Step 4 — Deploy Your Website on Cloudflare Pages

Cloudflare Pages is a Jamstack hosting platform. Free tier gives you unlimited bandwidth, custom domains, and HTTPS automatically.

Option A — Static HTML (Simplest)

  1. Create a folder with an index.html file locally
  2. Push to a GitHub repository (free account)
  3. In Cloudflare Dashboard → Workers & Pages → Create → Pages → Connect to Git
  4. Authorize GitHub, select your repo
  5. Build settings: leave blank (it detects static HTML)
  6. Click Save and Deploy

Option B — Eleventy Blog (What You're Reading Now)

The build command for Eleventy is npm run build, output directory is _site. That's exactly what powers this blog.

Connect Your Custom Domain

  1. In your Pages project → Custom domains → Set up a custom domain
  2. Enter www.yourdomain.com
  3. Cloudflare auto-adds the CNAME record pointing to your Pages URL
  4. Add a redirect rule for the apex domain (yourdomain.com → www.yourdomain.com)

Step 5 — Add a Contact Form with Formspree

Formspree gives you a backend for HTML forms — no server required. Free tier handles 50 submissions per month.

  1. Sign up at formspree.io with your email
  2. Click New Form → name it "Contact"
  3. Copy your form ID (looks like xrgdkpba)

Add this to your website's contact page:

<form action="https://formspree.io/f/xrgdkpba" method="POST">
  <input type="text" name="name" placeholder="Your name" required>
  <input type="email" name="email" placeholder="Your email" required>
  <textarea name="message" placeholder="Your message" required></textarea>
  <button type="submit">Send Message</button>
</form>

Submissions arrive in your email and in the Formspree dashboard. Enable email notifications in Formspree settings.


Step 6 — Security Baseline

A professional presence is worthless if it gets compromised. These three steps take 20 minutes and protect everything you just built.

6a. Password Manager — Bitwarden

Never reuse passwords. Bitwarden is open-source, free, and trusted.

  1. Go to bitwarden.com → Get Started → create an account
  2. Use a strong, unique master password — write it on paper and store it safely
  3. Install the browser extension and mobile app
  4. Save every existing account into Bitwarden with unique generated passwords
  5. Enable Bitwarden's built-in TOTP (Time-based One-Time Passwords) in Settings → Two-step Login

6b. MFA on Every Account

For every service in your stack, enable MFA:

Use Google Authenticator, Authy, or Ente Auth (open-source). Bitwarden also handles TOTP codes if you prefer one app.

6c. DNS Security Records

Add these DNS records in Cloudflare to prevent email spoofing:

SPF record (TXT on @):

v=spf1 include:_spf.google.com ~all

DMARC record (TXT on _dmarc):

v=DMARC1; p=quarantine; rua=mailto:hello@yourdomain.com

DKIM is handled automatically when using Gmail with an app password. If you switch to Google Workspace, DKIM keys are generated in the Admin Console.


You're Done

Your total monthly cost: $0 (plus ~$0.75/month amortized for the domain).

What you have:

This is exactly the setup used to run this blog. No vendor lock-in, no monthly SaaS fees, no excuses.