Trackily Documentation

The complete guide to setting up and using Trackily — your self-hosted affiliate tracker.

Introduction

Trackily is a self-hosted multi-campaign affiliate tracking platform, inspired by Keitaro. It lets you track clicks, manage flows, optimize landing pages, and monitor conversions — all from your own server with full data ownership.

Key Capabilities

AreaFeatures
TrackingClick tracking, JS pixel, conversion postback, unique visitors, frequency capping
RoutingSmart flow engine (forced/regular/default), weighted rotation, visitor binding
Integrations10 traffic source templates, Everflow API, Shopify, WooCommerce, Stripe
OptimizationA/B testing, Traffic AI, Automizer rules, Anti-Fraud Kit
AnalyticsAdvanced reports, multi-step funnels, LTV tracking, AOV/ROAS/CAC
E-CommerceProduct catalog, shopping funnel, status scheme, retargeting pixels, multi-touch attribution
AudiencesSegment export (FB/Google), real-time CAPI/Events API passback
NotificationsIn-app, Email, Telegram, Webhook

Installation

Requirements

Quick Install (VPS)

SSH into your server and run:

curl -sSL https://license.trackily.online/install.sh | bash -s -- YOUR_LICENSE_KEY

Docker Install

Create a docker-compose.yml:

version: "3.8"
services:
  trackily:
    image: trackily/tracker:latest
    restart: always
    ports:
      - "3000:3000"
    env_file: .env
    depends_on:
      - postgres
  postgres:
    image: postgres:16-alpine
    restart: always
    environment:
      POSTGRES_DB: trackily
      POSTGRES_USER: trackily
      POSTGRES_PASSWORD: your_secure_password
    volumes:
      - pgdata:/var/lib/postgresql/data
volumes:
  pgdata:

Create a .env file:

LICENSE_KEY=your-license-key-here
LICENSE_SERVER_URL=https://license.trackily.online
DATABASE_URL=postgresql://trackily:your_secure_password@postgres:5432/trackily
ADMIN_PASSWORD=YourAdminPassword123!
PORT=3000

Then run:

docker compose up -d

Coolify / Panel Manager

Add Docker Image

In your panel, create a new service with image: trackily/tracker:latest

Set Environment Variables

Add LICENSE_KEY, DATABASE_URL, ADMIN_PASSWORD, PORT=3000

Deploy

Click deploy — Trackily starts automatically and initializes the database.

Your First Campaign

Follow these steps to create your first tracking campaign:

Add a Traffic Source

Go to Traffic Sources → click Add Source. Select your platform (e.g. Kadam) and enter your API credentials. The form auto-fills with the right macros.

Add an Affiliate Network

Go to Affiliate Networks → click Add Network. Enter your Everflow API URL and key. Click Test Connection to verify.

Import Offers

On your network, click Import Offers. Trackily fetches all active offers with payouts and geo-targeting.

Create a Landing Page

Go to Landing PagesAdd Landing. Choose "Local" to paste HTML or "URL" to use an external page.

Create a Campaign

Go to CampaignsAdd Campaign. Set a name, choose a slug (e.g. mcafee-us), select your offer and source.

Create a Flow

In your campaign, go to FlowsAdd Flow. Set type to "Default", add your landing page and offer with weights.

Get Your Tracking Link

Your tracking link is: https://your-domain.com/c/mcafee-us. Add source macros: ?click_id={click_id}&cost={cost}&sub2={campaign_id}

Configure Postback

In your affiliate network, set the postback URL to: https://your-domain.com/postback?click_id={sub2}&amount={payout_amount}&txid={transaction_id}

💡

The postback system accepts aliases — click_id, subid, sub_id, clickid all work for the click identifier.

Dashboard

The dashboard provides a real-time overview of your campaigns with three data tabs:

Everflow Tab

Shows stats pulled directly from your Everflow affiliate network: clicks, conversions, revenue, payout, and ROI. Uses the Everflow Affiliate API.

Kadam Tab

Shows campaign stats from your Kadam traffic source: impressions, clicks, CTR, cost. Uses the Kadam REST API.

Trackily Tab

Shows native tracking data: clicks, unique visitors, leads, conversions, cost, revenue, profit, ROI, EPC. This is your primary dashboard for campaign performance.

📊

Date Range: Use the presets (Today, Yesterday, 7d, 30d) or select custom dates. Filter by campaign using the dropdown.

