HireFlow Docs
Email

Delivery and tracking

Seeing what was sent, what happened to it, and how unsubscribes work

Every email HireFlow sends about a candidate is recorded against that candidate, whether it came from an automation, a stage change, or a one-off send.

Email history

Open a candidate and switch to the Email tab. Each entry shows what happened, when, the subject line, and the address it went to — newest first.

You'll see several entries for a single email: one when HireFlow hands it to Resend, then more as Resend reports back on what became of it.

What each event means

EventMeaningWhat to do
sentHireFlow handed the email to Resend.Nothing. This is the normal first entry.
deliveredThe receiving mail server accepted it.Nothing. This is the one that means "it arrived."
openedThe candidate opened it.Nothing. Absence proves little — many clients block the tracking pixel.
clickedThe candidate clicked a link in it.Nothing.
bouncedThe address rejected it permanently.Fix or replace the address. Repeated bounces damage your sending reputation.
complainedThe candidate marked it as spam.Stop emailing them. Consider what in the template prompted it.
failedA recipient couldn't be resolved, the provider refused the send, or a delayed send became ineligible while it waited.Check the recipient — a removed teammate, a candidate with no email, a typo'd address, or a candidate who unsubscribed during a delay.
scheduledA delayed automation is waiting to fire.Nothing yet. When the delay elapses this becomes sent, or failed if the candidate is no longer eligible.
triggeredAn event was handed to a Resend automation.Nothing more will appear here. Check Resend for what it actually sent.
render_failedThe template couldn't be rendered.Open the template — usually broken HTML or a malformed merge field.
provider_errorResend returned an error.Check your Resend connection and its dashboard for the reason.

If you only ever see sent

delivered, opened, clicked, bounced and complained all arrive from Resend after the fact, over a webhook. If your history stops at sent every time, that webhook isn't reaching HireFlow. Your emails are still being delivered; only the reporting is missing.

An admin can fix it in Settings → Integrations → Resend → Domains → Delivery events: register the endpoint URL shown there as a webhook in Resend and paste its signing secret back. See Register the delivery-events webhook.

If everything except opened and clicked arrives

Those two are the only events that depend on tracking being switched on for the domain in your Resend dashboard. If delivered lands but opened never does, that switch is where to look — not the webhook.

Unsubscribes and opt-outs

Every candidate-facing email carries an unsubscribe mechanism — always, on every path, with no setting to turn it off. Where HireFlow renders the body, that's a link in the footer and a List-Unsubscribe header; Gmail and Yahoo turn the header into a native Unsubscribe button next to the sender's name, and one click opts the candidate out immediately. It's also why HireFlow sends candidates and colleagues separate copies of the same automation — see Recipients — since the header and footer both belong on the candidate's copy alone.

For a Resend template, the header is the only mechanism: Resend renders the body, so HireFlow has nothing to append a footer link to. The send is still compliant, but if you want a visible unsubscribe link in that email, put one in the Resend template itself.

A Resend automation gets no unsubscribe unless you add one

The one candidate-facing path HireFlow doesn't render is a Resend automation: HireFlow hands over an event and Resend sends whatever you built there, so none of the above applies — no footer link, and no header.

Resend does not add one for you. An automation's email carries an unsubscribe mechanism only if the template its send step uses contains {{{RESEND_UNSUBSCRIBE_URL}}} — either as the built-in Unsubscribe Footer block or as the target of your own link. Add it there, not in the step's settings.

With the tag, the message arrives with a working footer link and List-Unsubscribe / List-Unsubscribe-Post headers, so the native Unsubscribe button appears. Without it, the candidate has no way out of the sequence at all. If you use a Resend automation for candidate-facing mail, open its template and check.

A candidate is opted out immediately either way: the footer link shows a confirmation page, the header button does it silently — there's no page for a mail client to show. From that point:

  • They are skipped by every email automation in your organization, not just the one they unsubscribed from, and not just for that job. A one-off Send email from a candidate card is refused too.
  • Internal recipients still receive their copy. A hiring manager on CC keeps getting the notification; only the candidate's own message is held back.
  • Nothing is logged at the moment they unsubscribe. A delayed send already waiting when they do, though, is recorded as failed rather than sent — see the event table above.

Opting out cannot be undone from HireFlow

There is no switch in the product to resubscribe someone. Treat a candidate's unsubscribe as final, and if you genuinely need to reach them, do it from your own mail client.

Opt-out status can also be brought in from outside: the candidate importer accepts an email opt out column, so a suppression list you already maintain can be honoured from day one.

Keeping mail deliverable

The mechanics are your Resend account's, but three habits do most of the work:

  • Keep SPF and DKIM valid. They're set once during domain verification, and they break quietly if someone edits your DNS.
  • Act on bounces and complaints. A pipeline full of stale addresses steadily lowers how many of your emails reach an inbox at all.
  • Send from a mailbox that accepts replies. Candidates reply to recruiting email. An address that bounces their reply reads as a dead end, and looks like one to spam filters too.

On this page