AuxiliumPhishFactory · Manual Portal 2.0 · November 2026
User manual · PhishFactory 2.0

Running phishing simulations with PhishFactory

PhishFactory sends realistic but harmless phishing emails to your customers' staff, records who opens, clicks, enters data, or reports them, and turns the results into a report for the customer. This manual covers every section of the portal, button by button.

17 chapters40+ annotated screenshots15 animated walkthroughs

How to read this manual

  • Numbered markers on a screenshot point at a control. Hover a marker or its entry in the legend underneath to highlight it. Click a screenshot to view it full size.
  • Figures marked GIF are recordings of the real portal. Use ↻ Replay to play one again from the start.
  • Button and field names look like this: New campaign. They match the English interface. In German the labels are translated, but everything sits in the same place.
  • Press ⌘ K (or Ctrl K) to search the manual. The search covers chapter text as well as titles.

The portal at a glance

01 · Getting started

Your first campaign, end to end

A campaign brings together four building blocks. Set each one up once, then reuse it in as many campaigns as you like.

  1. Pick the right tenant. Use the tenant switcher in the top bar to choose the customer you're working for. Anything you create belongs to that tenant. See Tenants.
  2. Check that a domain is ready. Under Domains, the domain needs nginx: active and TLS: active. The dashboard lists any domain that isn't fully set up.
  3. Create or activate a template. Write the email under Templates, insert {{phishing_link}}, and mark its red flags. Only active templates can be picked for a campaign.
  4. Create or activate a landing page. Under Landing pages. For a credential-capture page, point its form at {{data_submit_link}}.
  5. Fill a group. Under Groups, import the recipients from a CSV file or add them one at a time.
  6. Create the campaign. The four-step campaign wizard saves the campaign as a Draft. Nothing is sent yet.
  7. Start it. The Start button () schedules the emails. They go out evenly spread across the send window.
  8. Follow and report. Watch progress on the dashboard and under Send status, then open Reports for results and build the customer report.
02 · Getting started

Signing in

Open the portal address in your browser. You'll land on the sign-in page whenever you aren't signed in.

  1. Enter your email. Use the address your administrator created your account with. Upper or lower case doesn't matter.
  2. Enter your password. Passwords are at least 12 characters long.
  3. Click Sign in. You'll land on the Dashboard, or on the page you originally asked for.

There is no self-service sign-up or password reset. If you've forgotten your password, ask an administrator to set a new one under Users → Edit.

If your account or your whole company has been deactivated, sign-in is refused even with the right password.

localhost:3000/login
GIFSigning in: typing the email and password, then clicking Sign in
Signing in takes you straight to the dashboard.
localhost:3000/login
The sign-in page with email, password, and Sign in button

To sign out, click the Log out icon next to your name at the bottom of the sidebar.

04 · Getting started

Tenants: choosing which customer you work on

Each customer company is a tenant. Campaigns, templates, landing pages, groups, reports and users belong to exactly one tenant. The tenant switcher in the top bar decides which one you're looking at.

  1. Click the tenant name in the top bar (next to TENANT).
  2. Pick a customer from the list. Each entry shows the company's number and address. Your current one is marked Current.
  3. The page reloads with that customer's data.

All tenants shows every customer's records at once, with an extra Customer column. It's read-only: to create or change anything, pick a single tenant first.

Administration (Company, Domains, Logs) stays available whichever tenant you pick. Domains are a shared pool that every tenant uses.

localhost:3000/dashboard
GIFOpening the tenant picker and choosing another customer
Switching to another customer.
localhost:3000/tenants
The Select tenant page listing all customers
05 · Getting started

Roles and permissions

Every account has one role. The role decides which sections appear in the sidebar and which actions are allowed.

RoleLevelWhat it can do
Global admin1Every section, including users and domains, across all tenants.
Regional admin2Every section, but can't change or remove global admins.
Unit admin3Creates and runs campaigns, templates, landing pages and groups. Can view, but not edit, company details.
Campaign manager–Builds and runs campaigns and views their reports. No administration.
Analyst–Reports only.
End user–A phishing target, not an operator. Can't open any section.

You can't change your own role. The field is locked with the hint "Your own role — ask another admin".

06 · Overview

Dashboard

