Skip to main content

Email Profile Flow — User Guide

Table of Contents


Overview

The Email Profile Flow module manages email profiles for campaigns. An email profile defines the sender identity, targeting configuration, sending limits, and profile type for campaign email outreach. It provides a master–detail interface: a top-level Email Profiles Grid lists all profiles for the selected campaign, and expanding a profile row reveals the Email Addresses Detail Grid for that profile.


Email Profile Lifecycle

Every email profile progresses through these states:


Prerequisites

  • A campaign must be selected before the Email Profiles page loads. If no campaign is selected, you will be prompted to choose one.
  • The user needs the EmailProfilesAndAddressesListingView permission to view the page.
  • Certain buttons require specific permissions (e.g. Add/Edit, Export).

Email Profiles Grid (Index View)

The main view displays a server-side DataTable of all email profiles belonging to the selected campaign.

Grid Layout

📐 View Mockup — Email Profiles Grid

Grid Columns

#ColumnDescription
1↓ (Expand)Arrow icon. Click to expand/collapse the email addresses detail row beneath this profile.
2LabelThe email profile label (e.g. Acme Outreach). Searchable via multi-select filter.
3StatusActive (green badge) or Inactive (red badge).
4NameThe sales agent's full name (FirstName + LastName). Searchable with multi-keyword split search.
5From NameThe sender display name used in outbound emails. Searchable via multi-select filter.
6TitleThe email title/signature title. Searchable via multi-select filter.
7Data SourceSource of prospect data (LBData, DBData, or empty). Searchable via multi-select filter.
8Source EmailThe source/reply-to email address. Hidden for Webchat profiles. Searchable via multi-select filter.
9Sales AgentThe assigned sales agent name. Searchable via multi-select filter.
10Ops OwnerThe operations owner name. Searchable via multi-select filter.
11ActiveToggle switch to enable/disable the email profile. Disabled for Webchat profiles.
12ActionContext-dependent action buttons (see Grid Actions).

Grid Actions

The Action column shows buttons depending on the profile's type:

ButtonAppears WhenWhat It Does
Edit (icon)Always (with permission)Opens the _EditEmailProfile.cshtml 3-step wizard modal pre-populated with the profile's data.
Clone (icon)Always (with permission)Opens the Clone.cshtml modal to duplicate the profile with a new label and from-name.
Generative Preview (icon)Profile type is GenerativeOpens the standalone GenerativePreview.cshtml page showing AI-generated message previews with recipient details.
Active toggleAlways (except Webchat)Switchery toggle to activate/deactivate the profile. Webchat profiles have the toggle disabled.

Search and Filtering

  • Global search: Free-text search across Label, Name (FirstName/LastName), FromName, Title, Status, DataSource, SalesAgent, and OpsOwner.
  • Column filters (via select2 multi-select dropdowns): Available on Label, Status, Name, FromName, Title, DataSource, SourceEmail, SalesAgent, and OpsOwner columns.
  • Show inactive checkbox: A switchery toggle at the top of the grid. When enabled, inactive profiles are included in the results. The DataTable reloads on toggle.

Export Options

If the user has the CamapignEmailProfilesExport permission, the toolbar provides export buttons:

  • Copy — copies table data to clipboard
  • CSV — downloads as CSV file
  • Excel — downloads as XLSX file
  • PDF — downloads as PDF
  • Print — opens a print-friendly view

Creating / Editing an Email Profile

Clicking New Email Profile (or the Edit icon on an existing profile) opens the _EditEmailProfile.cshtml modal.

Wizard Overview

The edit modal uses a 3-step wizard with a progress indicator at the top:

  • Step 1 — Identity (Label, Sales Agent, Email Accounts, Name, From Name, Phone, Title, UTM params, Approaches, Max Stages)
  • Step 2 — Prospect Limits (Max prospects per day per company — up to 9 stages)
  • Step 3 — Source & Type (Source Email, Targeted Countries, Sender Location, Ops Owner, Monthly Forecast, Data Source, Email Profile Type, Generative settings)

📐 View Mockup — Edit Email Profile Wizard

Step 1 — Identity