Campaigns

A campaign is the central entity that connects a traffic source, landing pages, offers, and routing flows.

Creating a Campaign

FieldDescriptionExample
NameDisplay name for your campaignMcAfee US Push
SlugURL identifier (unique)mcafee-us
OfferDefault offer to promoteMcAfee Antivirus
SourceTraffic source sending clicksKadam
Cost ModelHow you're chargedCPC ($0.05)
DomainCustom tracking domain (optional)track.example.com

Campaign Settings

Bot Filter

Enable to block known bots. Bots are redirected to a URL of your choice (default: google.com). Clicks with fraud score > 50 are blocked.

Frequency Capping

Limit how many times a visitor can see your campaign. Example: max 3 visits per 24 hours per IP.

External Campaign IDs

Link your Kadam/PropellerAds campaign IDs to pull combined stats from both Trackily and the source API.

Tracking Link

Each campaign generates a tracking URL:

https://your-domain.com/c/mcafee-us?click_id={click_id}&cost={cost}&sub2={campaign_id}

Paste this in your traffic source as the destination URL. The macros will be replaced with real values by the traffic source.

Offers

An offer is the product or service you're promoting. Offers can be created manually or imported from Everflow.

Import from Everflow

Connect Network

Go to Affiliate Networks → your Everflow network → click Test Connection.

Import

Click Import Offers. Trackily fetches all active offers with payouts and geo data.

Offer Caps

Set daily and total caps to limit conversions. When a cap is reached, Trackily automatically routes traffic to the next available offer in the flow.

Geo-specific Payouts

Configure different payouts per country. Example: McAfee US = $40 CPA, McAfee FR = $25 CPA.

Landing Pages

Landing pages are shown to visitors before they see the offer. Two types:

TypeHow it worksBest for
LocalHTML stored in Trackily database, served directlyPrelanders, breach checkers, scan pages
URLRedirects visitor to an external URLHosted landing pages, WordPress sites

Import Landing Pages

Two import methods:

Flows & Routing

Flows determine how traffic is routed within a campaign. Each campaign can have multiple flows with different rules.

Flow Types

TypePriorityDescription
Forced#1 (Highest)Always matches if filters are met. Overrides all other flows.
Regular#2Matches if filters are met. Weighted random selection among matching regular flows.
Default#3 (Fallback)Catches all traffic that doesn't match any other flow. Only one per campaign.

Flow Filters

Add conditions to target specific traffic. Available filters:

FilterOperatorsExample
Countryequals, not_equals, in, not_inCountry in US,CA,UK
Deviceequals, not_equalsDevice equals Mobile
OSequals, contains, inOS equals Windows
Browserequals, containsBrowser equals Chrome
Languageequals, inLanguage in en,fr

Weighted Rotation

Assign weights to landing pages and offers for A/B testing:

Landing A: weight 100 (67% traffic)
Landing B: weight 50  (33% traffic)

Higher weight = more traffic. Use the Balance button to equalize weights.

Visitor Binding

Ensure returning visitors see the same landing page/offer:

BindingEffect
NoneNew random selection each visit
LandingSame landing page on return (24h)
OfferSame offer on return (24h)
Landing + OfferSame combo on return (24h)

Conflict Detection

Trackily warns you about potential flow conflicts:

Traffic Sources

Trackily comes with 10 pre-configured traffic source templates with smart forms:

SourceTypeClick ID Macro
KadamPush/Native/Pop{click_id}
PropellerAdsPush/Pop/Interstitial${SUBID}
Meta AdsFeed/Stories/Reelsfbclid
TikTok AdsIn-feed/Top-view__CLICKID__
Google AdsSearch/Display/YouTube{gclid}
TaboolaNative{click_id}
MGIDNative/Content{click_id}
ExoClickPop/Push/Native{conversions_tracking}
RichAdsPush/Pop/Direct${CLICK_ID}
CustomAnyYou define
💡

Each template auto-fills the postback URL, click ID parameter, and available macros. Just add your API key!

Affiliate Networks

Connect your affiliate networks to import offers and sync conversions. Everflow has full API integration.

Everflow Setup

Add Network

Go to Networks → Add → Enter your Everflow API URL and key (X-Eflow-API-Key header).

Test Connection

Click Test → you should see "Connection successful".

Import Offers

Click Import Offers → all active offers are fetched with payouts and geo.

