Visit https://www.emailjs.com/ and sign up (free tier: 100 emails/month)
- Dashboard → Email Services → Add New Service
- Choose Gmail/Outlook/Yahoo
- Authenticate your email
- Copy the Service ID (looks like:
service_abc123)
- Dashboard → Account → General
- Find Public Key in API Keys section
- Copy the Public Key (looks like:
Aif7atVmhmC4vCzO2)
- Dashboard → Email Templates → Create New Template
- Template Name: Contact Form
- Subject:
New Contact: {{subject}} - from {{from_name}} - Content: (paste the template below)
- Copy the Template ID (looks like:
template_xyz789)
New message from {{from_name}}
Email: {{from_email}}
Subject: {{subject}}
Service: {{service_interested}}
Message:
{{message}}
---
Reply to: {{reply_to}}
Open hire-me.html and find this section (around line 10):
const EMAILJS_CONFIG = {
publicKey: "YOUR_PUBLIC_KEY", // Paste your Public Key here
serviceId: "YOUR_SERVICE_ID", // Paste your Service ID here
templateId: "YOUR_TEMPLATE_ID" // Paste your Template ID here
};Replace the three values with your actual credentials.
- Open
hire-me.htmlin a browser - Fill out the form
- Click "Send Message"
- Check your email inbox
- ✓ Real-time form validation
- ✓ Clear error messages
- ✓ Loading spinner during submission
- ✓ Success/error status messages
- ✓ Automatic form reset after success
- ✓ Accessibility compliant (ARIA labels)
- ✓ Mobile responsive
- ✓ Spam protection ready
- Fields validate as users type
- Red borders show invalid fields
- Green success banner on submission
- Red error banner with helpful messages
- Button disables during submission
- Smooth animations and transitions
- Specific error messages for different failures
- Fallback to direct email if EmailJS fails
- Console logging for debugging
- Rate limit detection
- Network error handling
The configuration is at the top of hire-me.html for easy access:
<script type="text/javascript">
const EMAILJS_CONFIG = {
publicKey: "Aif7atVmhmC4vCzO2", // Your Public Key
serviceId: "service_7evq2pa", // Your Service ID
templateId: "template_u8bup9s" // Your Template ID
};
</script>- Check internet connection
- Verify CDN link is working
- Check browser console for errors
- Double-check your Public Key
- Make sure it's copied correctly (no extra spaces)
- Verify Service ID is correct
- Verify Template ID is correct
- Check that service is active in dashboard
- You've hit the 100 emails/month limit
- Wait or upgrade to paid plan
- Check spam/junk folder
- Verify email service is connected in dashboard
- Check EmailJS dashboard logs
Your template must include these variables:
| Variable | Description |
|---|---|
{{from_name}} |
Sender's name |
{{from_email}} |
Sender's email |
{{subject}} |
Message subject |
{{service_interested}} |
Selected service |
{{message}} |
Message content |
{{reply_to}} |
Reply-to address |
Find this line in hire-me.html:
<span class="button-text">Send Message</span>Find this line in the JavaScript:
showStatus('✓ Thank you for your message! I will get back to you as soon as possible.', 'success');Edit the CSS in the <style> section:
.form-status.success {
background: #d4edda; /* Light green */
color: #155724; /* Dark green */
}- ✓ Public Key is safe to expose (designed for client-side)
- ✓ No sensitive credentials in code
- ✓ EmailJS handles authentication server-side
- ✓ Consider adding reCAPTCHA for spam protection
Check your EmailJS dashboard to:
- View sent emails
- Monitor usage (emails sent/remaining)
- Check error logs
- View delivery status
Free tier limitations:
- 100 emails/month
- 2 email services
- 2 email templates
Paid plans offer:
- More emails (1,000 - 100,000/month)
- More services and templates
- Priority support
- Remove EmailJS branding
- EmailJS Docs: https://www.emailjs.com/docs/
- Dashboard: https://dashboard.emailjs.com/
- Support: https://www.emailjs.com/support/
- Full Setup Guide: See
emailjs-setup.md
- Test First: Use your own email to test before going live
- Monitor Usage: Check dashboard regularly to avoid hitting limits
- Backup Plan: Keep direct email link as fallback
- Template Testing: Use EmailJS template tester before deploying
- Error Logging: Check browser console for debugging info
After setup:
- Test the form thoroughly
- Check email delivery
- Verify error handling works
- Test on mobile devices
- Monitor first few submissions
- Consider adding reCAPTCHA if needed
Need Help? Check emailjs-setup.md for detailed instructions or visit https://www.emailjs.com/docs/