DomainEx is a SaaS (Software-as-a-Service) platform that centralises your paid advertising operations across Meta (Facebook/Instagram) and TikTok into a single, AI-powered dashboard. It is purpose-built for media buyers, performance marketers, affiliate marketers, and e-commerce operators who need real-time visibility, intelligent recommendations, and postback-based conversion tracking — without stitching together multiple tools.
At its core, DomainEx solves three fundamental problems:
| Role | Primary Use Case |
|---|---|
| Media Buyers | Run and optimise paid ads on Meta and/or TikTok. Need CPA, ROAS, CTR, and conversion data in one place. |
| Affiliate Marketers | Promote third-party offers via tracking links. Require postback integration with networks like MaxBounty, ClickBank, EverFlow, GoHighLevel. |
| E-Commerce Operators | Drive direct-to-consumer sales. Need revenue attribution from pixel events and postback conversions. |
| Marketing Agencies | Manage multiple client accounts. Use the Admin Panel to impersonate users and monitor platform-wide health. |
| Growth Teams & Testers | Evaluate the platform end-to-end — connect accounts, create tracking links, review AI insights, and stress-test every feature. |
track.domainex.app — supports MaxBounty, ClickBank, EverFlow, GoHighLevel, and any S2S-compatible networkUnderstanding the underlying stack is useful for testers diagnosing unexpected behaviour.
DomainEx is fully multi-tenant. Every piece of data — campaigns, tracking links, metrics, settings — is scoped to the authenticated user's account. All data queries are isolated by userId. Admin users can view and impersonate any user account for support purposes only.
DomainEx is accessible at https://www.domainex.app. The platform is optimised for desktop use (1280px+ screen width). Mobile browsing is supported but some data tables may require horizontal scrolling.
If you have been given a pre-created account, use those credentials to log in. The admin can also use the Admin Panel to impersonate your account and verify your data is correctly scoped.
From the DomainEx homepage, click "Log In" and enter your registered email and password. The session persists until you manually log out or the JWT token expires. To log out, navigate to Settings and click "Sign Out".
After login, you land on the Operations Overview page. The left sidebar is your primary navigation:
| Page | Description |
|---|---|
| Operations | Top-level KPI dashboard — spend, revenue, ROAS, CPA, leads, impressions, clicks |
| Campaigns | Full list of all synced campaigns with status, budget, metrics |
| Analytics | Time-series charts and breakdown analysis across campaigns |
| Performance | Tracking links manager — postback-based offer performance |
| ROI Simulator | Forecast tool — simulate revenue/profit at different spend levels |
| Intelligence | AI-powered insights — budget reallocation, top/underperforming campaigns, AI chat |
| Creatives | Ad creative viewer — images, videos, copy for all ads |
| Competitor Intel | Meta Ad Library search — spy on competitor ad creatives |
| Tracking Domains | Set up custom CNAME tracking domains |
| Billing | Subscription and payment management |
| Settings | Account settings, connected integrations, profile |
| Admin Panel | Admin Only Platform stats, user impersonation |
DomainEx needs to be connected to your Meta and/or TikTok ad accounts before any campaign data can be synced. This is done via OAuth — you authorise DomainEx to read your ad data without sharing your password.
ads_read + business_management). These are read-only — DomainEx cannot create, modify, or delete your campaigns.Navigate to Settings > Connected Accounts and click "Connect TikTok Account". A TikTok OAuth popup will open — log in with your TikTok for Business credentials and grant DomainEx read access. TikTok campaigns will begin syncing automatically after authorisation.
After connecting an ad account, DomainEx runs an initial sync to pull all campaign and ad data from the last 90 days. This process runs immediately upon connection and may take 30–90 seconds depending on the number of campaigns. Subsequently, it runs automatically every 30 minutes.
If you see empty states or dashes after connecting, wait 1–2 minutes and hard-refresh the page (Ctrl+Shift+R / Cmd+Shift+R).
The Operations Overview is your command-centre dashboard. It aggregates the most important KPIs across all your connected campaigns into a single bird's-eye view. This is the default landing page after login.
At the top-right of the Operations page you will find date range buttons. Clicking any button instantly recalculates all metric cards for the selected period.
| Button | Period |
|---|---|
| 7D | Last 7 days (default view on load) |
| 15D | Last 15 days |
| 30D | Last 30 days |
| 60D | Last 60 days |
| 90D | Last 90 days |
A platform filter button (Meta / TikTok) also appears at the top right, allowing you to filter metrics to a single platform or view combined totals.
| Metric | Description | Source |
|---|---|---|
| Total Spend | Total ad spend across all campaigns in the selected period, in USD | Meta Insights API / TikTok Ads API |
| Est. Revenue | Estimated revenue from postback conversions tracked via track.domainex.app. Requires postback integration. | DomainEx Postback Server |
| Avg. ROAS | Return on Ad Spend = Revenue / Spend. Shows "0x" if no revenue data is available. | Calculated: Revenue / Spend |
| Active Campaigns | Count of campaigns currently in ACTIVE status (not paused or archived) | Meta / TikTok API |
| Conversion Rate | Total conversions divided by total clicks, expressed as a percentage | Calculated: Conversions / Clicks |
| Avg. CPA | Cost per acquisition = Total Spend / Total Conversions. Lower is better. | Calculated: Spend / Conversions |
| Impressions | Total ad impressions served across all campaigns in the period | Meta / TikTok API |
| Clicks | Total link clicks across all campaigns in the period | Meta / TikTok API |
| Total Leads | Meta-native lead events: form fills, Facebook Pixel leads, and on-site lead groups. Specific to Meta lead-gen campaigns. | Meta Insights API |
| Tracked Events | Server-side postback events logged by track.domainex.app. Requires setup. | DomainEx Postback Server |
Est. Revenue and ROAS require the DomainEx postback tracking system to be active. You must: (1) create tracking links on the Performance page, (2) add the postback URL to your affiliate network, and (3) receive at least one confirmed conversion postback. Until then, revenue stays at $0 — this is expected behaviour.
Below the metric cards, the Operational Feed shows a real-time log of recent platform events: Meta/TikTok account connected, campaign sync completed, new tracking link created, and postback conversions received. Each event is timestamped and is useful for testers to confirm that actions are executing correctly.
Two metric cards — "Tracked Events" and "User Journeys" — display setup prompts when postback tracking is not yet configured. These are not errors — they are guided prompts to help users activate the relevant feature. Click "Set up" to be taken to the appropriate setup page.
The Campaigns page shows every campaign pulled from your connected Meta and TikTok accounts. This is the primary list view for monitoring campaign health at a glance.
| Column | Description |
|---|---|
| Campaign Name | The name as it appears in Meta Ads Manager or TikTok Ads |
| Platform | Meta or TikTok — indicated by platform logo |
| Status | ACTIVE PAUSED ARCHIVED — synced from the ad platform |
| Budget | Daily or lifetime budget set in the ad platform |
| Spend | Total spend in the selected date window |
| Impressions | Total impressions in the selected date window |
| Clicks | Total link clicks |
| CTR | Click-through rate = Clicks / Impressions |
| CPA | Cost per acquisition for this campaign |
| Conversions | Total conversion events (leads + pixel events) |
| Leads | Meta-native lead events (form fills + pixel leads) |
| ROAS | Return on Ad Spend for this campaign (requires revenue data) |
The campaign list supports column sorting (click any column header), platform filter (Meta or TikTok only), status filter (Active, Paused, or Archived), and date range alignment with the global date range selector.
Clicking on any campaign name opens the Campaign Detail page (domainex.app/dashboard/campaigns/[id]), providing a deep-dive into a single campaign's performance.
Clicking "AI Analysis" sends this campaign's data to Claude Haiku, which returns a structured analysis covering campaign health assessment, strongest and weakest performing ads, specific actionable recommendations, and budget efficiency observations. The response renders as formatted markdown.
DomainEx automatically syncs campaigns every 30 minutes. If you need the latest data immediately, navigate to Settings and trigger a manual sync. Alternatively, an admin can trigger a sync from the Admin Panel.
The Analytics page provides time-series visualisation and cross-campaign comparison. It is designed for identifying trends, diagnosing spend efficiency changes, and understanding the relationship between spend, clicks, and conversions over time.
At the top of the Analytics page, you can select a date range (7D, 15D, 30D, 60D, 90D), a campaign filter (specific campaign or all campaigns combined), and a platform filter (Meta only, TikTok only, or all platforms).
A row of summary cards shows totals for the selected period: Total Spend, Total Clicks, Total Impressions, Total Leads, Conversion Rate, and Average CPA.
The main chart area shows time-series line charts where each data point represents one day.
| Chart View | Purpose |
|---|---|
| Spend vs. Conversions | Dual-axis chart showing daily spend and daily conversion count — helps spot days where spend was high but conversions were low |
| Impressions vs. Clicks | Shows reach vs. engagement trends — useful for identifying creative fatigue |
| CTR Over Time | Click-through rate trend — a declining CTR suggests audience saturation or creative fatigue |
| CPA Over Time | Cost per acquisition trend — rising CPA signals declining efficiency |
| Leads Over Time | Daily Meta-native leads (form fills + pixel events) — Meta lead-gen campaigns only |
The Analytics page includes an AI Insights section powered by Claude Haiku. After loading your data, Claude analyses the trends and returns structured observations including efficiency trends (improving or declining CPA), anomalies (days with unusually high or low performance), and recommendations tied to specific campaigns or time periods.
The Performance page is DomainEx's offer-level tracking system. It allows you to create unique tracking links for any offer URL, route traffic through the DomainEx tracking server (track.domainex.app), and receive postback conversions from affiliate networks — attributing every conversion back to the exact campaign and ad that drove it.
| Metric | Description |
|---|---|
| Total Revenue | Sum of all confirmed postback revenue across all tracking links |
| Total Cost | Total ad spend attributed to offers with active tracking links |
| Total Profit | Revenue minus Cost — net profit from tracked campaigns |
| Avg. ROI | Return on Investment percentage = (Profit / Cost) × 100 |
| Total Clicks | Total clicks through all tracking links (LP clicks) |
| LP Clicks | Landing page clicks — confirmed click-throughs to your offer URLs |
Once you have a tracking link, configure your affiliate network to send postback pings to DomainEx when a conversion occurs.
Replace {clickId} with your network's click ID macro, and {payout} with the payout macro. The type parameter accepts: lead, sale, install, other.
Supported affiliate networks with native postback: MaxBounty, ClickBank, EverFlow, GoHighLevel, and any network that supports server-side postback / S2S tracking.
clickId, timestamp, IP, user agent, and referring campaign.clickId and records the conversion and revenue. The conversion appears in the Performance table and feeds into Operations revenue metrics.The ROI Simulator allows you to model projected revenue and profit for a campaign at different spend levels, based on historical performance data. It is designed to answer: "If I double my budget, what should I expect in return?"
The ROI Simulator pulls the most recent campaign metrics from DomainEx and projects forward using a linear model based on daily spend average, historical conversion rate, and average revenue per conversion. Projections are calculated at 1x, 1.5x, 2x, 3x, and 5x current daily spend.
| Column | Description |
|---|---|
| Budget Scenario | The spend multiplier being modelled (e.g. 1.5x current spend) |
| Projected Daily Spend | The dollar amount you would be spending per day |
| Projected Monthly Spend | Daily spend × 30 |
| Projected Conversions | Based on historical conversion rate applied to projected traffic |
| Projected Revenue | Projected conversions × average revenue per conversion |
| Projected Profit | Projected Revenue minus Projected Spend |
| Projected ROI | Return on Investment percentage for each scenario |
The ROI Simulator uses linear extrapolation — it assumes that conversion rates and revenue per conversion remain constant as spend increases. In reality, scaling spend often affects conversion rates (audience saturation, bid competition). Use the simulator as a directional guide, not a guarantee. Revenue projections are only accurate if you have active postback tracking returning revenue data.
The Intelligence page is DomainEx's AI command centre. It combines structured budget recommendations with a conversational AI assistant, all powered by Anthropic's Claude Haiku model.
The first section highlights your top-performing campaigns based on composite scoring of ROAS, CPA efficiency, and conversion volume. For each top performer, Claude provides:
The second section identifies campaigns consuming budget without delivering adequate returns. For each underperformer, Claude provides a diagnosis of what is causing poor performance, specific recommendations (pause, restructure, test new creative, narrow audience), and a risk assessment of how much budget is being wasted.
The Budget Reallocation section analyses your entire campaign portfolio and recommends specific dollar amounts to move between campaigns to maximise overall ROAS. This section loads all campaigns regardless of whether one is selected (platform-level analysis), shows the current budget allocation, and recommends moving specific dollar amounts with clear reasoning.
Budget Reallocation recommendations are generated using the most recent sync data. If your campaigns were synced more than 2 hours ago, consider triggering a manual sync from Settings before reviewing recommendations for critical decisions.
An interactive chatbox embedded on the Intelligence page. When you send a message, DomainEx fetches your current campaign data, constructs a system prompt with your campaign context, sends your message + data to Claude Haiku via the Anthropic API, and streams the response back to the chat interface. Claude's response is aware of your actual numbers — it references your specific campaigns by name.
| Question | What Claude Does |
|---|---|
| "Why is my CPA so high on the NICO campaign?" | Analyses NICO's metrics and diagnoses the specific drivers (low CTR, poor landing page conversion rate, high CPM, etc.) |
| "Should I pause my TikTok campaigns?" | Compares Meta vs TikTok performance and gives a data-backed recommendation |
| "How much budget should I allocate to leads campaigns?" | Reviews your leads data and Meta lead-gen campaign performance to recommend a split |
| "What's my best creative this month?" | Identifies the top-performing ad by CPA and CTR and explains why it works |
| "Give me a 30-day performance summary" | Produces a structured executive summary of all campaigns in the last 30 days |
The chat maintains a rolling conversation history of up to 20 messages, allowing Claude to answer follow-up questions without you needing to repeat context.
The Creatives page provides a visual browser for all ad creatives (images, videos, and copy) associated with your synced campaigns. It is useful for auditing what is running, reviewing creative performance, and identifying ads that need to be refreshed.
Creatives are displayed as cards. Each card shows the ad creative (thumbnail image or video preview), ad name, associated campaign, ad status (Active or Paused), and key performance metrics: Impressions, Clicks, CTR, and Spend.
Use the campaign filter dropdown at the top of the page to view creatives for a specific campaign. The filter works client-side — all creatives are loaded and the view is narrowed based on your selection.
The Competitor Intel page integrates with the Meta Ad Library to let you search for ads currently running from any Facebook Page. This is a powerful competitive research tool — you can see what creatives, copy, and offers your competitors are running across Meta.
Each result shows: the Facebook Page running the ad, ad creative (image or video), ad copy and headline, start date (when the ad began running), platforms (Facebook, Instagram, Messenger, Audience Network), and status (Active or Inactive).
The Meta Ad Library shows all currently active ads and recently stopped ads. It does NOT show impression counts, spend data, or targeting details — those are not publicly available.
The Tracking Domains page allows you to connect custom domains to the DomainEx tracking server. Instead of using track.domainex.app in your links, you can use a branded domain like clicks.yourbrand.com — which improves link trust and may improve click-through rates.
track.yourbrand.com).track.domainex.app.The number of custom tracking domains available depends on your subscription plan. On the trial/starter plan, you may be limited to 1 custom domain. Upgrade your plan in Billing to add more.
The Automation page is designed to house rules-based campaign management. In the current version, Automation serves as the foundation for future automated actions.
Automation rules are not yet fully active in this release. The page is present and the framework is in place. Testers should note the interface but not expect rules to fire automatically during testing. This feature is on the product roadmap for the next major release.
The Settings page is your account configuration hub — managing your profile, connected ad accounts, notification preferences, and security.
| Field | Description |
|---|---|
| Full Name | Update your display name on the platform |
| Email Address | Your login email — changing this requires re-verification |
| Password | Change your account password (minimum 8 characters) |
| Profile Picture | Upload an avatar (optional) |
This section shows all currently connected ad platforms. Click "Disconnect" next to any platform to revoke access. To connect a new account, click "Connect Meta Account" or "Connect TikTok Account" and follow the OAuth flow described in Section 2.5.
You can trigger a manual campaign sync from Settings at any time. This forces an immediate pull from Meta/TikTok APIs and updates all campaign, ad, and metrics data in the database. The automatic background sync runs every 30 minutes regardless.
To sign out of DomainEx, scroll to the bottom of the Settings page and click "Sign Out". Your session is immediately invalidated and you are redirected to the login screen.
The Billing page manages your DomainEx subscription — viewing your current plan, upgrading or downgrading, and managing payment methods.
The top of the Billing page shows your current subscription tier, billing period (monthly or annual), next renewal date, and current usage relative to your plan limits.
DomainEx offers tiered subscription plans. Plans typically differ by number of connected ad accounts, number of campaigns that can be synced, number of custom tracking domains, AI insight refresh frequency, and priority support access. Contact the DomainEx team or refer to the pricing page on domainex.app for the latest plan details.
Billing is processed via Stripe. DomainEx does not store your payment card information — all payment data is handled securely by Stripe. To update your payment method, click "Manage Payment Methods" on the Billing page.
The Admin Panel is only visible to users with the "admin" role. Regular users will not see the "Admin Panel" link in the sidebar.
| Metric | Description |
|---|---|
| Total Users | Count of all registered accounts on the platform |
| Active Users | Users who have logged in within the last 30 days |
| Total Campaigns | All campaigns synced across all user accounts |
| Total Tracking Links | All tracking links created across all users |
| Total Postback Events | Total conversion postbacks received by the tracking server |
| Platform Uptime | Current Railway service health status |
The Users section lists every registered user with their User ID, full name and email address, registration date, last login date, subscription plan, and number of connected accounts, campaigns, and tracking links.
Admins can impersonate any user account to view the platform exactly as that user sees it. This is used for debugging user-reported issues, verifying that a user's data is correctly displayed, and onboarding support.
User impersonation is logged and audited. Admins cannot modify another user's data while impersonating — it is a read-only view for support purposes. Passwords are never visible to admins.
From the Admin Panel, an administrator can trigger a manual campaign sync for any user or for all users simultaneously. This is useful when a user reports that their data is stale and the 30-minute automatic sync has not yet run.
Cause: The first sync may not have completed yet, or the Meta OAuth may have failed silently.
Fix: Wait 2 minutes and hard-refresh (Ctrl+Shift+R). Confirm "Meta Account" shows as connected in Settings. If connected but still no data, trigger a manual sync. Check the Operational Feed for a "Meta sync completed" event.
Cause: Revenue requires postback tracking to be active.
Fix: Create a tracking link on the Performance page. Add the DomainEx postback URL to your affiliate network (see Section 6.3). Drive test traffic through your tracking link and confirm a test conversion is received.
Cause: The leads metric requires the background sync to extract lead action types from the Meta Insights API.
Fix: Wait up to 30 minutes for the next automatic sync, or trigger a manual sync from Settings. Leads will only appear if your Meta campaigns are of type "Lead Generation" or have Facebook Pixel lead events configured.
Cause: The simulator requires at least some campaign metrics data (spend, clicks) to generate projections.
Fix: Ensure at least one campaign has been synced and has spend/click data. The simulator will load projections as soon as it detects non-zero metrics.
Cause: DomainEx uses a server-side Set to track processed OAuth codes. In the event of a server restart (Railway redeploy), this Set resets.
Fix: Simply redo the Meta OAuth flow — click "Connect Meta Account" again. Each OAuth attempt generates a fresh code.
Cause: TIKTOK_CLIENT_ID may not be configured in the Railway environment.
Fix: Contact the platform administrator to verify TikTok environment variables are correctly set.
| Question | Answer |
|---|---|
| How often is campaign data refreshed? | Automatically every 30 minutes via a background sync job. You can trigger an immediate manual sync from Settings at any time. |
| Is my ad account data shared with other users? | No. DomainEx is fully multi-tenant. All data is scoped to your userId. Admin users can only view other accounts by explicitly using the impersonation feature. |
| Can DomainEx create or modify my Meta campaigns? | No. DomainEx only requests read-only permissions (ads_read). It cannot create, pause, modify, or delete any campaigns or ads. |
| What happens if I disconnect my Meta account? | Disconnecting removes the OAuth token. Future syncs will fail for that account. Historical data already synced remains intact — it is not deleted on disconnect. |
| How does the AI Chat know my campaign data? | When you send a message, DomainEx fetches your latest campaign data and injects it into the Claude prompt as context. The context window includes up to 20 messages of conversation history. |
| My postback is firing but conversions are not showing — why? | Common causes: (1) The clickId in the postback URL does not match the clickId generated by your tracking link. (2) The postback URL format is incorrect. (3) DNS is not yet propagated for a custom tracking domain — use the default track.domainex.app for testing. |
| How long is campaign data stored? | DomainEx stores up to 90 days of campaign metrics data. Data older than 90 days is not available in the UI. |
| What is the difference between "Conversions" and "Leads"? | "Conversions" includes all conversion events tracked by Meta (purchases, registrations, lead form submissions). "Total Leads" is specifically Meta-native lead events: form fills, Facebook Pixel lead events, and on-site lead groups. |
Use this checklist when performing a full end-to-end test of DomainEx. Each item should be verified and marked as pass/fail.
• Revenue / ROAS show $0 / 0x until postback tracking is configured — expected
• Automation page present but rules do not fire — feature in development
• TikTok sync requires TIKTOK_CLIENT_ID to be configured in environment
• Tracked Events and User Journeys cards show setup prompt — requires pixel configuration
| Page | URL |
|---|---|
| Main App | https://www.domainex.app |
| Operations Dashboard | https://www.domainex.app/dashboard |
| Campaigns | https://www.domainex.app/dashboard/campaigns |
| Analytics | https://www.domainex.app/dashboard/analytics |
| Performance | https://www.domainex.app/dashboard/performance |
| ROI Simulator | https://www.domainex.app/dashboard/roi-simulator |
| Intelligence | https://www.domainex.app/dashboard/intelligence |
| Creatives | https://www.domainex.app/dashboard/creatives |
| Competitor Intel | https://www.domainex.app/dashboard/competitor-intel |
| Tracking Domains | https://www.domainex.app/dashboard/tracking-domains |
| Settings | https://www.domainex.app/dashboard/settings |
| Billing | https://www.domainex.app/dashboard/billing |
| Admin Panel | https://www.domainex.app/dashboard/admin |
| Tracking Server | https://track.domainex.app |
Parameters:
clickId — Your network's click ID macro (required)revenue — Payout amount macro (optional, for revenue tracking)type — Event type: lead | sale | install | other| Term | Definition |
|---|---|
| CPA | Cost Per Acquisition — how much was spent to generate one conversion |
| CTR | Click-Through Rate — percentage of impressions that result in a click |
| ROAS | Return on Ad Spend — revenue divided by ad spend |
| ROI | Return on Investment — profit divided by cost, expressed as a percentage |
| CPM | Cost Per Mille — cost per 1,000 ad impressions |
| Postback | Server-to-server conversion notification sent from an affiliate network to DomainEx |
| OAuth | Open Authorisation — secure protocol for granting DomainEx access to your ad account without sharing your password |
| Pixel | A JavaScript snippet from Meta or TikTok installed on your website to track visitor actions |
| Lead (Meta) | A conversion event where a user completes a lead form or triggers a pixel lead event on Meta |
| Impression | One display of an ad to one person. Does not require a click. |
| Sync Job | DomainEx's background process that pulls fresh data from Meta/TikTok every 30 minutes |
| S2S Tracking | Server-to-server tracking — conversion data sent directly between servers without relying on browser cookies |