Sync Conversions

Click Sync → pulls approved conversions and matches them to your clicks.

Domains

Add custom domains for cleaner tracking links. Each domain can be linked to a campaign.

Features: DNS verification, SSL status check, DNS provider detection (Cloudflare, etc.), domain grouping.

Reports

The Reports page provides detailed analytics with multiple grouping options:

Group By Options

CategoryOptions
CampaignCampaign, Landing Page, Offer
DimensionsCountry, OS, Browser, Device, Language
TimeHour of Day, Day of Week, Date
TrafficISP, Referrer Domain
Sub IDsSub1, Sub2, Sub3, Sub4, Sub5

Metrics Available

Clicks, Unique, Leads, Conversions, Cost, Revenue, Profit, ROI%, CR%, EPC, CPA, CPL

Period Comparison

Check "vs Previous" to compare current period with the previous one (e.g. today vs yesterday, this week vs last week).

Column Templates

Customize which columns are visible in your reports and save presets for quick switching.

Click "Columns" Button

In the Reports toolbar, click the columns icon to open the dropdown.

Toggle Columns

Check/uncheck: Clicks, Unique, Leads, Cost, Revenue, Profit, ROI%, CR%, EPC.

Save Preset

Enter a name and click Save. Your preset is stored locally for quick access.

Export / Import

Export

Export your data in CSV or JSON format. Go to Settings → Export section. Available types: Campaigns, Offers, Flows, Sources, Networks, Landing Pages, or All.

Import

Import data from JSON. Go to Settings → Import section. Upload a JSON file with an array of objects matching the entity schema.

Postback System

Trackily uses a Keitaro-style universal postback with parameter aliases. Any affiliate network can fire conversions regardless of their naming convention.

Postback URL

https://your-domain.com/postback?click_id={sub2}&amount={payout_amount}&txid={transaction_id}

Parameter Aliases

ParameterAccepted Names
Click IDsubid, sub_id, click_id, clickid, trackID, aff_sub, aff_click_id, sub1, sub2
Payoutpayout, amount, revenue, price, pay, money, summ_approved, payment, order_sum, affiliateCommission, value
Statusstatus, type, state, conversion_status
Transaction IDtid, transaction_id, txid, trans_id, receipt
🔗

No matter what your network calls the parameter, Trackily will find it. Just include the click ID and payout — everything else is optional.

Dynamic Call-Outs

Personalize your landing pages by injecting visitor data. Use double-brace placeholders in your HTML:

VariableOutput Example
{{country}}United States
{{city}}New York
{{os}}Windows
{{browser}}Chrome
{{device}}Desktop
{{ip}}203.0.113.42
{{language}}en
{{country_code}}US
{{region}}California
{{isp}}Comcast Cable

Example

<h1>Attention {{city}} residents!</h1>
<p>Your {{os}} device may be at risk.</p>

Becomes:

<h1>Attention New York residents!</h1>
<p>Your Windows device may be at risk.</p>

Multi-Step Funnels

Track visitor progress through multiple landing page steps. Each step is reported automatically.

How to Use

In your local landing page, call the step tracking function:

// Step 1 is auto-tracked on page load
// Track custom steps:
window.__trackily.reportStep(2, 'Email Submitted');
window.__trackily.reportStep(3, 'Scan Started');
window.__trackily.reportStep(4, 'Offer Shown');

View funnel stats in Reports → Funnel tab to see dropoff at each step.

Custom Conversions

Define multiple conversion types beyond just "sale":

TypeUse Case
SalePrimary purchase completed
LeadForm submission, email capture
UpsellAdditional product sold
RebillRecurring subscription charge

Pass the type in your postback: &conversion_type=upsell. Rebills automatically link to the parent conversion for LTV tracking.

GeoIP Databases

Trackily uses local MaxMind GeoLite2 databases for instant geo-detection (~1ms per lookup, no external API calls).

Get MaxMind License Key

Create a free account at maxmind.com → My License Keys → Generate.

Download Databases

Go to Settings → GeoIP → paste your key → click Download All.

Verify

Status should show "OK" for City and ASN databases. Test with an IP address.

Manual Cost Update

Correct cost data after the fact when your traffic source reports different costs than bid.

Single Click

In the Clicks report, click the $$ button next to any click to edit its cost.

Bulk Update

Select a campaign and date range, then set a new cost-per-click value. All clicks in that range are updated.

