Guide & Help MarketHub
Detailed documentation for each module. Use the table of contents on the left to jump directly to the module you need.
🚀 Quick start (5 minutes to your first campaign)
- Verify email — you receive a confirmation link at signup. Click it (the link expires in 3 days).
- Add SMTP account — Side settings: Accounts → +Add. View detailed account guide.
- Build your first leads — or scraping from Sources → Search companies, or CSV import from Contacts → Import.
- Create a template — Templates → +New or "Generate with AI".
- Launch campaign — Campaigns → +New: 4 steps (template, recipients, accounts+timing, review).
📊 Dashboard
Home page after login — shows your CRM status + live activity.
The 4 main KPIs (clickable)
- 👥 Total contacts — all leads in the CRM. Click → filter Contacts to "all".
- ✉️ With email — only those with a valid email address. Click → shows "outreach-able leads".
- 🌐 With website — leads with a detected URL (used by AI for per-contact research).
- ⭐ Average rating — quality score calculated from data completeness.
Secondary cards
- Other figures: No website, No email, Active sources
- Live activity: real-time feed of what AI assistants are doing across all campaigns
- Quick access: 4 quick-launch — AI Agent, Video AI, Social Publish, SMS
Greeting + what's new
"Hello, [Name]" + emoji based on time of day. Auto-refresh every 90 seconds — no need to manually reload.
👥 Contacts (CRM)
The command center for your leads. All imported or scraped people/companies end up here.
Page layout
- KPI strip top (6 clickable cards): Total / With email / With phone / With website / On lists / Blacklist
- Left sidebar (3 collapsible sections):
- Lists — your custom lists (static segments). Special button Blacklist (red ban icon) — exclude from all campaigns.
- Segments — AI-generated dynamic segments (e.g. "Mid-Market B2B", "Retail Bucureşti")
- Tags — free-form labels that you create
- Main table — 8 sortable columns: ☑ checkbox / Name / Email / Phone / Website / Category / Tags / Rating
Filter bar (above the table)
- Website: All / With website / Without website
- Email: All / With email / Without email
- Category: dropdown dynamically populated from your contacts
- Location: extracted from data
- County: all 41 counties + Bucharest
- Search box: real-time search across Name, Email, Address, Phone
Bulk actions (appear when you select contacts)
Action bar appears above the table when you select at least 1 contact:
- Add to list — select a list from the dropdown
- Add tag — tag picker multi-select
- Blacklist — add to blacklist (they will no longer receive anything)
- Delete — permanently delete from CRM
Buttons in section header
- 🤖 AI Insights — Claude analyzes your database, suggests new segments, dedup, normalizations
- 📥 Import — CSV (drag&drop), Mailchimp, Substack
- 📤 Export — download the current view as CSV
- 🖨️ Report — Printable PDF with KPIs + top categories + top counties
- 🧬 Duplicate — deduplication detector with merge wizard (combines notes, tags, lists)
- + Manual — add contacts one by one (Name + Email required)
Contact drawer (when you click on a name)
Opens a right panel with:
- Email, Phone, Website, Category, Rating
- Timestamped notes — add/edit/delete notes
- Associated tags — add/remove
- Campaign history — which campaigns they were a recipient in + status (sent / replied / bounced / unsubscribed)
- Toggle Blacklist per-contact
- Custom fields — your additional fields
Saved filters (presets)
Save complex filter combinations (e.g. "With email + Cluj + Construction"). Click a preset to apply it instantly.
Limits
- Bulk applies to the current page (default 50 contacts/page)
- Max 500 contacts per page view
- Search is not limited but the UI is optimized for ~100 characters
Error messages
"Fill in the location!" — when saving a contact without a location
"Nothing to merge" — on duplicate merge with no matches
"Merge failed: [detail]" — detailed merge error
🌍 Sources (Google Maps Database)
The scraping module that finds new businesses via the Google Maps Places API. Works in 2 steps: searches for businesses → extracts their emails.
Step 1: Search companies
Search fields
- Country: 🇷🇴 Romania only for now (hardcoded)
- Location: city ("Cluj-Napoca"), county ("Bihor"), country ("Romania" for national search), or multi-search separated by comma ("restaurant, cafenea, bar"). For large cities the system auto-expands to nearby neighborhoods.
- Business type / industry: optional ("avocat", "dentist"). Empty = all businesses.
- Maximum results: 1–500, default 60. Pro tip: start with 60,, increase if the area is large.
Exhaustive mode (🚀 checkbox)
Enable it + select a broad category bundle (not individual keywords). Available bundles: Food & Beverage, Professional Services, Construction, Healthcare, etc. Searches all businesses in that category for the given location — slower, but thorough.
Optional auto-actions
- Auto-apply Tags — tags applied only to new companies (deduplicated)
- Auto-add to a List — add results to an existing list
Useful buttons
- Pro tips — AI suggests niches for your location (uses Claude)
- Preset — save the current search as a reusable preset
Progress
- "Searching..." bar with ⏹ button Cancel
- Scrape is running in the background — you can navigate away, it will continue
- Results are entered into the CRM in real-time, not at the end
Step 2: Extract emails
Mode selector
- Standard (~30–40% success rate) — visits homepage + /contact. Fast, good for large batches.
- Deep Scan (~70–80% success rate) — adds Cloudflare de-obfuscation, Facebook /About, WHOIS lookup. Slower but finds hidden emails.
Companies per batch
25 / 50 / 100 / 200 / 500. Higher = faster globally but greater risk of IP blocks. 50 is the sweet spot.
Final button
"Extract emails" (green, large). Progress bar with estimated time. Valid emails are automatically added to Contacts → "Valid Emails" segment. Invalid/polluted emails are filtered out (internal blocklist of 60+ domains: Sentry, Wix, errors, etc.)
History & presets
📋 Search history
- All past searches with date, location, type, number of results
- Button Reload — re-run the same search
- Button Clear — clear history (does NOT delete scraped companies)
⭐ Saved searches
Collapsible bar with your saved searches. Click = instant re-run.
Advanced settings (expand "Advanced settings")
- 🧹 Clean polluted emails — delete malformed emails ("error-lite@duckduckgo.com" etc.) so you can re-scrape those companies
- 🔓 Unlock extraction button — unlocks the "Extract emails" button if it's stuck after a server restart
- ⚠ Delete all companies — IRREVERSIBLE. Requires typing "STERGE TOT" to confirm. Deletes all scraped companies + tags + lists.
Limits
- Supported countries: Romania only (hardcoded)
- Max results per search: 500
- Deep scan timeout: ~30s per company
Error messages
"Fill in the location!" — required field
"In exhaustive mode, choose a broad category" — bundle required when Exhaustive is ON
"Error starting scraping: [detail]" — API/connection
✍️ Email Templates (with AI Copywriter)
Email editor with 2 modes (Text / Design Studio) + built-in AI assistant.
Templates list
- Tabs: All / Mine / Gallery
- Pre-built gallery — ready-to-use example templates
- "Generate with AI" (purple sparkle) — AI generation modal
- "New template" (+) — empty editor
Mode 1: Text Editor (📝)
Subject field
- Max 200 characters (hard limit) — "0 / 50 characters" counter soft guideline
- Supports variables:
{{firma}},{{nume}},{{oras}},{{website}},{{poza_logo}} - Variables bar — quick-insert with one click at cursor
Body editor (Quill WYSIWYG)
- Real-time word count
- Formatting: Bold / Italic / Links / Lists / Headings
Attachments
- Images and PDFs (max 10MB / file)
- "Add attachment" — file picker, automatic upload
Spam score panel
- Score 0–100 (red/yellow/green)
- Issues list: "Too many caps", "Spammy words: FREE, URGENT", "Missing unsubscribe link"
- Auto-check on every text change
Mode 2: Design Studio (🎨)
Vertical split layout:
- Top: Preview iframe — toggle Desktop / Mobile / Dark mode + Product dropdown (AI context)
- Bottom: AI chat dock — conversation history, drag & drop images (max 5MB), quick-chips:
- "+ testimonial" — adds a real testimonial with author + company
- "+ pricing" — adds pricing with 3 tiers
- "+ steps" — adds numbered steps explaining how it works
- "+ stats" — large numbers + short labels
- "shorter" / "friendlier" / "dark" / "different title"
Side buttons (all modes)
- Copywriter ✨ — chat: "Rewrite subject to be catchier", "Add a strong hook", "Check for mistakes"
- AI Design ✨ (Design Studio only) — brief modal: URL + product + instructions
- Subject Lab — generates 5 subject line variants, you pick one
- Critique — AI evaluates tone, structure, CTA clarity
- Preview — preview how it looks in Gmail/Outlook
- Translations 🌍 — multi-language variants (EN, FR, DE, ES)
- Versions 🕒 — version history (auto-save), restore old versions
- Test — send a test to your inbox
- Save (blue) — required before use in a campaign
Limits
- Subject: 200 chars hard
- Body: practically unlimited, but >5000 chars = email clients will truncate
- Attachments: 10MB / file, multiple allowed
Error messages
"Write something first" — body required
"Note cannot be empty" — notes in contact drawer
📤 Email Campaigns (4-step wizard + monitoring)
Step-by-step wizard for launching a campaign.
Step 1: Template
- Campaign name (internal, e.g. "Restaurante Cluj — Aprilie")
- Select a template from your list (with thumbnail)
- "Continue" → step 2
Step 2: Recipients
Mode picker (radio)
- "All contacts with email" (default)
- "A specific list" — select from dropdown
- "By tags" — multi-select (OR logic)
"Calculate recipients" button: shows "200 of 5000" with breakdown.
Step 3: Accounts + Delivery settings
SMTP Accounts
Checkboxes for each connected account. Rotation: emails distributed equally across selected accounts.
Throttling (⏱)
- Presets: 🐢 Slow (60s) / 🚶 Medium (30s, recommended) / 🏃 Fast (10s, small lists only)
- Custom: 5–600 seconds
- Estimated display: "~2 hours 15 minutes for 450 contacts at 30s"
Schedule (📅)
- "Start immediately" (default)
- "Save draft" (start manually later)
- "Schedule for a specific date" + timezone
- Pro tips: send on Tuesday 09:00 / Wednesday 10:00 / Thursday 11:00 (B2B best times)
A/B test (🧪)
Toggle ON → enter variant B subject. 50/50, split tracks opens per variant. "RECOMMENDED" badge.
AI Options
- 🔗 Drip / Multi-step sequence: toggle ON → define follow-ups (email 2, 3) for non-responders. Step 1 = the email above. Steps 2+ are sent only if the lead hasn't replied. Button "+ Add step".
- ⏰ AI picks the optimal time per recipient: AI detects when each lead typically opens emails (from history) and sends at that time. Expected boost: +3–5% open rate.
Step 4: Review + send
Summary: Template / Recipients / Accounts / Throttle / Schedule / A/B / Drip.
Two final buttons: "Save draft" (gray) or "Start now" (blue).
Live monitoring (after start)
- Status badge: "Sending" / "Paused" / "Completed" / "Failed"
- KPI: "150 sent / 5000 estimated" + progress bar
- Throttle displayed, last update timestamp
- Buttons: Pause / Retry / Stop / Reports
AI per-contact review
If you enable AI personalization: a separate "AI Personalization" screen. Variant list on the left, detail on the right. Per contact: AI research + email body. Actions: Approve ✓ / Reject ✗ / Edit / Regenerate. "Approve all" button.
Limits
- Throttle: 5–600 seconds (hard)
- Max recipients: depends on plan
- AI per-contact: limit plan
- Drip: max 5 follow-up steps
- A/B: only 2 variants (A and B)
Error messages
"Choose a list" — list mode with no selection
"Check at least one tag" — tag mode with no selection
"You must type DELETE ALL to confirm" — when cancelling a campaign
"Plan limit exceeded. Upgrade in Settings."
📧 SMTP/IMAP accounts
Connecting email accounts — critical for deliverability.
Accounts list
Cards with: Email / Provider / SMTP host / Status (✓ connected / ✗ failed). Buttons per card: Test SMTP / Test IMAP / DNS / Delete.
Add account (modal)
| Field | Example | Notes |
|---|---|---|
| contact@firma-ta.ro | Required | |
| SMTP Host | smtp.hostinger.com | Required |
| SMTP Port | 465 | Required |
| Encryption | SSL / TLS / None | SSL for port 465, TLS for 587 |
| Username | (usually = email) | — |
| Password | ••••••••• | Locally encrypted with Fernet |
| IMAP Host | imap.hostinger.com | For reply tracking |
| IMAP Port | 993 | Standard SSL |
| Daily limit | 300 | Default ~300 Hostinger, 500 Gmail |
| Warmup mode | checkbox | Recommended for new accounts (<30 days) |
Test SMTP / Test IMAP
Send test connection. Results: ✓ OK or ✗ "Auth failed" / "Connection timeout".
DNS check
Displays SPF / DKIM / DMARC status. Each ✓ (valid) or ⚠️ (missing). Guidance: "Add this SPF record to your DNS: v=spf1 include:smtp.hostinger.com ~all".
Setup Hostinger Email
- Login hPanel → Emails → Email Accounts
- Copy SMTP/IMAP settings:
- SMTP host:
smtp.hostinger.com - SMTP port: 465 (SSL)
- IMAP host:
imap.hostinger.com - IMAP port: 993 (SSL)
- SMTP host:
- Using the same credentials as the webmail
Setup Gmail (Google Workspace)
- Enable 2FA on your Google account
- Generate app password: myaccount.google.com/apppasswords
- In MarketHub:
- SMTP host:
smtp.gmail.com - Port: 465 (SSL)
- User: your email
- Password: application password
- SMTP host:
- Click Test SMTP before saving
DNS records for deliverability
- SPF: TXT
v=spf1 include:{provider} ~all - DKIM: provider gives you selector + TXT public key
- DMARC: TXT
v=DMARC1; p=quarantine; rua=mailto:dmarc@tau-domeniu
Limits
- Hostinger: ~300–500 emails/day
- Gmail: ~500/day
- Warmup ramp: 10 → 20 → 40 → 100/day in ~4 weeks
- New accounts (<30 days): warmup required
Error messages
"Missing required fields: [host, port, ...]" — please fill them in
"Auth failed" — incorrect password/username
"Connection timeout" — host unreachable
"DNS check failed: SPF record invalid"
📈 Reports
KPIs, funnel, deliverability, heatmaps.
Report types
- Campaign reports (default):
- KPI grid: Opens / Clicks / Replies / Bounces / Unsubscribes
- Funnel: Sent → Delivered → Opened → Clicked → Replied (% per step)
- Time-series chart: cumulative opens/clicks over the campaign duration
- Top leads: who opened, clicked, replied (sortable table)
- Deliverability:
- Bounce rate per domain (gmail.com 2%, yahoo.com 4%)
- Hard vs soft bounces breakdown
- Auto-blacklisted domains (rate >15%)
- Opens/Clicks tracking:
- Click map (which links are clicked most often)
- Opens heatmap (open time vs. send time)
- Unique vs repeat opens
- Unsubscribes log: timestamp, email, reason (optional). Export CSV.
- Comparison: choose 2–5 campaigns, KPI grid side-by-side
Date range
Last 30 days (default). Selectable: 1, 7, 14, 30, 60, 90 days.
Buttons
- 📥 CSV — export dashboard data
- 📄 Print — generate a printable PDF
- 🖨️ Report — full report in a new window
Limits
- Lookback: 2 years
- Comparison: max 5 campaigns
- Export: first 5000 rows
🍎 Apple Search Ads — AI autopilot
Connect your Apple Search Ads account + AI generates a blueprint + optimizes daily.
Connection
Empty state: "Connect your Apple Search Ads account" → "Sign in with Apple" button (OAuth). If you have multiple MCCs, select from the dropdown.
Dashboard (after connection)
KPI grid
Impressions 👁 → Clicks → CTR → Spend 💰 → Conversions 🎯 → Avg CPC
Date range
1 / 7 / 14 / 30 / 60 / 90 days.
Buttons
- + Add account — ASA connection
- 📖 Guide — walkthrough setup
- ℹ️ How it works — explain AI Blueprint + Auto-Pilot
- 🤖 AI Optimizer — run manually
- 🎯 Conversions — conversion tracking
- 🩺 Diagnostics — check API endpoints
- 🏥 Account Health — opt score + holds check
- 🤖 AI Automations — auto-negative loop, daily summary
- 🔓 Disconnect
AI Brief card
Weekly summary: top actions, flagged issues. "🔄 Refresh" re-run AI (consumes quota). "View all →" opens the full AI Pro Brief.
AI Optimizer actions
- AI Blueprint: App URL → AI generates 3–4 ad groups + 15 headlines/group + 4 descriptions + sitelinks/callouts. You activate them.
- Daily optimizer (auto): extracts search terms → identifies waste → suggests "Add negative keyword: X" or "Pause Y". Logged with undo.
- Auto-Pilot: safe actions applied automatically (negative keywords). Risky ones require 1-click approval.
Charts
- Cost & Conversions/day (time-series)
- Search terms breakdown (top performers)
- Competitor insights (if available from ASA API)
Limits
- Accounts: 1 active per user (switch from dropdown)
- Update: daily (overnight)
- Search term history: last 90 days
Error messages
"Developer Token missing" — admin must configure the ASA API key
"Account not connected" — OAuth expired or revoked
🔍 Google Ads — AI autopilot
Same pattern as Apple Ads but for Google.
Connection
"Sign in with Google direct" (OAuth). Walkthrough in "📖 Step-by-step guide". Admin setup required: OAuth Client ID/Secret + Developer Token.
Dashboard
Top: customer account ID dropdown + buttons: + Add account, 📖 Guide, ℹ️ How it works, 🤖 AI Optimizer, 🎯 Conversions, 🩺 Diagnostics, 🏥 Account Health, 🤖 AI Automations, 🔓 Disconnect. Date range 1–90 days.
AI Brief + KPI
👁 Impressions / 👆 Clicks / 📊 CTR / 💰 Spend / 🎯 Conversions / 💵 Avg CPC. Charts: Cost & Conversions, CTR per campaign, Search term mining.
AI Blueprint workflow
- Enter website/landing page URL
- 1 sentence about the offer
- AI generates 3–4 ad groups + 15 headlines/group + 4 descriptions + sitelinks/callouts/structured snippets (multi-language)
- Review → activate campaigns
Daily Optimizer + AI Automations
- Auto-Negative Loop — auto-add negative keywords for low-ROAS
- Daily Summary — email digest KPI + AI insights
- Smart Bidding rec — "Switch to Target CPA" if conversion tracking is good
- Time-of-day optimization — adjust bid per hour
Limits
- Accounts: 1 active per session
- Search terms: last 90 days
- Update: daily
- Google API: 10000 ops/day, 60 ops/min
Error messages
"Google OAuth Client ID + Secret missing" — admin Platform Keys
"Developer Token not approved by Google" — approval process takes 24–72h
"Account has no conversion tracking" — Account Health warning
💬 SMS Mode
SMS campaigns with GSM-7, drip validation, automatic opt-out.
SMS Accounts (admin-only)
- Gateway SMS (RO): Connection ID + Password
- Gateway SMS (international): API credentials + phone number
- Webhook STOP replies: auto-blacklist when recipient replies "STOP" (legally required)
SMS Templates
Character limits (CRITICAL)
- GSM-7 (no diacritics): 160 chars = 1 SMS, 153 chars/segment for multi-part
- Unicode (with ă/â/î/ş/ţ): 70 chars = 1 SMS, 67 chars/segment
- UI validation: real-time counter shows "153 chars remaining (1 SMS)" or warns "With diacritics: 67 chars (UCS-2)"
Variables: {{nume}} / {{firma}} / {{oras}} / {{telefon}}
Library: 16 pre-built templates (RO market examples).
SMS Campaigns
- Recipient modes: all with phone / list / tags
- Throttle: 5–60s recommended (avoids carrier blocks)
- Schedule: immediately or scheduled (NOT before 08:00, NOT after 22:00 — legal compliance)
- A/B test: optional variant B (split 50/50)
- Drip: follow-up if no reply (less frequent than email)
SMS Drip sequences
Max 5 follow-ups. Trigger: "No reply after 3 days" → SMS2. Auto-stop on reply or unsubscribe.
SMS Reports
- Status per recipient (sent / delivered / failed / bounced)
- Breakdown: carrier blocks / invalid numbers / opt-outs
- Total volume, debounce rate
Limits & constraints
- Daily: ~1000 SMS/account (provider + plan limit)
- Sender name: max 11 alphanumeric characters (requires 1–2 day approval)
- Opt-in: MANDATORY in the EU (RO included)
- Unsubscribe: every SMS must include "STOP" or similar
Error messages
"Message exceeds GSM-7 limit" — diacritics → UCS-2 multi-part
"Select a list"
"SMS Gateway is not connected"
💳 Plan & Subscription
Settings → Plan. Stripe handles payment; your card is not stored by us.
Current plan card
- Tier (Free / Starter / Pro / Business / Enterprise)
- Monthly cost (for paying users)
- Included features (checkmark list)
- Renew date / current period end
Usage breakdown – current month
- Emails sent / Monthly limit
- SMS sent / Limit
- AI Conversations / Limit
- Agent calls / Limit
- Approved agent messages
Actions
- Upgrade / Downgrade — anytime. The difference is automatically prorated in Stripe.
- Pause — up to 3 months. While paused you don't pay, but you can't send.
- Cancel — at the end of the paid period. Data is retained for 30 days, then purged.
- Manage in Stripe Portal — change card, download invoices
Tier limits (indicative)
| Plan | Emails/month | SMS | AI agents | Ads accounts |
|---|---|---|---|---|
| Free | ~100 | 0 | 1 | 1 |
| Starter | ~5K | 500 | 2 | 1 |
| Pro | ~10K | 2K | 5 | 3 |
| Business | ~50K | 10K | 30 | 8 |
| Enterprise | unlimited | unlimited | 100 | unlimited |
Error messages
"Plan limit exceeded. Upgrade in Settings."
"Plan suspended — resume payment"
⚙️ Settings (all tabs)
Profile
- KPI strip: "Member for X days" / "Last login" / "Active sessions" / "Role"
- Avatar URL or auto initials
- Full name (used in greeting + AI signatures)
- Language: 🇷🇴 Română / 🇬🇧 English (toggle UI)
- Time zone: Europe/Bucharest default + 7 other options
Security
- Change password (current + new + confirm)
- Email verify status
- 2FA — toggle (coming soon)
- Delete account: "Request permanent deletion" → 30 grace days (cancellable) → purge
Active sessions
- Current session: device + location + last active
- Other sessions: full list with fingerprints
- Revoke session per row (X)
- Logout all others — a single button
Account activity (audit log)
Event timeline: Login / Campaign started / Template created / Password changed. Per entry: timestamp / action / IP / User-Agent. Filter by date. Max 100/page.
Notifications
- Browser notifications toggle
- Preferences table by event:
- Columns: In-app / Email / Browser (checkboxes)
- Per event-type: Campaign started, Reply received, AI draft pending, etc.
- Auto-saved on change
Company (per-user, GDPR + CAN-SPAM)
- Company name — appears in email footer
- Company website — clickable link
- Office address — GDPR required
- Unsubscribe text — free-form + unsubscribe link
- Default signature — used by AI if you don't specify another
Google Calendar
- Connect Google Calendar (OAuth)
- Default meeting duration (15 / 30 / 60 min)
- Calendar selection — choose which of your calendars
Plan & billing
View Plan & Subscription.
GDPR Export
- Large button: "📥 Download ZIP export"
- Contains CSVs: businesses.csv / campaigns.csv / campaign_recipients.csv / email_templates.csv / products.csv / audit_log.csv / profile.csv + metadata.json
- Passwords/tokens are [REDACTED]
- Automatically audit-logged (each export appears in Account Activity)
Admin-only tabs (only is_admin=1)
- Sending — provider rate limits, throttle defaults
- System — DB health, queue, error logs
📈 Deliverability — how to stay out of Spam
- SPF + DKIM + DMARC configured (see SMTP Accounts)
- Automatic warm-up: new account starts at 10 emails/day, gradually increases to 100 (~30 days)
- List hygiene: hard bounces are auto-suppressed. Recipients who haven't opened 10+ emails are excluded.
- Daily limit per account: 50–100 emails/day/account at the start
- Dedicated folder: separate domain/subdomain (
outreach.firma.ro) so you don't damage the main domain's reputation - Content: avoid CAPS LOCK, too many links, "FREE!!!", "URGENT". Real personalization reduces spam score.
In Reports → Deliverability view bounce rate per domain. Below 2% is OK, above 5% — pause + investigate.
🔒 GDPR & Unsubscribe
Compliance built-in
- List-Unsubscribe header (RFC 8058) — Gmail/Outlook shows native "Unsubscribe" button
- Footer with unsubscribe link in every automated email
- One-click unsubscribe page (GET or POST), no confirmation
- Per-tenant scope: unsubscribing from user A does not stop user B's campaigns
- Re-subscribe available — the user can go back
- Consent log immutable for audit
Your rights (as a MarketHub user)
- GDPR Export (Art. 20): Settings → GDPR Export → ZIP with CSVs
- Account deletion (Art. 17): Settings → Security → 30 grace days, cancellable
- Audit log access: Settings → Account activity
🛠 Troubleshooting
"Test SMTP" fails
- For Gmail — an app password is required, not your account password (myaccount.google.com/apppasswords)
- Port 465 vs 587 — try a different port
- Firewall provider — some hosting providers block 25/465 outbound
The campaign stopped without an error
- Plan quota likely reached — Settings → Plan
- Or all SMTP accounts have reached the daily limit — auto-resume at 00:00 UTC
Emails land in Spam
- Check SPF/DKIM/DMARC for your domain (Accounts → DNS)
- Use a dedicated domain for cold outreach
- Reduce volume to 30–50 emails/account for the first 14 days
- Personalize content — identical templates = spam signal
I'm not receiving replies in the UI even though I have replies in my inbox
- IMAP configured & tested OK?
- Accounts → Test IMAP → run manually
- Polling requires a Message-ID match — if a lead replies without using "Reply" (new email), fuzzy matching may be skipped
"Failed: connection timeout" on SMTP send
- The provider has blocked the IP (rate limit) — wait 1h
- Wrong SMTP host (check your email account settings)
SMS not being delivered
- Check SMS credit (admin)
- Sender name approved?
- Diacritics double the cost (UCS-2 = 70 chars/SMS)
Apple/Google Ads — "Developer Token missing"
The admin must configure the Developer Token + OAuth Client ID/Secret in Admin → Platform Keys. For Google, the token requires 24–72h approval.
❓ Frequently Asked Questions
📞 Contact & Support
- 📧 Email: office@caiostudio.eu
- 🌐 Website: markethub.dev
- 🩺 Platform status: /status
Average response time: 4–12h on business days.