The start page. It shows every campaign in the current tenant and how far each one has got, plus anything that needs your attention.

localhost:3000/dashboard
The dashboard with key figures, currently sending campaigns, domains needing attention, and recent activity
PanelWhat it shows
CampaignsAll campaigns in the tenant, and how many are sending or scheduled.
RecipientsPeople on the rosters of campaigns that have been launched.
SentEmails sent so far, as a share of all rosters.
Click rateThe share of sent emails whose link was clicked, e.g. "3 of 7 sent".
Currently sendingEvery campaign from the moment it's started until its last recipient has been mailed: status, start time, and a progress bar ("2 of 3 sent"). All reports opens Reports.
Domains needing attentionDomains where nginx or TLS isn't active yet. This list is the same for every tenant. All domains opens Domains.
Recent administrative activityThe latest entries from the audit trail. View all opens Logs.
By tenantOnly shown with All tenants selected: campaigns, recipients, sent, and click rate for each customer.
07 · Administration

Company

Every customer on the platform. A company is a tenant: everything else, including its people, campaigns and reports, belongs to it.

localhost:3000/company
The Companies list
ControlWhat it does
New companyOpens the three-step wizard below.
Summary tilesCompanies on the platform, active ones (their people can sign in), inactive ones (switched off, records kept), and accounts across every company.
ColumnsNumber (customer number, e.g. C-1111111111), Name, Address, Users, Status. Your own company is marked Yours.
EditChanges name, address, Outlook add-in settings.
DeactivateNobody at the company can sign in any more. Campaigns, reports and history stay exactly as they are. You can't deactivate your own company.
ActivateRestores access for an inactive company.

Create a company #

A new company is always created together with its first administrator. Without one, nobody at the new company could sign in.

  1. Company: enter the Name, which email templates use as {{company}}. The Address is optional and defaults to "online". Click Continue.
  2. Outlook add-in: both fields are optional. Security contact receives reports the Outlook "report phishing" button can't identify as a simulation. Mail domains match a reporting employee's email domain to this company. Type a domain and click Add.
  3. First administrator: first name, last name, the Email they'll sign in with, and a Password of at least 12 characters. Click Create company.
localhost:3000/company
GIFWalking through the three steps of the New company wizard
The three steps of New company.
localhost:3000/company/new
Step 1 of the New company wizard

Send the administrator's password through some channel other than email.

Edit and deactivate #

localhost:3000/company/edit
Editing a company
The edit form has the company details and the Outlook add-in settings.
localhost:3000/company
Confirm dialog for deactivating a company
Deactivating asks for confirmation and explains what happens.
08 · Administration

Domains

The look-alike domains that campaigns send from and host their landing pages and tracking links on. Domains are a shared pool: every tenant draws on the same list.

localhost:3000/domains
The Domains list
ControlWhat it does
New domainAdds a domain to the pool.
Summary tilesDomains in the pool, how many are fully provisioned (nginx vhost and TLS both active), and how many of the two checks per domain are confirmed.
Domain IDCopies the domain's ID to the clipboard, e.g. for the mail script or support.
ProvisioningTwo states per domain. nginx: not yet provisioned → provisioning… → active (or failed). TLS: not requested → requesting… → active (or failed).
EditChanges the description, and shows the provisioning controls.
DeleteRemoves the domain. This can't be undone.

Add and provision a domain #

  1. Click New domain and enter the host name only, e.g. login-nordbank.de. A scheme or path you paste is stripped automatically.
  2. Add a description (optional) saying what the domain is for, then click Create domain.
  3. Open Edit and, under Reverse proxy & TLS, click Provision. This sets up the nginx vhost on the server.
  4. Click Issue certificate once nginx is active. The button stays unavailable until then.

The DNS record for the domain must already point at the PhishFactory server, or the certificate request fails.

TLS shows the result of the last certificate request. It isn't re-checked automatically, for example after a certificate expires or a renewal fails.

localhost:3000/domains/new
The New domain form
localhost:3000/domains/edit
Editing a domain, with the Provision and Issue certificate controls
The edit page, with the provisioning controls.
09 · Administration

Users

The people who can sign in to the current tenant, and what each of them may do.