Anti-Fraud Kit PRO

Detect and block fraudulent clicks in real-time with a multi-factor scoring system.

Fraud Score (0-100)

FactorScoreTrigger
Known Bot UA+40Googlebot, curl, wget, python-requests, etc.
Click Flood (30s)+25>5 clicks from same IP in 30 seconds
Click Flood (5m)+30>20 clicks from same IP in 5 minutes
Datacenter IP+15ISP contains: hosting, cloud, aws, hetzner
Blacklisted IP+50IP in manual or auto blacklist
Suspicious UA+10Empty or very short user agent

Clicks with score ≥ 50 are blocked (with bot filter enabled). IPs with score ≥ 80 are auto-blacklisted.

IP Blacklist

Manually add IPs or ranges. Auto-blacklist adds IPs automatically when fraud score exceeds the threshold.

Automizer PRO

Create automation rules that monitor your campaigns and take action based on performance metrics.

Rule Structure

IF [metric] [operator] [value] WITHIN [time_window]
THEN [action]

Example Rules

RuleConditionAction
Stop losing campaignROI < -30% (24h)Pause campaign
Cap alertConversions ≥ 50 (24h)Send notification
Boost winnerCR > 5% (24h)Change landing weight to 150
Cost controlCost > $500 (24h)Pause campaign + notify

Available Metrics

clicks, conversions, revenue, cost, roi, cpa, cr, epc

Available Actions

pause_campaign, pause_offer, send_notification, change_weight, change_bid

Traffic Distribution AI PRO

Automatically optimize landing page and offer weights based on real-time conversion data.

The AI analyzes conversion rate and EPC per landing/offer, then suggests weight adjustments. Enable it per flow in the flow editor.

🧠

The AI needs at least 100 clicks per variant before making suggestions. It evaluates performance every hour.

Notifications PRO

Get alerted on important events via 4 channels:

ChannelSetup
In-AppEnabled by default. Bell icon in the dashboard.
EmailSettings → SMTP host, port, username, password, from address.
TelegramSettings → Bot Token + Chat ID. Create a bot via @BotFather.
WebhookSettings → URL endpoint. Receives JSON POST on events.

Notification Rules

Create rules to trigger on specific events: conversion, fraud_alert, rule_triggered, link_down, campaign_paused, offer_capped. Set conditions, choose channels, and add a cooldown to prevent spam.

A/B Testing PRO

Compare landing pages and offers using flow weights and statistical significance testing.

Set Up Variants

In a flow, add 2+ landing pages with equal weights (50/50 or any split).

Run Traffic

Send traffic to the campaign and wait for enough data (100+ clicks per variant).

Check Results

Reports → A/B Test tab shows statistical significance, confidence level, and winner recommendation.

Lander Protection PRO

Protect your landing pages from spy tools and competitors.

When enabled, Trackily detects:

Detected spies see "Access Denied" instead of your landing page. Enable per landing page in the editor.

Conversion Pixel (JS)

The JavaScript pixel allows e-commerce merchants to track conversions client-side, directly from their thank-you page — no S2S postback needed.

Installation

Add this script to your website's <head> or thank-you page:

<script src="https://your-tracker.com/pixel.js"></script>

Tracking Events

// Track a purchase
trackily.track('purchase', {
  order_id: 'ORD-12345',
  revenue: 89.99,
  currency: 'USD',
  products: [
    { name: 'Running Shoes', price: 59.99, qty: 1 },
    { name: 'Sports Socks', price: 14.99, qty: 2 }
  ]
});

// Track add-to-cart
trackily.track('add_to_cart', {
  product: 'Running Shoes',
  price: 59.99
});

// Track checkout initiation
trackily.track('checkout', {
  cart_total: 89.97,
  item_count: 3
});

// Track a lead
trackily.track('lead', {
  email: 'customer@example.com'
});
🔗

The pixel automatically reads the _tly_click cookie (set when the visitor clicked your tracking link) to attribute the conversion to the right click and campaign.

Product Catalog

Import and manage your product catalog. Products can be imported from Shopify, WooCommerce, or added manually.

Manual Product

FieldDescriptionExample
NameProduct display nameRunning Shoes Pro
SKUUnique product identifierSHOE-PRO-001
PriceProduct price59.99
CurrencyPrice currencyUSD
CategoryProduct categoryFootwear
Image URLProduct imagehttps://...
External IDShopify/WC product ID7890123456
SourceWhere it was imported fromshopify, woocommerce, manual

