Dashboard
{{ s.label }}
{{ s.value }}
Welcome back, {{ userName }}

Use the sidebar to navigate. Tracking links, conversions, and payouts are all managed here.

Users
NameEmailRoleStatusJoinedAction
{{ u.name }} {{ u.email }} {{ u.role }} {{ u.status }} {{ u.created_at?.slice(0,10) }}
All Products
NameVerticalOwnerStatusAction
{{ p.name }} {{ p.vertical }} {{ p.owner_name }} {{ p.status }}
Conversions
AffiliateProductEventAmountCommissionStatusDate
{{ c.affiliate_name }} {{ c.product_name }} {{ c.event_type }} ${{ c.amount }} ${{ c.commission }} {{ c.status }} {{ c.created_at?.slice(0,10) }}
Payout Requests
AffiliateAmountMethodStatusDateAction
{{ p.affiliate_name }} ${{ p.amount }} {{ p.method }} {{ p.status }} {{ p.created_at?.slice(0,10) }}
My Products
NameVerticalURLStatusAction
{{ p.name }} {{ p.vertical }} {{ p.url.slice(0,30) }}… {{ p.status }}
Affiliates
NameEmailProductTracking CodeStatusJoined
{{ a.name }}{{ a.email }}{{ a.product_name }} {{ a.tracking_code }} {{ a.status }} {{ a.created_at?.slice(0,10) }}
Conversions
AffiliateEventAmountCommissionStatusDate
{{ c.affiliate_name }} {{ c.event_type }} ${{ c.amount }} ${{ c.commission }} {{ c.status }} {{ c.created_at?.slice(0,10) }}
Campaigns
NameProductStatusStartEnd
{{ c.name }}{{ c.product_name }} {{ c.status }} {{ c.start_date || '—' }}{{ c.end_date || '—' }}
Browse Products
{{ p.name }}
{{ p.vertical }}
{{ p.description }}
{{ p.model?.toUpperCase() }} ${{ p.cpa_amount }} CPA {{ p.rev_pct }}% RevShare
My Tracking Links
{{ l.product_name }} {{ l.status }}
{{ l.vertical }} {{ l.campaign_name ? '· '+l.campaign_name : '' }}
Tracking Link:
Sub-IDs (optional traffic source tags):
No approved links yet. Apply to a product first.
My Conversions
ProductEventAmountCommissionStatusDate
{{ c.product_name }} {{ c.event_type }} ${{ c.amount }} ${{ c.commission }} {{ c.status }} {{ c.created_at?.slice(0,10) }}
Earnings
TypeAmountBalance AfterNoteDate
{{ e.type }} ${{ Math.abs(e.amount).toFixed(2) }} ${{ e.balance_after?.toFixed(2) }} {{ e.note || '—' }} {{ e.created_at?.slice(0,10) }}
Payout
Available Balance
${{ stats.find(s=>s.label==='Balance')?.raw?.toFixed(2) || '0.00' }}
Request Payout

{{ payoutSuccess }}

{{ payoutError }}

Payout History
AmountMethodStatusDate
${{ p.amount }}{{ p.method }} {{ p.status }} {{ p.created_at?.slice(0,10) }}
📈 Reports
From To
Clicks
{{ reportData.clicks || 0 }}
Conversions
{{ reportData.conversions || 0 }}
Commission
${{ (reportData.commission||0).toFixed(2) }}
Active Affiliates
{{ reportData.active_affiliates || 0 }}
Volume
${{ (reportData.volume||0).toFixed(2) }}
Clicks Over Time
Conversions by Vertical
Performance by Product
ProductClicksConv.Commission
{{ p.name }}{{ p.clicks }}{{ p.conversions }} ${{ p.commission?.toFixed(2) }}
Top Affiliates
#NameEmailClicksConversionsConv. RateCommission
{{ i+1 }} {{ a.name }} {{ a.email }} {{ a.clicks||0 }} {{ a.conversions||0 }} {{ a.conv_rate||0 }}% ${{ (a.commission||0).toFixed(2) }}
Clicks by Country
CountryClicks
{{ c.country || 'Unknown' }}{{ c.clicks }}
Products Performance
ProductVerticalClicksConversionsConv. RateCommission
{{ p.name }}{{ p.vertical }}{{ p.clicks||0 }} {{ p.conversions||0 }}{{ p.conv_rate||0 }}% ${{ (p.commission||0).toFixed(2) }}
📋 Affiliate Applications
No pending applications.
AffiliateEmailProductAppliedAction
{{ a.affiliate_name }} {{ a.affiliate_email }} {{ a.product_name }} {{ a.created_at?.slice(0,10) }}
🔐 Two-Factor Authentication
Setup 2FA for Admin Account

Protect the admin account with Google Authenticator or any TOTP app.

Scan with your authenticator app:

Secret: {{ twoFaSecret }}

{{ twoFaMsg }}

Disable 2FA

Enter your credentials + current 2FA code to disable.

How It Works

1. Click Generate QR Code and scan with Google Authenticator, Authy, or any TOTP app.

2. Enter the 6-digit code shown in your app to verify and activate.

3. Next time you log in, after entering your password you'll be asked for a 6-digit code.

4. Codes expire every 30 seconds.

⚠ Save your secret key — if you lose access to your authenticator app and don't have the secret, you'll need database access to recover.
🎨 White-Label Branding
Brand Settings
Colors

{{ brandMsg }}

Live Preview
{{ brandForm.company_name || 'Your Company' }}
AFFILIATE PORTAL
Email
Password
Sign In
{{ brandForm.footer_text }}
Custom Domain Setup

To use your own domain for the affiliate portal:

  1. Add a CNAME record in your DNS:
Type: CNAME
Name: {{ brandForm.custom_domain ? brandForm.custom_domain.split('.')[0] : 'affiliates' }}
Value: p24-affiliate.pages.dev

2. Enter the full domain above and save.

3. Contact admin to activate SSL for your domain.

🎨 Owner Branding Management
All Product Owners
OwnerCompany NamePrimary ColorCustom DomainAction
{{ b.owner_name }} {{ b.company_name || '—' }} {{ b.primary_color }} Default {{ b.custom_domain }}
🚨 Fraud Detection
Total Duplicate Clicks
{{ fraudData.summary?.total_dup || 0 }}
Affiliates with Dups
{{ fraudData.summary?.affected_affiliates || 0 }}
Suspended
{{ fraudData.suspended?.length || 0 }}
Top Duplicate Click Offenders
AffiliateEmailDuplicate ClicksLast SeenAction
{{ a.name }} {{ a.email }} {{ a.dup_count }} {{ a.last_seen?.slice(0,16) }}
No duplicate click offenders detected
Currently Suspended Affiliates
NameEmailSuspended SinceAction
{{ a.name }}{{ a.email }} {{ a.created_at?.slice(0,10) }}
No suspended affiliates
🎯 Pixels & Tags
Your Tracking Pixels

Add Facebook Pixel, TikTok Pixel, GTM, GA4, Snapchat, or custom script tags. Active pixels fire on every click-through to your tracked products.

PlatformPixel / IDEventProductServer APIStatusActions
{{ px.platform }} {{ px.pixel_id }} {{ px.event_name }} {{ px.product_name || 'All Products' }} {{ (px.platform==='facebook'||px.platform==='tiktok') && px.access_token ? '✅' : '—' }} {{ px.is_active ? 'Active' : 'Paused' }}
No pixels added yet. Click "Add Pixel" to get started.