Step-by-step guide to launching your first phishing simulation and analyzing results.
This tutorial walks you through creating and launching your first phishing simulation campaign in GoPhish. You'll learn how to set up target groups, design email templates, configure landing pages, launch the campaign, and analyze the results to improve your organization's security awareness.
GoPhish Dashboard - Campaign Overview
User groups define your campaign targets. You can import users from CSV files or add them manually. Each user should have a valid email address and optional metadata like first name, last name, and position.
# CSV format for bulk import
First Name,Last Name,Email,Position
John,Doe,john.doe@company.com,Marketing Manager
Jane,Smith,jane.smith@company.com,Sales Rep
Robert,Johnson,robert.j@company.com,Developer
Or use the API to create groups programmatically:
POST /api/groups/
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"name": "Marketing Team",
"targets": [
{
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@company.com",
"position": "Marketing Manager"
},
{
"first_name": "Jane",
"last_name": "Smith",
"email": "jane.smith@company.com",
"position": "Sales Rep"
}
]
}
Email templates define the phishing message your targets will receive. Use realistic content that mimics legitimate corporate communications while incorporating tracking elements.
GoPhish supports dynamic variables to personalize emails:
| Variable | Description | Example |
|---|---|---|
{{.FirstName}} |
Recipient's first name | John |
{{.LastName}} |
Recipient's last name | Doe |
{{.Email}} |
Recipient's email | john.doe@company.com |
{{.Position}} |
Job title/position | Marketing Manager |
{{.URL}} |
Tracking link to landing page | https://gophish.company.com/?rid=abc123 |
{{.TrackingURL}} |
Transparent tracking pixel | Auto-inserted by GoPhish |
<!-- Example Email Template -->
<html>
<head>
<style>
body { font-family: Arial, sans-serif; color: #333; }
.header { background: #0078d4; color: white; padding: 20px; }
.content { padding: 20px; }
.button { background: #0078d4; color: white; padding: 12px 24px;
text-decoration: none; border-radius: 4px; }
</style>
</head>
<body>
<div class="header">
<h2>IT Security Alert</h2>
</div>
<div class="content">
<p>Dear {{.FirstName}},</p>
<p>We've detected unusual activity on your account. For security purposes,
please verify your credentials within 24 hours.</p>
<p>
<a href="{{.URL}}" class="button">Verify Account</a>
</p>
<p>If you did not request this, please contact IT immediately.</p>
<p>Best regards,<br>IT Security Team</p>
</div>
</body>
</html>
Save the template with a descriptive name like "Password Reset - Generic" for easy reference in future campaigns.
Landing pages are what users see after clicking the phishing link. They can capture credentials (for training) or simply display an awareness message.
<!-- Example Landing Page -->
<html>
<head>
<title>Account Verification</title>
<style>
body { font-family: Arial, sans-serif; max-width: 500px;
margin: 50px auto; padding: 20px; }
.form-group { margin-bottom: 15px; }
input { width: 100%; padding: 10px; border: 1px solid #ddd;
border-radius: 4px; }
button { background: #0078d4; color: white; padding: 12px 24px;
border: none; border-radius: 4px; cursor: pointer; }
</style>
</head>
<body>
<h2>Verify Your Account</h2>
<form method="POST">
<div class="form-group">
<label>Email Address</label>
<input type="email" name="email" required>
</div>
<div class="form-group">
<label>Password</label>
<input type="password" name="password" required>
</div>
<button type="submit">Verify Account</button>
</form>
</body>
</html>
Important: All captured data is stored securely in GoPhish and should be handled according to your organization's privacy policies. Never use real credentials for testing.
Configure your SMTP server to send phishing emails. This can be Amazon SES, SendGrid, or your organization's mail server.
POST /api/smtp/
Authorization: Bearer YOUR_API_KEY
{
"name": "AWS SES - Production",
"host": "email-smtp.us-east-1.amazonaws.com:587",
"username": "AKIAIOSFODNN7EXAMPLE",
"password": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"from_address": "security@company.com",
"ignore_cert_errors": false
}
See our SMTP Configuration Tutorial for detailed setup instructions.
Now that you've configured all components, you're ready to launch your campaign. You can send immediately or schedule for a specific date and time.
POST /api/campaigns/
Authorization: Bearer YOUR_API_KEY
{
"name": "Q1 2025 Security Awareness Test",
"template": {
"name": "Password Reset - Generic"
},
"page": {
"name": "Credential Capture Page"
},
"smtp": {
"name": "AWS SES - Production"
},
"url": "https://gophish.company.com",
"launch_date": "2025-01-15T09:00:00Z",
"send_by_date": "2025-01-15T17:00:00Z",
"groups": [
{
"name": "Marketing Team"
}
]
}
Track your campaign in real-time from the dashboard. GoPhish provides detailed metrics on each interaction.
| Metric | Description | Significance |
|---|---|---|
| Emails Sent | Total emails delivered | Campaign reach |
| Emails Opened | Recipients who opened email | Engagement rate |
| Clicked Link | Users who clicked phishing link | Vulnerability indicator |
| Submitted Data | Users who entered credentials | Critical security risk |
| Email Reported | Users who reported as phishing | Positive security behavior |
# Get campaign results via API
GET /api/campaigns/123/results
Authorization: Bearer YOUR_API_KEY
# Response includes timeline of events
{
"id": 123,
"name": "Q1 2025 Security Awareness Test",
"status": "Completed",
"results": [
{
"email": "john.doe@company.com",
"status": "Submitted Data",
"send_date": "2025-01-15T09:00:00Z",
"reported": false
}
],
"stats": {
"sent": 50,
"opened": 42,
"clicked": 18,
"submitted_data": 8,
"email_reported": 3
}
}
After your campaign completes, analyze the results to identify training opportunities and generate reports for stakeholders.
# Export campaign report
GET /api/campaigns/123/summary
Authorization: Bearer YOUR_API_KEY
# Download as CSV or PDF
GET /api/campaigns/123/export?format=csv
GET /api/campaigns/123/export?format=pdf
Emails Not Sending:
Emails Going to Spam:
Low Open Rates:
Learn how to design effective templates that test awareness while maintaining ethics.
View Tutorial →Set up reliable email delivery with AWS SES, SendGrid, or custom SMTP.
View Tutorial →If you encounter issues with your campaign, our support team is here to help.
Contact Support