---
title: "Employer Notifications"
slug: employer-notifications
section: Governance & Operations
status: stable
description: "Catalog of the notification triggers for partner organizations of type employer."
last-updated: 2026-10-07
---

# Employer Notifications

Catalog of the notification triggers for partner organizations of type employer. Event keys use the canonical host.* prefix defined in shared/hostNotificationTypes.ts in the Globus codebase — the single source of truth for dispatcher routing, templates, and the host-portal subscriber. The legacy employer.* prefix previously used on this docs site is deprecated and has been retired in favor of host.* (the keys map 1:1, e.g. employer.profile_created &rarr; host.profile_created).

Source-of-truth note: this catalog is regenerated from HOST_NOTIFICATION_EVENT_TYPES in shared/hostNotificationTypes.ts in the Globus Hub implementation repo (Alliance-Strategies/BackOfficePrototype), which enumerates the canonical host.* event types — 20 of them are documented below with their payload contracts (host.user.first_login, host.operating_agreement.sent and host.trial_agreement.expiring are in the enum but not yet catalogued on this page). An earlier draft tracked only 9 events sourced from a static engineering note; the four org-level and lifecycle events it omitted ( host.org_document_expired, host.org_document_expiring_soon, host.status_changed, host.contact_changed) have been added, and the operating-agreement key has been corrected to its canonical dotted form host.operating_agreement.renewed.

See also: Notification & Communication Model .

## Audience

Audience = partner organization type employer. In the existing model this maps to the Host Company / Host Organization segment for host-facing messages, and to the Account Manager segment for the internal-relay trigger host.ev_removed, delivered to Globus staff so they can relay the change to the host, and for the internal Account Manager events host.participant_matched_am, host.reservation_expiring_am and host.placement_confirmed_am.

> **Why a separate page?**
>
> The main Notification Model catalog covers cross-program notification patterns. This page is the source of truth for the 20 catalogued employer-specific (host.*) triggers, with the verbatim message bodies our partner-success team approved (where copy has been drafted).

## Trigger Catalog

All 20 catalogued host.* events (from shared/hostNotificationTypes.ts), grouped by section. Stable trigger keys are referenced by downstream orchestration (n8n / SendGrid) so message bodies and routing can evolve without breaking the contract.

| Section | Trigger | Trigger Key | Audience | Message Type | Channel | Priority | Timing/Delay | Implementation Importance | Notes |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Account / Profile | User Invited | host.user_invited | Host (invitee) | Transactional | Email | High | Immediate | Critical | Activation link email sent to invitee; enables portal access |
| Account / Profile | Profile Created | host.profile_created | Host Admin | Transactional | Email | High | Immediate | High | Status email to host admin confirming profile creation |
| Account / Profile | EV Removed | host.ev_removed | Internal (Account Manager) | Internal Alert | Email | Medium | Immediate | Medium | Internal relay to Globus staff so they can notify the host of the exchange visitor removal |
| Account / Profile | Visa Denied | host.visa_denied | Host Admin | Transactional | Email | High | Immediate | High | Notifies host admin that a participant visa was denied |
| Account / Profile | Status Changed | host.status_changed | Host Admin | Transactional | Email | Medium | Immediate | Medium | Notifies host admin of host organization status change |
| Account / Profile | Contact Changed | host.contact_changed | Host Admin | Transactional | Email | Low | Immediate | Low | Notifies host admin of contact record update |
| Account / Profile | Operating Agreement Renewed | host.operating_agreement.renewed | Host Admin | Transactional | Email | Medium | Immediate | Medium | Confirms operating agreement renewal to host admin |
| Documentation | Document Expired | host.document_expired | Host Admin | Transactional | Email | High | Immediate | High | Notifies host that a required document has expired |
| Documentation | Document Expiring Soon | host.document_expiring_soon | Host Admin | Transactional | Email | High | Immediate | High | Advance warning before document expiry |
| Documentation | Org Document Expired | host.org_document_expired | Internal (Account Manager) | Transactional | Email | High | Immediate | High | Org-level document expiry notification. Not delivered to host contacts: the scanner emits the event with empty host recipient fields and the alert goes to the host organization's Account Manager (staff email plus the in-app template `host.org_document_expired.am`), falling back to the `system` staff recipient when no Account Manager is assigned |
| Documentation | Org Document Expiring Soon | host.org_document_expiring_soon | Internal (Account Manager); Host Admin at the 7 day tier | Transactional | Email | High | Immediate | High | Advance warning before org-level document expiry. Emitted once per document and warning tier (default tiers 30, 14 and 7 days). Every tier also notifies the host organization's Account Manager (staff email plus the in-app template `host.org_document_expiring_soon.am`); the 30 and 14 day tiers carry empty host recipient fields and stay Account Manager only, and only the 7 day tier resolves a host recipient and reaches the host admin |
| New Communications | Participant Matched | host.participant_matched | Host Admin | Transactional | Email | High | Immediate | High | Notifies host that a participant has been matched to them |
| New Communications | Participant Recommended | host.participant_recommended | Host Admin | Digest or Transactional | Email | Medium | Daily rollup (or immediate opt-in) | Medium | Per-event variant; most hosts receive the daily digest variant (host.participant_recommended_digest) |
| New Communications | Participant Recommended Digest | host.participant_recommended_digest | Host Admin | Digest | Email | Medium | Daily rollup | Medium | One email per host per day listing every participant added to their recommended list in the prior 24h window |
| New Communications | Reservation Expiring | host.reservation_expiring | Host Admin | Digest | Email | High | Daily rollup | High | One email per host per day listing every reserved participant that crossed the 24h pre-expiry threshold |
| New Communications | Reservation Created | host.reservation_created | Host Admin | Transactional | Email | — | Immediate | — | Sent when a new reservation is committed against a Camp Counselor or Summer Work & Travel - Camp job order, whether staff create it for the host or the host portal does. Carries the participant-profile PDF attachment reference. Dedupe key host.reservation_created:<reservationId>, so re-saving, extending or confirming the same reservation never sends a second email |
| New Communications | Reservation Three-Day Digest | host.reservation_three_day_digest | Host Admin | Digest | Email | — | Daily rollup | — | One event per host per UTC day listing that host's active reservations picked up by the daily reservation countdown scanner (no extension used, not yet confirmed, expiring within the next 24 hours). No PDF attachment |
| New Communications | Participant Matched (Account Manager) | host.participant_matched_am | Internal (Account Manager) | Internal Digest | Email | — | Daily rollup | — | One event per assigned Account Manager per UTC day rolling up participants matched or recommended across that manager's hosts in the prior 24 hours. Hosts without an assigned Account Manager are excluded; there is no fallback recipient |
| New Communications | Reservation Expiring (Account Manager) | host.reservation_expiring_am | Internal (Account Manager) | Internal Digest | Email | — | Daily rollup | — | One event per assigned Account Manager per UTC day listing active reservations with 24 hours or less remaining across that manager's hosts. Hosts without an assigned Account Manager are excluded |
| New Communications | Placement Confirmed (Account Manager) | host.placement_confirmed_am | Internal (Account Manager) | Internal Alert | Email | — | Immediate | — | Hire notice sent to the host organization's assigned Account Manager (account_manager_user_id) after the placement is confirmed. When no Account Manager is assigned nothing is sent: there is no fallback recipient or fan-out |