Import from Shopify

Go to Integrations → configure your Shopify store URL and API token → click Import Products. All products with title, price, SKU, images, and variants are imported automatically.

Import from WooCommerce

Go to Integrations → configure your WooCommerce store URL, consumer key, and consumer secret → click Import Products.

Shopify Integration

Trackily integrates with Shopify via API for products, orders, and auto-sync conversions.

Setup

Create a Custom App in Shopify

Go to your Shopify Admin → Settings → Apps and sales channels → Develop apps → Create an app. Grant scopes: read_products, read_orders, read_customers.

Get the API Access Token

After creating the app, install it and copy the Admin API access token (starts with shpat_).

Configure in Trackily

Go to Integrations → Shopify section → enter your store URL (e.g. mystore.myshopify.com) and paste the token.

Import & Sync

Click Import Products to pull your catalog. Enable Auto-sync Orders to automatically match Shopify orders with Trackily clicks every 15 minutes.

Shopify Webhook (Alternative)

For real-time conversion tracking, configure a webhook in Shopify:

URL: https://your-tracker.com/webhook/shopify?key=YOUR_WEBHOOK_SECRET
Event: Order creation

Each new order fires a webhook → Trackily matches the customer email/IP to a click → creates a conversion automatically.

Auto-Sync Orders

When enabled, Trackily polls Shopify's GET /admin/api/2024-01/orders.json every 15 minutes and matches orders to clicks using:

WooCommerce Integration

Connect your WordPress/WooCommerce store for product import and conversion tracking.

Setup

Generate API Keys

In WordPress Admin → WooCommerce → Settings → Advanced → REST API → Add Key. Set permissions to Read.

Configure in Trackily

Go to Integrations → WooCommerce section → enter your store URL, Consumer Key, and Consumer Secret.

Import Products

Click Import Products → all WooCommerce products are fetched with prices, SKUs, and categories.

WooCommerce Webhook

For real-time tracking, add a webhook in WooCommerce:

URL: https://your-tracker.com/webhook/woocommerce
Topic: Order completed
Secret: YOUR_WEBHOOK_SECRET

E-Commerce Metrics: AOV / ROAS / CAC

Trackily calculates key e-commerce KPIs automatically from your conversion data. These metrics are shown on the Dashboard and Reports pages.

MetricFormulaDescription
AOVTotal Revenue ÷ Number of OrdersAverage Order Value — how much each customer spends per order
ROASRevenue ÷ Ad SpendReturn On Ad Spend — $3 ROAS means $3 revenue per $1 spent
CACTotal Ad Spend ÷ Number of CustomersCustomer Acquisition Cost — cost to acquire one paying customer
LTVTotal Revenue per Customer (incl. rebills)Lifetime Value — total revenue from one customer over time
RPCRevenue ÷ ClicksRevenue Per Click — like EPC but includes all revenue
Repeat RateRepeat Customers ÷ Total CustomersPercentage of customers who buy more than once
💡

Example: You spent $500 on Kadam, got 10,000 clicks, 150 conversions, $4,500 revenue. Your ROAS = $9, AOV = $30, CAC = $3.33, EPC = $0.45.

E-Commerce Funnel

Visualize your shopping funnel to identify where customers drop off.

Funnel Steps

StepEventExample
1. Page ViewpageviewAuto-tracked by pixel.js
2. Add to Cartadd_to_carttrackily.track('add_to_cart', {...})
3. Checkoutcheckouttrackily.track('checkout', {...})
4. Purchasepurchasetrackily.track('purchase', {...})

The funnel page shows visual bars with conversion rates between each step:

Page Views:    10,000  (100%)
Add to Cart:    3,500  (35.0%)  ← 35% clicked Add to Cart
Checkout:       1,800  (18.0%)  ← 51% of carts started checkout
Purchase:       1,200  (12.0%)  ← 67% of checkouts completed
📊

Filter funnel data by campaign, date range, country, or device to identify which traffic segments convert best.

E-Commerce Status Scheme PRO

Track the lifecycle of each conversion through e-commerce statuses, similar to Binom's status scheme.

Available Statuses