localhost:3000/users
The Users list
ControlWhat it does
New userCreates an account. It can sign in straight away.
Summary tilesAccounts in this tenant, active ones, inactive ones (locked out), and active admins (global, regional or unit).
EditChanges name, email and role, or sets a new password. Leave New password blank to keep the current one.
Deactivate / ActivateLocks an account out, or lets it back in, without losing anything. Use this when someone leaves.
DeleteRemoves the account permanently. You can't delete or deactivate yourself (your own row is marked You).

Create a user #

  1. Click New user.
  2. Fill in First name, Last name, and Email, which is what they'll sign in with.
  3. Choose a Role. See Roles and permissions.
  4. Set a Password of at least 12 characters, then click Create user.
localhost:3000/users
GIFFilling in the New user form and choosing the Campaign manager role
localhost:3000/users/new
The New user form
10 · Administration

Logs

An audit trail of every administrative change in the portal: who did it, to what, and what changed. Domain changes don't belong to any customer and are marked platform-wide.

localhost:3000/logs
The Logs page with filters and entries
ControlWhat it does
Summary tilesEntries matching the current filters, People who acted in the last 30 days, and Retention. Entries older than 365 days are removed automatically.
TargetSearches the name of whatever was changed: a person, address, domain…
EventAdded, Changed, Deleted, or Performed (an action such as starting a campaign).
From / ToLimits the list to a date range.
Apply / ResetRuns the filters, or clears them.
DetailsOpens the entry: when, who, target, record ID, and a Before / After table of every changed field.
Rows and pagination10, 20, 50, or 100 rows per page. Previous and Next move between pages.
localhost:3000/logs
GIFFiltering logs by the Changed event and opening an entry's details
Filter by event, then open an entry.
localhost:3000/logs/entry
A log entry's details with before and after values
An entry shows what changed, field by field.
11 · Phishing campaign

Campaigns

A campaign sends one template to one group, linking to one landing page on one domain, spread across a time window. This section takes it from draft to finished.

localhost:3000/campaigns
The Campaigns list with status badges and row actions

Campaign status

Draft→ Start → Scheduled→ Sending→ Sent  ·  Scheduled or Sending → Cancel →Cancelled
StatusMeaning
DraftSaved, but nothing will be sent until you click Start. You can still change everything.
ScheduledStarted, but its start time hasn't been reached yet.
SendingEmails are going out across the send window.
SentEvery recipient has been handled.
CancelledStopped. Anyone not yet mailed was skipped.

Row actions

Which buttons a row shows depends on its status.

ButtonAvailable whenWhat it does
EditAlwaysOpens the campaign in the wizard to change its settings. The recipient list stays frozen to the group as it was at creation.
StatusAlwaysOpens the send status. A red dot on the icon means at least one send failed.
StartDraftSchedules the emails. Asks for confirmation first.
CancelScheduled SendingSkips everyone not mailed yet. Recipients already mailed aren't affected.
RepeatSent CancelledCreates a new draft with the same settings and the group as it is now, then opens it so you can set a new start.
DeleteNot while scheduled or sendingRemoves the campaign and its recipients permanently. Cancel a running campaign first.

Create a campaign #

New campaign opens a four-step wizard. The step list on the left shows what you've entered so far. Click a completed step to go back to it.

localhost:3000/campaigns
GIFWalking through all four steps of the New campaign wizard
The full wizard, from details to review.

Step 1 · Details

  • Name appears in the campaign list and in every report.
  • Description (optional): what this simulation is testing.
  • Tags (optional): click a suggestion such as finance or HR, or type your own and press Enter. You can search campaigns by tag later.
localhost:3000/campaigns/new
Wizard step 1: details

Step 2 · Audience and content

  • Recipient group: who receives it. Each group shows its recipient count.
  • Email template: only active templates are listed.
  • Landing page: where the link leads. Only active pages are listed.
  • Sending domain: the domain the mail comes from, which also hosts the tracking links.
localhost:3000/campaigns/new
Wizard step 2: audience and content

Step 3 · Schedule

  • Starts at: the date and time the first email may go out.
  • Send window: the number of minutes to spread the emails over. They're sent evenly across it, so they never arrive in one suspicious burst. The bar underneath shows the resulting rate, e.g. "6 emails · one every 10.0 min".
