Getting Started

The Bring-Your-Own-Sender
Setup Guide

Wire your infrastructure, build your audience, launch campaigns, and set up automation. From install to a fully running email pipeline in one guide.

🕐 ~35 minutes 📋 16 steps 🖥️ Windows

Connecting the Backend

☁️
Step 1 — Infrastructure

Integrate your Sending Identity

Because Vexifa EMP charges exactly $0.00 frontend fees, all outgoing mail is routed through the sending identity of your choice (AWS SES, Mailgun, SendGrid, Resend, Postmark, etc). We highly recommend Amazon Simple Email Service (SES) because it is widely considered the absolute cheapest enterprise gateway.

  1. Go to settings and navigate to the Sending Providers tab.
  2. Click Add Provider and select your platform.
  3. If using AWS: enter your Access Key ID and Secret Access Key.
  4. If using API providers (Mailgun, SendGrid, Resend, Postmark): enter your provided API Key and designated sending domain.
  5. If using SMTP: input your Host, Port, Username, and Password.
  6. Click Test Connection. Ensure you receive the green success ping!
💡

AWS SES credentials must have the `ses:SendEmail` and `ses:SendRawEmail` permissions attached to their IAM execution role!

Step 2 — Link & Open Tracking

Deploy your Cloudflare tracking worker

Vexifa needs a public endpoint to receive open and click events from your emails and relay them to your local machine. The app deploys this Cloudflare Worker automatically — no terminal or manual code required.

Option A — Cloudflare Auto Deploy (recommended)

  1. Go to Settings → Tracking and select Cloudflare Worker as your tracking method
  2. Find your Account ID from the right sidebar of your Cloudflare dashboard and paste it in
  3. Create a Cloudflare API Token with Workers Scripts: Edit and D1: Edit permissions, then paste it in
  4. Optionally check Cloud contact list to also deploy the subscribe/unsubscribe endpoint (needed for web signup forms)
  5. Click Deploy to Cloudflare — the app creates the D1 database and uploads the worker automatically
  6. Once deployed, your Worker URL and Subscribe URL are shown. These are auto-filled into the connection settings below.

Option B — Manual setup (advanced)

If you prefer to use the Wrangler CLI, expand the Manual Setup (Advanced) section in Settings → Tracking. It provides download buttons for the worker.js and pre-filled wrangler.toml files.

💡

Cloudflare Workers include 100,000 free requests per day. All tracking data is stored in your Cloudflare D1 database — Vexifa polls it, ingests events locally, then deletes them from D1 immediately. No data sits on Vexifa infrastructure.

📋
Step 3 — Signup Forms

Configure Cloudflare Lists & Forms

If you deployed the Cloudflare Worker with Cloud contact list enabled in Step 2, go to Settings → CF Lists & Forms to configure your signup and unsubscribe forms.

  1. Click Sync Lists Now to push your local contact lists to Cloudflare D1 — this makes them available as form targets
  2. Under Form URLs, copy the subscribe link for each list. Share these directly or embed the form on your website using the auto-generated iframe snippet
  3. Under Form Appearance, customise the title, description, button text, success message, and accent colour for your subscribe and unsubscribe forms
  4. Click Save

Subscribers who use your signup form are added to your local database in real time. Unsubscribes are processed immediately — no manual list cleaning required.

💡

Prefer to build your own form? Use the built-in Form Builder (sidebar) to generate a subscribe form for any hosting scenario — Cloudflare Worker, a local server on your PC, or a custom HTTP endpoint you control. You can also download the HTML template pack as a starting point.

🤖
Step 4 — AI Engine

Configure OpenRouter

The Vexifa OpenRouter Studio unlocks algorithmic copywriting, A/B subject line variant testing, and spam-probability ratings natively in your desktop dashboard.

  1. Navigate to openrouter.ai/keys and generate a free API key.
  2. Open the Vexifa Settings → AI / OpenRouter tab.
  3. Paste your OpenRouter API key and enable the AI Studio toggle.
  4. You can now prompt Claude, Llama, Gemini, or GPT-4 directly while writing templates and subject lines.

Audience & Templates

🎙️
Step 5 — AI Studio

Configure your Brand Voice

Before you write a single subject line, define your brand's voice. Vexifa's AI Studio uses your Brand Voice profile to generate copy that sounds like you, not a generic AI bot.

  1. Navigate to AI Studio → Brand Voice.
  2. Click New Voice. Give it a name (e.g. "Vexifa — Direct & Technical").
  3. Fill in your Brand Description, Tone Adjectives (e.g. bold, concise, authoritative), and any Words to Avoid.
  4. Optionally, paste 3–5 example paragraphs of your existing copy — the AI references these as style guides.
  5. Click Save Voice. This profile is now selectable in the AI copywriting panel whenever you write a template or subject line.