FieldRequiredDescription
LabelYesThe profile label (e.g. Acme Corp Outreach).
Sales AgentYesSelect from the campaign's sales agents. Auto-fills First Name, Last Name, Telephone, Email Title, Source Email, and the Email Accounts dropdown.
Email accountsNo (create) / Yes (edit)Multi-select of email addresses available for the selected sales agent. Shows a hybrid list: existing EPAs + emails from account entities (GSuiteUser, OutlookUser, SMTPUser, OtherDomainAccount) that don't have an EPA yet but belong to the same sales agent. New entries are prefixed with NEW: and auto-create EPAs on save. Required when editing an existing profile.
First NameYesAuto-filled from sales agent, editable.
Last NameYesAuto-filled from sales agent, editable.
From NameYesThe display name for outbound emails.
Email TelephoneNoContact phone number. Auto-filled from sales agent.
Email TitleYesThe title used in the email signature. Auto-filled from sales agent.
Email UTM Explainer VideoNoUTM parameter for the explainer video link.
Email UTM SignatureNoUTM parameter for the signature link.
Email ApproachesNoMulti-select of email approach strategies.
Max No of Email StagesYesNumber of email stages (1–12). Default: 4.

Step 2 — Prospect Limits

FieldRequiredDescription
MaxProspectsPerDayPerCompanyNoMax prospects per day per company — Stage 1. Default: 2.
MaxProspectsPerDayPerCompany2NoMax prospects per day per company — Stage 2. Default: 2.
MaxProspectsPerDayPerCompany3NoMax prospects per day per company — Stage 3. Default: 2.
MaxProspectsPerDayPerCompany4NoMax prospects per day per company — Stage 4. Default: 2.
MaxProspectsPerDayPerCompany5NoMax prospects per day per company — Stage 5. Default: 2.
MaxProspectsPerDayPerCompany6NoMax prospects per day per company — Stage 6. Default: 2.
MaxProspectsPerDayPerCompany7NoMax prospects per day per company — Stage 7. Default: 2.
MaxProspectsPerDayPerCompany8NoMax prospects per day per company — Stage 8. Default: 2.
MaxProspectsPerDayPerCompany9NoMax prospects per day per company — Stage 9. Default: 2.

Step 3 — Source & Type

FieldRequiredDescription
Source EmailYesThe source/reply-to email address (validated for proper email format).
Targeted CountriesNoMulti-select of countries to target.
Sender LocationYesThe sender's geographical location.
Ops OwnerYesThe operations campaign manager assigned to this profile.
Monthly ForecastNoMonthly email volume forecast.
Data SourceNoSource of prospect data: LBData (List Build), DBData (Database), or empty.
Email Profile TypeYesMulti-select: EmailOutreach, Gifting, IPMatchAndEngage, Generative, Webchat. Note: EmailOutreach and IPMatchAndEngage cannot be selected together.
Sender Offering (MessagingId)ConditionalShown only when Generative type is selected. Dropdown for AI messaging configuration.
Generate M1 Messages OnlyConditionalShown only for Generative profiles. Checkbox — checked by default. Disabled for non-SuperAdmin users.
Is BatchConditionalShown only for Generative profiles. Checkbox — checked by default. Disabled for non-SuperAdmin users.

Email Addresses (Detail Grid)

Clicking the ↓ expand arrow on a profile row loads the email accounts detail grid inline beneath that row.

Detail Grid Layout

📐 View Mockup — Email Addresses Detail Grid

Detail Grid Columns

#ColumnDescription
1EmailThe email address (e.g. john.smith@example-outreach.com).
2Sending mechanismThe email provider type (GSuite, Outlook, Postal, Other, etc.).
3Tracking domainThe tracking domain used for link tracking.
4Replace IDThe replacement email address (ReplaceID) if this address is being phased out.
5Active sendingToggle switch to enable/disable sending from this address.

Detail Grid Actions

ActionDescription
Active Sending toggleToggling the switch sends a POST to ToggleActiveSending. On success, a toastr notification is displayed. The change applies to the specific EmailProfileAddress record.
Show inactive addressesA switchery toggle at the top of the detail grid. When enabled, inactive email addresses are included in the results.

The detail grid provides Copy, CSV, Excel, PDF, and Print export buttons on the main grid only. The detail grid does not have its own export buttons.


Cloning an Email Profile

Clicking the Clone icon on a profile row opens the clone modal.

Clone Modal

📐 View Mockup — Clone Email Profile

FieldRequiredDescription
LabelYesThe new label for the cloned profile. Must be unique per campaign.
From NameYesThe new sender display name.