## Brand Resolution (Wild Packs)

Every **host-facing** trigger in the catalog above renders under the brand resolved server-side from the host company's applicable host agreement — the required contract defined normatively at Notification Model → Agreement-Derived Brand Resolution (Wild Packs). A host whose applicable agreement's Agreement Library brand scope is Wild Packs receives all of these emails with Wild Packs sender identity, subject/body copy, visual treatment, footer, support/contact details, and portal links; hosts without an applicable Wild Packs agreement keep their existing brand or the default template. The rule is uniform across immediate sends, the scheduled scanners, the daily digests ( host.participant_recommended_digest, host.reservation_expiring), invitation and resend flows ( host.user_invited, including resend=true), and retries. Each enqueue — including a resend, which creates a new outbox row — resolves the then-applicable agreement brand fresh; only delivery retries of the same outbox row reuse the brand/template snapshot recorded on it.

> **Delivery-side exception: host.user_invited**
>
> The uniform rule above is the required contract, not what the invitation branch does today. In the n8n [Globus] Handler: Host Domain workflow, the `host.user_invited` branch (node Build Email Content) sets a fixed WildPacks identity (`from_email` `noreply@wildpacks.com`, `from_name` WildPacks, WildPacks copy; the organization name falls back to WildPacks only when no host name is supplied) and does not read the agreement-resolved brand. The other `host.*` branches of that node set no sender override. See [Host User Invitation](/docs/host-user-invitation).

> **Excluded: internal staff alerts**
>
> host.ev_removed (Account Manager relay) is delivered to Globus staff, not the host, and always uses internal staff branding regardless of the host's agreement brand. The same exclusion covers the staff-targeted host.account_manager_assigned event tracked under host governance, and the internal Account Manager events host.participant_matched_am, host.reservation_expiring_am and host.placement_confirmed_am, whose payloads carry internal-staff branding and never inherit host contact, portal or PDF attachment fields. The exclusion is by audience, not event-key prefix — no new event keys, channels, or routing controls are introduced by the branding rule.

## Routing & Rollups

> **Daily rollup rules**
>
> Recommended-list digest ( host.participant_recommended_digest) rolls up into one daily email per host listing every participant added to that host's recommended list during the prior 24h window. Hosts may also opt into the per-event variant (host.participant_recommended). 24h-remaining reservations ( host.reservation_expiring) roll up into one daily email per host listing every reserved participant that crossed the 24h pre-expiry threshold. The Account Manager rollups follow the same pattern per assigned Account Manager rather than per host: host.participant_matched_am sends one email per Account Manager per UTC day covering participants matched or recommended to that manager's hosts in the prior 24 hours, and host.reservation_expiring_am sends one per Account Manager per UTC day listing reservations with 24 hours or less remaining. Hosts themselves receive the host.reservation_three_day_digest rollup, one email per host per UTC day. The remaining events send immediately on the originating event with no batching.

## Not in Scope (Yet)

> **Explicitly excluded from this spec**
>
> Other partner organization types (recruiter, sponsor, applicant, internal staff). host.account_manager_assigned — previously listed here, but it is not part of the canonical host.* notification enum in shared/hostNotificationTypes.ts. It is a sponsor-staff, in-app back-office event (it notifies the newly-assigned Account Manager, not the host), so it is tracked under host governance rather than this host-facing catalog. See host governance . Building the actual sender (SendGrid / n8n workflows), template HTML, or in-app notification center wiring. Schema changes, outbox table, or scheduled scanners — this is a documentation/spec deliverable only. Editing existing Notification Model content beyond a cross-link to this page.
