Hook SecurityHook Docs
Troubleshooting

Troubleshoot phishing campaign delivery and results

Fix campaigns that fail to launch, stats that show as unavailable, and simulations that never reach inboxes.

When a phishing simulation doesn't behave the way you expect, the cause is almost always one of a handful of things: your organization isn't wired up to the delivery provider yet, the template you picked isn't ready, the launch didn't finish syncing, or the live stats can't be reached right now. This page walks through each of those symptoms — the exact message you see, what it means, and how to clear it — so you can tell a real problem apart from expected behavior.

Before you start

Prerequisites

  • You're signed in to Hook as an org admin with the right organization selected in the org switcher.
  • You've at least started a campaign in the campaign wizard and seen one of the errors or statuses below.

"Phishing campaigns are not available for your organization"

You see this at launch, after you click Launch Campaign:

Phishing campaigns are not available for your organization. Please contact support.

What it means

Hook delivers simulations through an upstream provider (PhishingBox), and your organization has no provider account or API key on file. Hook checks for both before it will create a campaign — if either is missing, it stops here rather than creating a half-configured campaign.

How to fix it

This isn't something you can self-serve. Provisioning the provider account and key for your organization is done by Hook.

Contact support

Email support@hooksecurity.co and let them know phishing campaigns aren't available for your org. Include your organization name.

Retry the launch

Once support confirms your org is provisioned, reopen the wizard and launch again. No settings change on your end — the same campaign details will work.

"Selected template is not ready for use"

You see this at launch when the template you chose can't be sent:

Selected template is not ready for use. Please choose another template.

What it means

Every template in the library has to be linked to a provider template before it can ship. The one you selected has no provider link yet — usually a stock template that's still being prepared, or a custom template whose sync hasn't completed.

How to fix it

Go back to the Template step and pick a different template. Most stock templates are ready; if a specific one keeps failing, report it to support so it can be relinked. You don't need to recreate the campaign from scratch — the wizard keeps your name, targeting, and other selections while you swap the template.

Phishing campaign wizard Template step with a Selected template is not ready for use error and a ready template selected instead

Campaign status shows "Failed"

A campaign in the Manage Campaigns list — or its detail page — shows a red Failed badge, and the detail page shows:

This campaign failed to sync. You can create a new campaign to try again.

What it means

Hook writes the campaign to its own database before it calls the provider, so a failed sync always leaves a visible, debuggable record rather than vanishing. Failed means the local record exists but the provider step never completed — the simulation was never actually created upstream, so no emails went out.

Two related statuses are worth knowing so you don't mistake them for a failure:

  • Pending — the campaign was created in the last few minutes and the provider call may still be finishing. Hook treats freshly-created campaigns as Pending for a short grace period before deciding anything is wrong. Click Refresh after a couple of minutes.
  • Failed — past that grace period, still no provider link. This is a real failure.

How to fix it

There is no in-place retry

A Failed campaign cannot be re-run from its detail page — there's no retry button, and the detail page's Refresh only re-reads the stored record; it doesn't re-attempt the provider step. The supported fix is to create a brand-new campaign with the same settings. (If a launch fails while you're still in the wizard, clicking Launch Campaign again retries against the same record — but once you've left the wizard and a campaign is sitting in Failed, start fresh.)

Confirm it's actually Failed, not Pending

A campaign created in the last few minutes shows Pending, not Failed — the badge only turns Failed once the provider step never completed and the grace period has passed. If you're seeing Pending, click Refresh after a couple of minutes to let the provider call finish. If the badge already reads Failed, Refresh won't change it (it only re-reads the record), so continue to the next step.

Create a new campaign

From the Manage Campaigns page, click Create Campaign and rebuild the campaign with the same name, targeting, and template. The failed record stays in your list as a record of the attempt; you can leave it.

If it fails again, check your targeting and template