localhost:3000/campaigns/new
Wizard step 3: schedule

Step 4 · Review

Check every setting, then click Create campaign. The campaign is saved as a Draft.

Recipients are frozen the moment you create the campaign. People you add to the group afterwards aren't included. Use Repeat later to send to the group's current members.

localhost:3000/campaigns/new
Wizard step 4: review and create

Start, cancel, and repeat #

  1. Start: click on a draft. The dialog says how many real emails will be scheduled. Confirm with Start campaign.
  2. Cancel: click on a scheduled or sending campaign and confirm with Cancel campaign.
  3. Repeat: click on a finished or cancelled campaign and confirm with Create repeat, then set a new start date.

A send can't be undone. Once an email is out, cancelling only stops the ones that haven't gone yet.

localhost:3000/campaigns
The Start campaign confirmation dialog

Send status #

The button shows how a campaign is sending:

  • Send timing: a chart of planned against actual sends per interval. Hover a bar for exact numbers.
  • Send problems: every recipient whose email failed, with the number of attempts, the error, and whether it will be retried. Permanent failures are marked "Won't retry".
  • Open full report goes to the campaign's report.
localhost:3000/campaigns
GIFOpening the send status of a campaign that's sending
localhost:3000/campaigns/status
Send status with delivery failures listed
A campaign with failed sends.
12 · Phishing campaign

Templates

The phishing emails a campaign can send. Each one has a sender, a subject, an HTML body, and red flags that explain the deception to anyone who clicks.

localhost:3000/templates
The Templates list
ControlWhat it does
New templateOpens an empty editor.
Summary tilesTemplates in the tenant, active ones (offered when creating a campaign), inactive ones (hidden from new campaigns), and how many are used by at least one campaign.
Row or EditOpens the editor.
Activate / DeactivateMakes a template available for new campaigns, or hides it. Campaigns already using it aren't affected.
DeleteRemoves the template permanently.

The email editor #

localhost:3000/templates/edit
The template editor with details, email body, and red flags
ControlWhat it does
Name, DescriptionHow the template appears when someone picks it for a campaign.
Sender name, Sender emailThe display name and from-address recipients see, e.g. "IT Service Desk" <no-reply@it-helpdesk-support.com>. You can use {{company}} here too.
SubjectThe subject line.
ActiveOnly active templates can be picked for a campaign.
✏️ Visual / </> CodeTwo views of the same HTML. Visual edits it like a word processor. Code shows the raw HTML with syntax highlighting. Switch at any time.
ToolbarB bold, I italic, U underline, H heading, ☰ bulleted list, 🔗 link, 🖼 image, ▭ button, and QR code.
{ } Insert variable…Inserts a placeholder at the cursor, such as {{firstname}} or {{phishing_link}}. See Template variables.
⤢ Full viewExpands the editor to fill the window.
Preview & testOpens the preview.
Delete template, Cancel, Save changesThe bar at the bottom of the page. It also shows "Unsaved changes" when you've edited something.

Scripts and HTML comments are stripped when you save. Templates are emails, and mail clients block scripts anyway.

localhost:3000/templates/edit
GIFSwitching between Visual and Code, inserting a variable, then opening Preview and test and its tabs
Visual and Code, inserting a variable, then the preview tabs.
Code view
The HTML code view of the email body
Code view: the same email as raw HTML.

Red flags #

Red flags are the deceptive details a recipient should have noticed. When someone clicks through, the awareness page shows them the email again with each red flag highlighted and explained.

  1. Select the deceptive text in the Visual editor, e.g. "urgent" or a fake link.
  2. Click + Flag selected text. To flag the from-line or the subject instead, use + Flag sender or + Flag subject.
  3. Enter a Title, e.g. "Lookalike sender domain", and an Explanation of why it's suspicious. The Marker ID is filled in for you.
  4. Click Save red flag, then save the template.
localhost:3000/templates/edit
GIFSelecting text in the email, clicking Flag selected text, and writing a title and explanation
  • Use the arrows to reorder flags, Show in editor to find the marked text, and Edit or Remove to change one.
  • + Link existing marker picks up markers you typed by hand in Code mode (data-redflag="…" on any tag).
  • A flag marked ⚠ Not found or empty has lost its text, usually because it was deleted in Code mode. Mark the text again or remove the flag.