💡

You can create multiple voices — e.g. one for newsletters and one for transactional sequences. Each campaign or template can use a different voice.

📥
Step 6 — Audience

Importing your CSV list

Because Vexifa operates on an ultra-fast local SQLite database instead of a throttled cloud server, you can ingest millions of contacts in seconds.

  1. Navigate to Audiences and click Create List.
  2. Drag and drop your subscriber .csv file onto the target window.
  3. Vexifa automatically maps your CSV columns (e.g. "Mail" → "Email Address", "FName" → "First Name"). Review and adjust any mappings.
  4. Click Import. The local Go backend parses the list, runs deduplication algorithms, and finalizes your sendable audience.
💡

You can tag contacts on import using a tags column in your CSV. Tags enable powerful segmentation — e.g. sending only to contacts tagged "customer" or "trial".

📝
Step 7 — Content

Designing your Email Template

Go to the Templates screen and click New Template. Vexifa provides three ways to build your email:

  • Visual Block Builder (GrapeJS): Drag and drop images, columns, and headings to construct beautifully responsive emails.
  • Markdown Wrapper: Write simple text; Vexifa intelligently wraps it in pristine inline-CSS.
  • Raw HTML (CodeMirror): Code unrestricted HTML if you are uploading custom marketing collateral.

While editing, click the AI Assist button to generate body copy, rewrite a paragraph in your Brand Voice, or check your content's spam probability score.

Once saved, this template can be instantly assigned to any campaign and previewed in a desktop/mobile mockup simulator before sending.

Campaigns

📬
Step 8 — Preview

Check your email in Inbox Preview

Before sending to a live list, use Inbox Preview to see exactly how your template renders across different email clients — desktop Outlook, Gmail, Apple Mail, and mobile views — without sending a single email.

  1. Click Inbox Preview in the sidebar
  2. Select a template from the dropdown
  3. Browse the client previews and check for layout breaks, clipped text, and image rendering issues
  4. Switch between Desktop and Mobile viewports
💡

Run Inbox Preview every time you make significant changes to a template. Email clients are notoriously inconsistent — catching a broken layout here costs nothing; discovering it after a 500k blast costs subscribers.

🚀
Step 9 — Execution

Launch your first Campaign

You have an Audience, a Template, and a configured Sender. Go to Campaigns and click Create Campaign.

  1. Assign the Campaign a Name and select your Target Audience (apply Segment filters to target specific tags or conditions).
  2. Attach your desired Template.
  3. Set your Subject Line. Click AI Generate to produce multiple variants using your Brand Voice.
  4. Configure tracking: enable Open Tracking and Link Click Tracking.
  5. Click Send Now or schedule for a future time.

The Go backend instantiates async Goroutines, efficiently chunking your audience and bursting API payloads to your provider. A live progress chart tracks bounces, complaints, and successes via provider webhooks in real time.

🧪
Step 10 — Optimization

Run an A/B Test

Instead of guessing which subject line converts better, let Vexifa measure it. Go to Campaigns → New A/B Test.

  1. Define your Test Variable: Subject Line, From Name, or Send Time.
  2. Add 2–4 variants. Use the AI Studio button to generate additional subject line options in your Brand Voice.
  3. Set the Test Split — e.g. send 20% to each variant, hold the remaining 40% for the winner.
  4. Set the Winner Metric: Open Rate or Click Rate.
  5. Set the Auto-Send Delay — how many hours before Vexifa picks the winner and sends the rest of the list.
💡

A/B testing requires a minimum list size to be statistically significant. For small lists (<2,000), test only 2 variants and use a 50/50 split.

🔁
Step 11 — Deliverability

Configure Frequency Capping

Sending too often kills your sender reputation and increases unsubscribes. Frequency Capping ensures no single contact receives more than your defined maximum number of emails in a rolling time window — even if they qualify for multiple campaigns.

  1. Go to Settings → Sending Rules → Frequency Capping.
  2. Set a global cap (e.g. max 3 emails per 7 days per contact).
  3. Optionally, configure per-list overrides for high-frequency transactional lists.
  4. Click Save. The sending engine now enforces this rule automatically at blast time.
Frequency Capping is enforced per-contact, not per-list. A contact in 3 different lists is still capped to your global maximum.

Automation

⚙️
Step 12 — Workflows

Build an Automation Sequence