StatusIconDescriptionAuto-action
Cart🛒Customer added item to cart
Checkout💳Customer started checkout
PendingPayment being processed
SalePayment confirmedConversion → Approved
On Hold⏸️Under review (fraud check, etc.)
Refunded↩️Customer refundedConversion → Rejected
Chargeback🚫Payment disputedConversion → Rejected
Cancelled✖️Order cancelled before fulfillment

Status History

Every status change is logged with who made the change, when, and from/to statuses. View the history in the conversion detail modal.

Automatic Transitions

When status changes to Sale, the conversion is automatically marked as "approved". When it changes to Refund or Chargeback, the conversion is marked as "rejected" and revenue is excluded from reports.

Retargeting Pixels PRO

Inject retargeting pixels (Facebook, Google, TikTok) on ANY tracking link — even links to external sites you don't own. This is a feature unique to Trackily and ClickMagick.

How It Works

When a visitor clicks your tracking link /c/:slug, Trackily shows a brief intermediate page (1.5 seconds) that:

  1. Fires your Facebook Pixel (PageView event)
  2. Fires your Google Tag (page_view event)
  3. Fires your TikTok Pixel (page event)
  4. Runs any custom scripts you defined
  5. Redirects the visitor to the destination (landing page or offer)

Configuration

In the campaign editor, go to the Retargeting Pixels section:

FieldExampleDescription
Facebook Pixel ID123456789012345Your FB Pixel ID from Events Manager
Google Tag IDAW-123456789 or G-XXXXXXXXXGoogle Ads or GA4 measurement ID
TikTok Pixel IDABCDEF123456Your TikTok pixel code from Ads Manager
Custom Scripts<script>...</script>Any additional tracking scripts
💡

For local landing pages: The pixels are injected directly into the HTML (no intermediate page, no delay). The intermediate page is only used for external URL redirects.

Use Case

You promote a Shopify store you don't own. By adding your FB Pixel to the Trackily campaign, every visitor who clicks your link is added to your Facebook retargeting audience — even though the Shopify store doesn't have your pixel installed.

Multi-Touch Attribution ENTERPRISE

Go beyond last-click attribution with 4 models that distribute conversion credit across multiple touchpoints.

Attribution Models

ModelHow it worksBest for
Last Click100% credit to the last click before conversionDirect response campaigns
First Click100% credit to the first click that introduced the customerAwareness campaigns
LinearEqual credit to all touchpointsUnderstanding the full journey
Time DecayMore credit to touchpoints closer to conversionLong sales cycles, e-commerce

Example

Customer journey: Facebook Ad → Google Search → TikTok Ad → Purchase ($100)

Last Click:   Facebook $0, Google $0, TikTok $100
First Click:  Facebook $100, Google $0, TikTok $0
Linear:       Facebook $33, Google $33, TikTok $33
Time Decay:   Facebook $16, Google $28, TikTok $56

Access attribution reports at Attribution page. Select a model, date range, and campaign to see how revenue is distributed across traffic sources.

Audience Export PRO

Build audience segments from your traffic data and export them for retargeting on ad platforms.

Creating a Segment

Define Conditions

Filter visitors by: campaign, country, device, conversion status, date range, visit count, etc.

Preview Size

See how many visitors match your criteria before exporting.

Export

Download as CSV with email/phone hashes (SHA256) ready for upload to Facebook Custom Audiences or Google Customer Match.

Export Formats

PlatformFormatFields
FacebookCSV (Custom Audiences)Email (SHA256), Phone (SHA256), Country, City
GoogleCSV (Customer Match)Email (SHA256), Phone (SHA256), First Name, Last Name

Segment Examples

Audience Optimization ENTERPRISE

Automatically send conversion data in real-time to ad platforms (Facebook, Google, TikTok) for better ad optimization and higher match rates.

Supported Platforms

PlatformAPI UsedEvents Sent
FacebookConversions API (CAPI)Purchase, Lead
TikTokEvents APICompletePayment, SubmitForm
GoogleOffline ConversionsConversion with value

Setup

In the campaign editor, go to Audience Passback section:

FieldDescription
FB Pixel IDYour Facebook Pixel ID
FB Access TokenSystem User token with ads_management permission
TikTok Pixel IDYour TikTok pixel code
TikTok Access TokenFrom TikTok Ads Manager → Developer
Google Conversion IDGoogle Ads conversion action ID
Google Conversion LabelConversion label from Google Ads
🧠