Preview and test #

Preview & test
The Preview and test dialog
Tab or controlWhat it does
PreviewThe email as a recipient sees it, with sample data. Switch between Desktop, Mobile and Outlook (classic).
Awareness pageThe page shown after a click, with every red flag highlighted. Hover or click a highlight to read its explanation. The badge counts the red flags.
CompatibilityA score out of 100 and a list of findings: HTML that some mail clients render badly, missing links, red flags without marked text, and so on. The badge counts the findings.
Send testSends a copy to your own email address. This only works once an SMTP server is configured.
Awareness page
The awareness page preview with highlighted red flags
Awareness page: what someone sees after clicking.
Compatibility
The compatibility report
Compatibility: what to fix before sending.
13 · Phishing campaign

Landing pages

The page a recipient reaches after clicking the phishing link, for example a fake Microsoft 365 sign-in page that captures what's typed, or an awareness page.

localhost:3000/landing-pages
The Landing pages list
ControlWhat it does
New landing pageOpens an empty editor.
TypeStandard, or Spear when the page's HTML contains a form that submits to {{data_submit_link}}.
Edit, Deactivate / Activate, DeleteSame as for templates. You can't delete a page that's the submit target of another page until you re-point that page.

The landing-page editor #

localhost:3000/landing-pages/edit
The landing page editor
  • Name: what this page is, for whoever picks it for a campaign.
  • Active: inactive pages stay editable but can't be picked for a campaign.
  • Submit landing page: where a recipient goes after submitting a form on this page. With "— None —" the same page is shown again.
  • Insert variable… offers {{mail_template}} (the email they received, rebuilt on the page) and {{data_submit_link}}.
  • The editor, toolbar and Visual / Code switch work exactly like the template editor.

For a capture form to be tracked, write it as <form method="post" action="{{data_submit_link}}">. Used as a hidden field or as plain text, the submission never reaches the tracking.

Passwords typed into a capture form are not stored. The portal only records that someone submitted the form.

14 · Phishing campaign

Groups

Recipient lists. A campaign sends to exactly one group.

localhost:3000/groups
The Groups list
ControlWhat it does
New groupCreates an empty group with a name and an optional description.
Group nameOpens the group's recipients.
EditChanges the group's name or description. The edit form also has Delete group. Groups marked Inactive aren't offered for new campaigns.
DeleteRemoves the group and its recipient list.

Inside a group #

localhost:3000/groups/…
A group's detail page with its recipients

The header shows the number of recipients, who created the group, when it was last updated, and its ID ( copies it). Each recipient has Edit and Remove.

Add one recipient

  1. Click Add recipient.
  2. Enter email, first name and last name.
  3. Save. An address that's already in the group is refused.
localhost:3000/groups/…
GIFAdding a single recipient to a group

Import recipients from CSV #

  1. Open the group and click Import recipients.
  2. Click Download template if you need the file format. It has two example rows. Replace them with the real list.
  3. Choose your file under CSV file and click Import recipients.
  4. Read the result. It shows "n of m rows imported" and lists every rejected row with its line number and the problem.
localhost:3000/groups
GIFOpening a group, opening Import recipients, and choosing a CSV file

File format

RuleDetails
Columnsemail, firstName, lastName are required (name is accepted as the surname). The first row must name them. Other columns are ignored.
German headersVorname, Nachname, E-Mail from the old portal work too.
SeparatorsComma, semicolon, or tab. Excel on a German machine writes semicolons.
EncodingUTF-8, or the Windows-1252 encoding Excel exports.
DuplicatesAn address already in the group is reported instead of being added twice, so you can safely upload a corrected file again.
email;firstName;lastName
anna.berg@example.com;Anna;Berg
jonas.keller@example.com;Jonas;Keller
localhost:3000/groups/import
The Import recipients page with the format rules

If every row fails, the columns are probably shifted or the separator wasn't recognised. Check the first few errors before working through the rest.

15 · Reporting

Reports

Results for every campaign in the tenant. Open one to see each recipient's outcome, export the raw data, or build the customer report.

localhost:3000/reports
The Reports list