A repeat failure usually points at the inputs rather than a transient hiccup. Make sure your selected groups are linked to the provider and active (deleted, inactive, or unlinked groups are rejected), and that the template is ready (see above). If it still fails, contact support with the campaign name.

Stats show "provider statistics temporarily unavailable"

On the campaign detail page, the stats strip is populated but you see:

Provider statistics are temporarily unavailable. Refresh will retry the live report fetch.

What it means

Live engagement numbers — Sent, Opened, Clicked, Reported — are pulled from the provider every time the detail page loads. When the provider can't be reached, Hook doesn't blank the page: it falls back to the data it already has locally (your enrolled count) and flags the live numbers as temporarily unavailable. The campaign is fine; only the live report fetch failed.

How to fix it

Click Refresh on the detail page. It re-fetches the live report from the provider. If the provider was briefly unreachable, the real Sent/Opened/ Clicked/Reported counts fill in. If it stays unavailable for an extended period, the provider may be having an outage — wait and refresh later.

Campaign detail page with Provider statistics are temporarily unavailable alert above unavailable metric cards and the Refresh button

Emails aren't arriving, or opens look suspiciously low

The campaign launched and shows Active, but recipients say nothing landed — or your Opened and Clicked counts are far lower than the audience size.

What it means

This is almost never a Hook problem and almost always mail-flow filtering. Two things commonly block or distort delivery:

  • Hook's sending infrastructure isn't safelisted, so your mail provider quarantines or drops the simulation before it reaches inboxes.
  • Security scanners "click" links automatically, inflating opens and clicks with bot activity that isn't a real person.

How to fix it

Safelist Hook's sending domains and IPs

Add Hook's sending domains and IP ranges to your mail provider's allow list so simulations bypass spam filtering and link-rewriting scanners. See Safelist Hook sending domains and IPs for the exact values and per-provider steps.

Authorize your recipient domains

Confirm the domains you're sending to are authorized for simulation. See Authorize recipient domains.

Re-run after the changes propagate

Mail-flow rules can take time to take effect. Once safelisting is in place, create a fresh campaign and watch the stats — opens and clicks should now track real recipient behavior.

Recipient count differs from the wizard estimate

The Estimated recipients number you saw in the wizard doesn't match the Recipients count on the campaign detail page after launch.

What it means

The wizard estimate is advisory. The real audience is resolved at send time against the live groups in the provider — so if a group's membership changed between the moment you saw the estimate and the moment you launched, the final count reflects the later reality. The estimate is a planning aid, not a guarantee.

There's a second case worth noting: the wizard's live estimate can only count recipients when your org has a provider account configured. Before that's in place, the estimate reads 0 even if you've selected groups — which is another signal that your org still needs provisioning (see the first section).

How to fix it

Nothing to fix — the detail page count is the authoritative one. If the gap is large and unexpected, check whether the groups you targeted gained or lost members recently in your directory sync, and review Sync users from Microsoft Entra to confirm membership is current.

The Enrolled Users table seems to stop at 100

On a large campaign, the Enrolled Users table never shows more than 100 rows even though the total count is higher.

This is expected behavior, not a bug

In v1, the detail page loads only the first 100 recipients for the table. The total count above the table is accurate, and a "Showing 100 of N enrolled users" line appears when there are more. The cap keeps the page fast; full per-recipient pagination isn't built yet. To see complete results, lean on the aggregate stats strip and your campaign reports rather than the table.

Common pitfalls

  • Pending isn't Failed. A campaign created moments ago shows Pending during a short grace period while the provider call finishes. Refresh before assuming it failed.
  • Failed campaigns can't be retried in place. There's no retry button on a Failed campaign — create a new one with the same settings.
  • "Stats unavailable" doesn't mean the campaign broke. It only means the live report fetch failed; local data still shows and Refresh retries.
  • A 0 recipient estimate is a provisioning signal. If the wizard estimate is stuck at 0 with groups selected, your org likely has no provider account yet.

On this page