Why use this? Ad platforms optimize better when they receive server-side conversion data. Facebook CAPI catches ~30% more conversions than the browser pixel alone (due to ad blockers and iOS privacy).

How It Works

Every time a conversion is recorded (via postback, webhook, or pixel), Trackily automatically fires the conversion data to all configured platforms with:

Users & Permissions

Manage team access with role-based permissions.

Roles

RoleAccess
AdminFull access to everything
ManagerRead+Write on campaigns, offers, LPs, flows, sources. Read on reports.
ViewerRead-only access to campaigns, offers, LPs, reports.
CustomGranular per-section read/write permissions.

Sections

10 sections with independent read/write toggles: Campaigns, Offers, Landings, Flows, Sources, Networks, Domains, Reports, Settings, Users.

Settings

AI Assistant

Configure Claude, Gemini, or DeepSeek API keys for the built-in AI chat. The AI can create campaigns, suggest optimizations, and generate landing page copy.

IP Anonymization

Enable to mask visitor IPs for GDPR compliance (last octet zeroed).

License Management

Activate your license in the sidebar → Upgrade button. Paste your license key (UUID) and click Activate.

Plans

FeatureStarterProEnterprise
Users15Unlimited
Flows & Routing
Bot DetectionBasicFull Anti-FraudFull Anti-Fraud
Automizer
Traffic AI
NotificationsIn-AppAll ChannelsAll Channels
A/B Testing
White Label

Get your license at license.trackily.online/portal.

Tracking Flow

The complete journey of a click through Trackily:

Traffic Source (Kadam, PropellerAds, etc.)
  │
  ▼
GET /c/:campaign-slug
  ├─ Parse visitor: IP, UA, sub1-5, referrer
  ├─ GeoIP lookup: country, city, ISP
  ├─ Parse UA: OS, browser, device type
  ├─ Fraud scoring: bot check, flood, datacenter
  ├─ Bot filter: redirect if score >= 50
  ├─ Frequency cap: block if limit exceeded
  ├─ Unique click detection (IP+UA hash)
  ├─ Flow evaluation: forced → regular → default
  ├─ Weighted landing selection
  ├─ Offer cap check: skip capped offers
  ├─ Create click record (UUID)
  └─ Serve landing (HTML) or redirect (URL)
       │
       ▼
  Landing Page
  ├─ Dynamic call-outs injected
  ├─ Lander protection active (if enabled)
  ├─ Step tracking (multi-step funnels)
  └─ Visitor clicks CTA
       │
       ▼
  GET /offer/:clickId/:offerId
  ├─ Append sub params (sub2=trackily_uuid)
  └─ Redirect to affiliate offer URL
       │
       ▼
  Conversion (on affiliate network)
  ├─ Network fires postback
       │
       ▼
  GET /postback?click_id={sub2}&amount={payout}
  ├─ Resolve click by ID
  ├─ Create conversion record
  ├─ Fire source postback (Kadam, etc.)
  └─ Dispatch notifications

API Reference

All admin endpoints require Authorization: Bearer {token} header.

Authentication

POST /admin/api/login
Body: { "email": "admin@example.com", "password": "..." }
Response: { "token": "...", "user": {...} }

Core Endpoints

MethodEndpointDescription
GET/admin/api/campaignsList campaigns
POST/admin/api/campaignsCreate campaign
GET/admin/api/offersList offers
GET/admin/api/statsGet tracking stats
GET/admin/api/stats/groupedGrouped analytics
GET/admin/api/clicksClick log (paginated)
GET/admin/api/conversionsConversion log
GET/admin/api/export/:typeExport data (CSV/JSON)
POST/admin/api/import/:typeImport data

Public Endpoints (No Auth)

MethodEndpointDescription
GET/c/:slugCampaign click tracking
GET/postbackConversion postback
GET/offer/:clickId/:offerIdOffer redirect
POST/api/check-emailHIBP breach check
POST/api/leadLead registration

Environment Variables

VariableRequiredDescription
DATABASE_URLYesPostgreSQL connection string
ADMIN_PASSWORDYesInitial admin password
PORTNoServer port (default: 3000)
LICENSE_KEYNoLicense key for Pro/Enterprise features
LICENSE_SERVER_URLNoLicense server URL (default: https://license.trackily.online)
HIBP_API_KEYNoHaveIBeenPwned API key for breach check

Need help? Contact support@trackily.online