Clone Validation Rules

  • Label must not be empty.
  • From Name must not be empty.
  • The source profile must have an Email Title.
  • The source profile must have a Sender Location.
  • The source profile must include at least one of EmailOutreach or IPMatchAndEngage profile types.
  • If the profile type includes Generative, the cloned profile will have IsBatch = true and GenerateM1MessagesOnly = true.

Clone Flow


Generative Preview

Clicking the Generative Preview icon on a profile with Generative type opens a standalone page.

Generative Preview Page

📐 View Mockup — Generative Preview

The page has a two-column layout:

Left column — A loading spinner appears initially, then a DataTable of generated messages:

ColumnDescription
StageThe email stage number.
SubjectThe AI-generated email subject line.
TextContentThe AI-generated email body (HTML).
ActionView Log button — opens the generation log for that message in a new tab.

Toolbar buttons above the table:

  • Send a test e-mail — opens a modal to send a test email for the current recipient.
  • Shuffle recipient — loads a new random recipient and regenerates messages.

Right column — Recipient details panel:

FieldDescription
Recipient NameThe prospect's full name with LinkedIn link.
TitleThe prospect's job title.
CompanyCompany name (linked to website).
Company SizeEmployee count range.
IndustryCompany industry.
DomainCompany domain (linked to website).
DescriptionCompany description.

Active Toggle

In the email profiles grid, the Active column provides a toggle switch for each profile.

Toggle Flow

Workflow:

  1. Click the toggle switch.
  2. An AJAX POST is sent to ActivateDeactivateEmailProfile with the profile ID and the new isActive value.
  3. On success, the status badge updates and a success toastr appears.
  4. On failure, the toggle reverts to its previous position and an error toastr appears.

Note: Webchat profiles have the Active toggle disabled and cannot be toggled.


Email Account Removal (Soft-Delete)

When an email account is removed from a profile (deselected in the Email Accounts multi-select and saved), the system performs a soft-delete:

  1. The EPA's Active flag is set to false (instead of unlinking it from the profile by zeroing EmailProfileId).
  2. The associated ResponderAccount is marked as Deleted = true.
  3. The account is hidden from the normal Email Addresses detail grid view (filtered by Active = true).
  4. When "Show inactive addresses" is toggled on, removed accounts reappear in the grid.
  5. The account also disappears from the Email Accounts multi-select dropdown (filtered by Active).

Implication for the Active Sending toggle: Since Active now also serves as the "removed from profile" flag, toggling Active Sending off in the detail grid has the same effect as removing the account from the profile via the edit modal. The existing confirmation modal already warns that all associated profiles will be affected.


EPA Auto-Creation from Account Entities

When the Email Accounts dropdown includes NEW: prefixed entries (emails from account entities that don't have an EPA yet), selecting them and saving triggers automatic EPA creation:

  1. The service detects the NEW: prefix and extracts the email address.
  2. It calls IEmailProfileAddressLookupService.LookupEmailForEpaAsync(email) which uses the same domain-resolution chain as EmailProfileController.CheckEmail:
    • Parses the domain from the email
    • Looks up the domain in DomainMailService
    • Determines the inbox type (GSuite, Outlook, Hmail, Postal, SMTPDetails)
    • Resolves SMTP server/port/password from the account entity
  3. A new EmailProfileAddresses record is created with:
    • FromEmail = the email address
    • EmailSender = "PostalAPI" for Postal, "SMTP" for everything else
    • SmtpServer/SmtpPort/SmtpPassword from the lookup result
    • InboxCreatedVia and Label = the resolved inbox type
    • LoginPostalid for Postal accounts
    • Active = true, CreationDate = DateTime.UtcNow
  4. A new ResponderAccount is created for the EPA.
  5. Account-level fields (SalesAgent, AspNetUserId, SetUpCompleted) are synced from the account entity via SyncEpaFromAccountEntity(). The account entity (GSuiteUser, OutlookUser, SMTPUsers, OtherDomainAccount, or PostalAccount) is the single source of truth for SetUpCompleted. EPA mirrors the account value.

Supported Account Entity Sources

EntityFromEmail FieldDeleted FilterSales Agent Filter
GSuiteUserPrimaryEmail!DeletedAspNetUserId == salesAgentId
OutlookUserPrimaryEmail!DeletedAspNetUserId == salesAgentId
SMTPUserAddressN/A (no Deleted flag)AspNetUserId == salesAgentId
OtherDomainAccountEmail!DeletedAspNetUserId == salesAgentId
PostalAccountAddress!DeletedN/A (filtered by domain only; AspNetUserId column not yet in DB)