Automations let you build event-triggered email sequences — welcome series, drip campaigns, re-engagement flows, and more. Go to Automations and click New Sequence.

  1. Choose a Trigger: Contact Added to List, Tag Applied, Link Clicked, or a Manual Trigger you can call via the API.
  2. Add a Send Email node. Select the template and configure the delay (e.g. "1 hour after trigger").
  3. Add branching Condition nodes — e.g. "If contact opened the previous email → send follow-up A, else → send follow-up B".
  4. Add Action nodes: Apply Tag, Remove from List, Update Contact Field.
  5. Click Activate Sequence.

The automation engine runs on the local database. Contacts enter and exit sequences as their conditions are met — all processed locally, even when the app window is minimized.

💡

Use the Frequency Capping toggle on each Sequence node to exempt transactional sequences (like password resets or order confirmations) from your global cap.

📊
Step 13 — Intelligence

Contact Scoring & Churn Prediction

Vexifa automatically builds a score for every contact based on their engagement behaviour — opens, clicks, replies, and time since last interaction. This score surfaces who your warmest leads are and who is going cold before they unsubscribe.

Lead Scoring

  1. Go to Audiences → Contact Scoring.
  2. Review the default scoring rules (e.g. +10 for a click, +5 for an open, -20 for no engagement in 30 days).
  3. Adjust the weights to match your sales cycle and click Save.
  4. Sort your audience table by Score to find your highest-intent contacts and target them with priority campaigns.

Churn Prediction

The Churn Prediction model flags contacts whose engagement score is dropping toward a configurable threshold. Set your Churn Threshold score in the same panel. Contacts crossing that threshold are automatically tagged churn-risk, enabling you to trigger a re-engagement automation sequence before you lose them.

Combine the churn-risk tag with an Automation Sequence (Step 11) to send a "We miss you" re-engagement email automatically the moment a contact's score drops below your threshold.

Compliance

🔒
Step 14 — Compliance

Configure GDPR & Preference Center

Vexifa stores all contact data locally — it never leaves your machine. To complete your compliance setup, configure the Preference Center so subscribers can manage their own consent and email frequency.

  1. Go to Settings → Compliance → Preference Center.
  2. Enable the GDPR Mode toggle. This records a consent timestamp and source for every contact import and subscription event.
  3. Configure your Preference Categories — the email types subscribers can opt in or out of (e.g. "Product Updates", "Promotional Offers", "Weekly Newsletter").
  4. If you deployed the Cloudflare Worker in Step 2, a preference page is automatically served at /preferences on your worker URL — no regeneration needed.
  5. Add a "Manage Preferences" link to your templates using the {{preferences_url}} merge tag.
💡

GDPR consent records are stored in your local SQLite database. You can export the full consent log at any time from Settings → Compliance → Export Consent Log.

Unsubscribe handling: All unsubscribe clicks are caught by your Cloudflare Worker and immediately synced to your local database — no manual list cleaning required.

Compliance & Deliverability

📡
Step 15 — Domain Health

Run the Deliverability Checker

Before you send to a real audience, verify your sending domain's DNS configuration and blacklist status. No email is sent — this is a pure DNS audit.

  1. Click Deliverability in the sidebar
  2. Enter your sending domain (or a full email address) and click Check Domain
  3. Vexifa checks SPF, DKIM, DMARC, MX records, and common blacklists
  4. Fix any red items before your first send — missing SPF or DMARC records will cause significant deliverability problems

Your configured sending provider domains appear as quick-pick buttons at the top of the page — click one to check it instantly.

💡

Run this check every time you add a new sending domain. A clean pass on SPF, DKIM, and DMARC is the foundation of a healthy sender reputation.

⚠️
Step 16 — Sender Reputation

Configure bounce handling

Bounces — emails that couldn't be delivered — must be handled correctly or your sender reputation will degrade and your deliverability will fall across the board.

  1. Go to Settings → Bounce Handling and configure your provider's bounce notification method (webhook URL or SQS queue for SES users)
  2. Set your hard bounce threshold — contacts that hard-bounce are automatically suppressed from future sends
  3. Set your soft bounce threshold — contacts that soft-bounce repeatedly are flagged for review
  4. Click Bounces in the sidebar to review the bounce log, manually suppress addresses, or export the suppression list
💡

A hard bounce rate above 2% will get your sending account suspended by most providers. Automatic suppression after the first hard bounce keeps your list clean without any manual effort.

🚀

Your pipeline is live.

You have a fully configured email infrastructure — sending, tracking, automations, A/B testing, contact intelligence, and compliance — all running locally, all without a monthly SaaS tax.