The tiles show tenant-wide totals: campaigns (and how many have results), emails sent (and failed), click rate, and the share of recipients who reported the email with the Outlook add-in. Each row shows a campaign's sent count, open rate, click rate and submissions. Click a row to open its report.

A campaign's report #

localhost:3000/reports/…
A single campaign report with figures, settings, and recipient outcomes
ControlWhat it does
Export CSVOne row per recipient: when the email was sent, and the first open, click, submit and report.
Export all eventsThe full event log, including repeats such as multiple clicks.
Create/edit reportOpens the customer report builder.
Result figuresClick rate, sent, submitted, reported, and the risk level set in the report builder.
SettingsGroup, template, landing page, domain, start time, and campaign ID.
RecipientsEach person's furthest outcome (Not sent yet, Sent, Opened, Clicked, Submitted, Delivery failed, Cancelled) with the time of each first event.

Customer report builder #

Builds the management report you hand to the customer. Everything is saved as one report per campaign. There are no drafts or versions: exporting always uses what was last saved.

localhost:3000/reports
GIFOpening a report, then the report builder, setting the risk level, and scrolling to the preview
From the report to the builder and its live preview.
localhost:3000/reports/…/builder
The report builder form and preview
SectionWhat it does
Reporting periodFrom and To: only events inside this window count. Leave both blank to count everything. An end date makes later exports give the same numbers.
Executive summaryShown near the top of the report, above the statistics.
Campaign descriptionHow the campaign was run: scope, timing, method.
Overall riskLow, Medium, or High. Shown as a badge on the report and on the campaign's report page.
Report contentWhether to show the email and landing page used, with a pretext note and captions. Checkboxes choose which metrics appear (open, click, submitted, reported). An unchecked metric disappears from the tiles, the chart and the table.
List recipients by nameTurn this off to keep the numbers but stop naming individuals.
Critical findingsAdd finding: a severity, title, and description of what stood out.
RecommendationsAdd recommendation: what should happen next.
TimelineAdd entry (optional): key dates such as kick-off or launch.
PreviewShows the report as it will be exported, using the last saved period and exclusions.
Recipients in this reportTick Exclude to leave someone out of the statistics and the export, e.g. a test address. They stay on the list, so you can undo it.
Save reportSaves everything. Changes to the period or exclusions show up in the preview after saving.
Download as HTML / PDF / CSVExports the saved report. The CSV has the same recipients and dates, for further analysis.

Save before you download. The downloads use the last saved report, not unsaved edits on the screen.

16 · Reference

Template variables

Placeholders that are replaced for each recipient when the email or page is sent. Insert them with { } Insert variable… or type them in.

VariableWhereBecomes
{{firstname}}TemplatesThe recipient's first name
{{lastname}}TemplatesThe recipient's last name
{{email}}TemplatesThe recipient's email address
{{company}}Templates (also sender fields)The customer company's name
{{phishing_link}}TemplatesThe tracked link to the landing page. Use it as the href of your link or button.
{{qr_phishing_link}}TemplatesA QR code image of the same link (toolbar: Insert QR code)
{{mail_template}}Landing pagesThe email the recipient received, rebuilt on the page
{{data_submit_link}}Landing pagesThe form target that records a submission, then shows the submit landing page
17 · Reference

FAQ and troubleshooting

"New campaign" says I need to pick a tenant.

You're viewing All tenants, which is read-only. Pick a single customer in the tenant switcher.

My template or landing page isn't in the campaign wizard.

It's inactive, or it belongs to another tenant. Activate it in its list, or check the tenant switcher.

A domain won't get a certificate.

Provision nginx first: Issue certificate stays unavailable until nginx is active. Also check that the domain's DNS points at the server.

I can't delete a campaign.

Scheduled and sending campaigns have to be cancelled first.

I added people to a group, but the running campaign didn't mail them.

A campaign's recipients are frozen when it's created. Use Repeat to send to the group's current members.

The CSV import rejects every row.

The column headers don't match, or the separator wasn't recognised. Download the template and compare it to your file's first row.

"Send test" says test delivery isn't set up.

No SMTP server is configured for test emails yet. Ask your platform administrator.

Who changed this?

Look it up in Logs: filter by target, then open the entry to see the before and after values.