{{ t('welcome_sub') }}
| {{ t('col_name') }} | {{ t('col_email') }} | {{ t('col_role') }} | {{ t('col_status') }} | {{ t('col_payments') }} | {{ t('col_joined') }} | {{ t('col_action') }} |
|---|---|---|---|---|---|---|
| {{ u.name }} | {{ u.email }} | {{ u.role }} | {{ u.status }} | 🔒 Frozen Active | {{ u.created_at?.slice(0,10) }} |
| {{ t('col_name') }} | {{ t('col_vertical') }} | {{ t('col_owner') }} | {{ t('col_status') }} | {{ t('col_action') }} |
|---|---|---|---|---|
| {{ p.name }} | {{ p.vertical }} | {{ p.owner_name }} | {{ p.status }} |
| {{ t('col_affiliate') }} | {{ t('col_product') }} | {{ t('col_player_id') }} | {{ t('col_event') }} | {{ t('col_amount') }} | {{ t('col_commission') }} | {{ t('col_status') }} | {{ t('col_date') }} |
|---|---|---|---|---|---|---|---|
| {{ c.affiliate_name }} | {{ c.product_name }} | {{ c.external_id || '—' }} |
{{ c.event_type }} | ${{ c.amount }} | ${{ c.commission }} | {{ c.status }} | {{ c.created_at?.slice(0,10) }} |
| {{ t('col_affiliate') }} | {{ t('col_amount') }} | {{ t('col_method') }} | {{ t('col_status') }} | {{ t('col_date') }} | {{ t('col_action') }} |
|---|---|---|---|---|---|
| {{ p.affiliate_name }} | ${{ p.amount }} | {{ p.method }} | {{ p.status }} | {{ p.created_at?.slice(0,10) }} |
| Name | Vertical | URL | Status | Action |
|---|---|---|---|---|
| {{ p.name }} | {{ p.vertical }} | {{ p.url.slice(0,30) }}… | {{ p.status }} |
| Name | Product | Tracking Code | Status | Joined | |
|---|---|---|---|---|---|
| {{ a.name }} | {{ a.email }} | {{ a.product_name }} | {{ a.tracking_code }} |
{{ a.status }} | {{ a.created_at?.slice(0,10) }} |
| Affiliate | Event | Amount | Commission | Status | Date |
|---|---|---|---|---|---|
| {{ c.affiliate_name }} | {{ c.event_type }} | ${{ c.amount }} | ${{ c.commission }} | {{ c.status }} | {{ c.created_at?.slice(0,10) }} |
| Name | Product | Status | Start | End |
|---|---|---|---|---|
| {{ c.name }} | {{ c.product_name }} | {{ c.status }} | {{ c.start_date || '—' }} | {{ c.end_date || '—' }} |
| Product | Event | Amount | Commission | Status | Date |
|---|---|---|---|---|---|
| {{ c.product_name }} | {{ c.event_type }} | ${{ c.amount }} | ${{ c.commission }} | {{ c.status }} | {{ c.created_at?.slice(0,10) }} |
| Type | Amount | Balance After | Note | Date |
|---|---|---|---|---|
| {{ e.type }} | ${{ Math.abs(e.amount).toFixed(2) }} | ${{ e.balance_after?.toFixed(2) }} | {{ e.note || '—' }} | {{ e.created_at?.slice(0,10) }} |
{{ payoutSuccess }}
{{ payoutError }}
| Amount | Method | Status | Date |
|---|---|---|---|
| ${{ p.amount }} | {{ p.method }} | {{ p.status }} | {{ p.created_at?.slice(0,10) }} |
| Player ID | Affiliate | Product | Events | Total Deposit | Commission | First Seen |
|---|---|---|---|---|---|---|
{{ p.player_id }} |
{{ p.affiliate_name }} | {{ p.product_name }} | {{ p.event_types }} | ${{ (p.total_deposit||0).toFixed(2) }} | ${{ (p.commission||0).toFixed(2) }} | {{ p.first_seen?.slice(0,10) }} |
| No player data. Player IDs are tracked via postback external_id field. | ||||||
| Source | Clicks | Unique | Affiliates |
|---|---|---|---|
{{ s.source }} |
{{ s.clicks }} | {{ s.unique_clicks }} | {{ s.affiliates }} |
| No data | |||
| Country | Clicks | Unique |
|---|---|---|
| {{ c.country }} | {{ c.clicks }} | {{ c.unique_clicks||c.clicks }} |
| No data | ||
| Name | Clicks | Conversions | Commission | Last Click | |
|---|---|---|---|---|---|
| {{ a.name }} | {{ a.email }} | {{ a.clicks||0 }} | {{ a.conversions||0 }} | ${{ (a.commission||0).toFixed(2) }} | {{ a.last_click?.slice(0,16) || '—' }} |
| No activity in this period | |||||
| Month | Clicks | Conversions | Commission |
|---|---|---|---|
| {{ m.month }} | {{ m.clicks || 0 }} | {{ m.conversions || 0 }} | ${{ (m.commission||0).toFixed(2) }} |
| No monthly data available | |||
| Day | FTDs | Share |
|---|---|---|
| {{ d.day }} | {{ d.ftds }} |
|
| No FTD data in this period | ||
| Type | Items | Downloads |
|---|---|---|
| {{ m.type }} | {{ m.count }} | {{ m.downloads || 0 }} |
| No media data | ||
| Category | Items |
|---|---|
| {{ m.category || 'Uncategorized' }} | {{ m.count }} |
| No data | |
| Title | Type | Dimensions | Language | Uploaded |
|---|---|---|---|---|
| {{ m.title }} | {{ m.type }} | {{ m.width && m.height ? m.width+'×'+m.height : '—' }} | {{ m.language }}— | {{ m.created_at?.slice(0,10) }} |
| No recent uploads | ||||
| Product | Clicks | Conv. | Commission |
|---|---|---|---|
| {{ p.name }} | {{ p.clicks }} | {{ p.conversions }} | ${{ p.commission?.toFixed(2) }} |
| # | Name | Clicks | Conversions | Conv. Rate | Commission | |
|---|---|---|---|---|---|---|
| {{ i+1 }} | {{ a.name }} | {{ a.email }} | {{ a.clicks||0 }} | {{ a.conversions||0 }} | {{ a.conv_rate||0 }}% | ${{ (a.commission||0).toFixed(2) }} |
| Country | Clicks |
|---|---|
| {{ c.country || 'Unknown' }} | {{ c.clicks }} |
| Product | Vertical | Clicks | Conversions | Conv. Rate | Commission |
|---|---|---|---|---|---|
| {{ p.name }} | {{ p.vertical }} | {{ p.clicks||0 }} | {{ p.conversions||0 }} | {{ p.conv_rate||0 }}% | ${{ (p.commission||0).toFixed(2) }} |
| Affiliate | Product | Applied | Action | |
|---|---|---|---|---|
| {{ a.affiliate_name }} | {{ a.affiliate_email }} | {{ a.product_name }} | {{ a.created_at?.slice(0,10) }} |
Protect the admin account with Google Authenticator or any TOTP app.
Scan with your authenticator app:
Secret: {{ twoFaSecret }}
{{ twoFaMsg }}
Enter your credentials + current 2FA code to disable.
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.
{{ brandMsg }}
To use your own domain for the affiliate portal:
- Add a
CNAMErecord in your DNS:
2. Enter the full domain above and save.
3. Contact admin to activate SSL for your domain.
| Owner | Company Name | Primary Color | Custom Domain | Action |
|---|---|---|---|---|
| {{ b.owner_name }} | {{ b.company_name || '—' }} | {{ b.primary_color }} Default | {{ b.custom_domain }} — |
| Affiliate | Duplicate Clicks | Last Seen | Action | |
|---|---|---|---|---|
| {{ a.name }} | {{ a.email }} | {{ a.dup_count }} | {{ a.last_seen?.slice(0,16) }} | |
| No duplicate click offenders detected | ||||
| Name | Suspended Since | Action | |
|---|---|---|---|
| {{ a.name }} | {{ a.email }} | {{ a.created_at?.slice(0,10) }} | |
| No suspended affiliates | |||
Add Facebook Pixel, TikTok Pixel, GTM, GA4, Snapchat, or custom script tags. Active pixels fire on every click-through to your tracked products.
| Platform | Pixel / ID | Event | Product | Server API | Status | Actions |
|---|---|---|---|---|---|---|
| {{ px.platform }} | {{ 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. | ||||||
| Code | Product | Owner | Affiliate | Type | Value | Uses | Expires | Status | Action |
|---|---|---|---|---|---|---|---|---|---|
{{ p.code }} |
{{ p.product_name || 'All' }} | {{ p.owner_name || '—' }} | {{ p.affiliate_name || 'All' }} | {{ p.bonus_type }} | {{ p.bonus_value || '—' }} | {{ p.uses_count||0 }}{{ p.max_uses ? '/'+p.max_uses : '' }} | {{ p.expires_at?.slice(0,10) || 'Never' }} | {{ p.status }} | |
| No promo codes yet | |||||||||
| Code | Product | Affiliate | Type | Value | Uses | Expires | Action |
|---|---|---|---|---|---|---|---|
{{ p.code }} |
{{ p.product_name || '—' }} | {{ p.affiliate_name || 'All' }} | {{ p.bonus_type }} | {{ p.bonus_value || '—' }} | {{ p.uses_count||0 }}{{ p.max_uses ? '/'+p.max_uses : '' }} | {{ p.expires_at?.slice(0,10) || 'Never' }} | |
| No promo codes yet | |||||||
Browse and download banners, logos and creatives for your approved products.
| Affiliate | Product | Plan | Model | CPA | Rev% | CAP | Carryover | Action |
|---|---|---|---|---|---|---|---|---|
| {{ p.affiliate_name }} {{ p.affiliate_email }} |
{{ p.product_name }} | {{ p.plan_name }} | {{ p.model }} | ${{ p.cpa_amount || '—' }} | {{ p.rev_pct ? p.rev_pct+'%' : '—' }} | {{ p.cpa_cap ? p.cpa_cap+'/'+p.cpa_cap_period : '—' }} | {{ p.negative_carryover ? 'Yes' : 'No' }} | |
| No custom plans. All affiliates use the default product commission. | ||||||||
| Affiliate | Product | Used | Limit | % Used | Period |
|---|---|---|---|---|---|
| {{ c.affiliate_name }} | {{ c.product_name }} | {{ c.count }} | {{ c.cap_limit || '∞' }} |
{{ Math.round((c.count/c.cap_limit)*100) }}%
No cap
|
{{ c.period }} |
| No CPA activity this period | |||||
| Referrer | Sub-Affiliate | Joined | Their Earnings | Referral Earned |
|---|---|---|---|---|
| {{ r.referrer_name }} {{ r.referrer_email }} |
{{ r.referee_name }} {{ r.referee_email }} |
{{ r.created_at?.slice(0,10) }} | — | ${{ (r.total_referral_earned||0).toFixed(2) }} |
| No referral relationships yet | ||||
Affiliates earn this % of their sub-affiliates' commissions.
{{ referralMsg }}
| Invoice # | Affiliate | Amount | Status | Created | Actions |
|---|---|---|---|---|---|
{{ inv.invoice_number || '#'+inv.id }} |
{{ inv.affiliate_name }} {{ inv.affiliate_email }} |
${{ inv.amount?.toFixed(2) }} {{ inv.currency }} | {{ inv.status }} | {{ inv.created_at?.slice(0,10) }} | |
| No invoices yet. They are auto-created when payouts are approved. | |||||
| To | Subject | Type | Date |
|---|---|---|---|
| {{ m.is_broadcast ? '📢 All Affiliates' : (m.to_name||m.to_id) }} | {{ m.subject }} | {{ m.is_broadcast ? 'Broadcast' : 'Direct' }} | {{ m.created_at?.slice(0,16) }} |
| No messages sent yet | |||
Use these promo codes in your promotions. Click a code to copy it.
| Code | Product | Bonus Type | Value | Expires |
|---|---|---|---|---|
{{ p.code }} ✓ Copied!
|
{{ p.product_name || 'All Products' }} | {{ p.bonus_type }} | {{ p.bonus_value || '—' }} | {{ p.expires_at?.slice(0,10) || 'Never' }} |
| No promo codes available for your products yet. | ||||
Share this link to recruit other affiliates. You earn a % of their commissions automatically.
{{ refCode }}1. Share your referral link with other marketers
2. When they register and get approved, they become your sub-affiliate
3. Every time they earn a commission, you automatically earn a percentage
4. Your referral earnings appear in your earnings ledger
| Name | Status | Their Clicks | Their Conversions | Joined | |
|---|---|---|---|---|---|
| {{ r.name }} | {{ r.email }} | {{ r.status }} | {{ r.clicks || 0 }} | {{ r.their_commission?.toFixed(2) ? '$'+r.their_commission.toFixed(2) : '—' }} | {{ r.created_at?.slice(0,10) }} |
| No sub-affiliates yet. Share your referral link to get started! | |||||
| Invoice # | Amount | Status | Created | Paid |
|---|---|---|---|---|
{{ inv.invoice_number || '#'+inv.id }} |
${{ inv.amount?.toFixed(2) }} {{ inv.currency }} | {{ inv.status }} | {{ inv.created_at?.slice(0,10) }} | {{ inv.paid_at?.slice(0,10) || '—' }} |
| No invoices yet. Invoices are generated automatically when your payout is approved. | ||||
| Brand | Owner | Website | Products | Status | Action |
|---|---|---|---|---|---|
|
{{ b.name }}
|
{{ b.owner_name || '—' }} | {{ b.website }}— | {{ b.product_count || 0 }} products | {{ b.status }} | |
| No brands yet. Add a brand to categorize your products. | |||||
| Brand | Website | Products | Color |
|---|---|---|---|
|
{{ b.name }}
|
{{ b.website }}— | {{ b.product_count || 0 }} products | {{ b.primary_color }} |
| No brands yet. | |||
{{ rateMsg }}
| From | To | Rate | Updated | Action |
|---|---|---|---|---|
| USD | {{ r.to_currency }} | {{ r.rate }} | {{ r.updated_at?.slice(0,16) }} | |
| No exchange rates configured | ||||
{{ taxMsg }}
| Country | Tax Rate | Applies To | Action |
|---|---|---|---|
| {{ t.country }} | {{ t.tax_rate }}% | {{ t.applies_to }} | |
| No tax rules configured | |||
{{ qualMsg }}
| Type | Min Clicks | Min Conv. | Min Balance | Action |
|---|---|---|---|---|
| {{ q.is_global ? 'Global' : 'Product' }} | {{ q.min_clicks || 0 }} | {{ q.min_conversions || 0 }} | ${{ q.min_balance || 0 }} | |
| No qualification rules — all affiliates can request payout | ||||