Keitaro 8.1

  • We added row selection. Selected rows are subtracted from summary values.8.8.summary
  • New metrics:
    • Approve % (conversions / (sales + leads) * 100)
    • UC %
    • Bots %
    • LP clicks.
    • Sale time, Sale time since click
    • LP Click Time
    • Time Since LP Click
  • Separated metrics: EC, ROI, eCPM, EPC to “confirmed + hold” and “confirmed only”.
  • Added methods getOffer() and getSubId() to Click API Client. You can get the subid and offer link without performing redirect on the website.
  • Improved compatibility with JS in actions “Show text” and “Show HTML”. They return correct content-type and wrap the code if needed
  • Improved performance of reports and DB pruner.
  • Fixed some bugs.

Full changelog on page

Keitaro 8

Updated UI

  • New page “Campaigns” with brief stats. 
  • New page “Traffic Sources”.
  • New page “Landing Pages”.
  • New page “Affiliate Network”.
  • New page “Offers”.
  • Updated page “Streams”. Stats moved to the right side now.
  • New page “Profile”. Every user can choose preferred language and time zone, to change current password.
  • New Dashboard. Every block is customizable. 
  • Hotkeys. To see them, press “SHIFT+?”.
  • The sidebar is togglable.

Updated Reports

  • New report builder provides flexible reports. You can save a report to the favorites to get fast access to it from the menu.
  • New page “Trends”. There you can create trend chart with grouping by months, weekdays, days, and hours.
  • Added page “Exported Reports”. There you can see all previously exported reports and download them again.
  • All reports now have separated values of Revenue, EC, ROI that depends on conversion status (lead, sale, rejected).
  • New columns creative_id, ad_campaign_id, external_id.
  • New metrics:
    • LP click time
    • Time since LP click
    • LP CTR
    • Sale period
    • Sale time since click
    • and many others
  • New dimensions
    • Landing pages
    • Offers
    • Traffic Sources
    • Ad campaign ID
    • Creative ID
    • Weekdays
    • OS and Browser versions
    • IP
    • IP 1.2.*.*
    • IP 1.2.3.*
    • and many others
  • New campaign reports.

Changes in Lead Tracking and Conversions

  • Compatibility with upsells (rebills). Upsells increase click revenue, but not increase conversions count.
  • Count of Sub IDs and Extra Params increased to 10.
  • New cost method CPM (cost per 1000 clicks).
  • New offer payout methods CPC, CPA.
  • Added option “Auto” to campaign settings. When “auto” is enabled, a cost value is got from query param.
  • Implemented multi-step conversions. For example, you can send postbacks on every step “Cart → Order → Payment → Contact”.

Admin API (doc)

  • New Adminprovidesovide you access to all features of Keitaro through REST/JSON API.
  • New User API keys allow users to get access by using his personal API key.

Click API v2 (doc)

  • Keitaro API renamed to Click API.
  • Added cookies compatibility
  • Added PHP client for  Click API (You can take it on page “Integration” in your Keitaro).

Changes for Campaigns and Streams (doc)

  • Stream creation looks like this now:
  • Added names for streams.
  • Added option “Collect clicks”. To ignore all traffic in the stream, just switch it off.
  • Removed options “Bot protection” and “Default action”. They were unobvious. Not we recommend you to create streams with type “Default” or “Forced”. For example, to make bot protection, create a stream “Forced” with filter “Is Bot: allow”.
  • Implemented stream schemas. They are “Action”, “Redirect”, “Landing Pages” and “Offers”. Schema “Action” to perform some action for visitors. Schema “Redirect” to make a redirect. Schemas “Landing Pages” and  “Offers” split and send traffic between landing pages and offers.
  • New filters “Browser version”, “OS version”, Sub ID N, Extra Param N, ad_campaign_id, external_id, creative_id.
  • Removed option “Uniqueness detection method”. Keitaro chooses by himself the more appropriate method.
  • Uniqueness now checks IP+UA (with IPv6 compatibility).
  • Updated “URL Builder” for URL fields.
  • Removed action “Send to stream”.

Changes in Banners Mode (doc)

  • Removed campaign mode “Banner rotator”. You can use any stream with action “Show HTML”.
  • To get more information about using banner rotators, open “Integration” window and choose “Banner block (iframe)”, “Banner block (script)” or “JS ads”.
  • Integration method “JS ads” compatible with almost every ad formats.

Tracking Script (doc)

  • Removed campaign mode “Tracking”, you can setup tracking code with any campaigns now. To get information about this method, open “Integration” window or “Landing Pages > Instructions”
  • The script is now compatible with multi-page landing pages.
  • Compatible with stream schema “Offers”. You can split offers just on the landing page.
  • Can update params sub_id_1..10 and extra_param_1..10.

Changes in Users and Authorization

  • New user access rule settings.
  • Users gain access to Admin API but limited by their access rules.
  • Replaced hash method to sha256.
  • Added cookies crypting.

Keitaro Editions

  • Keitaro v8 has two editions: Basic and Pro. These features available only in Pro edition: Users management, Admin API, custom actions, and macros. Everyone with Basic license gets Pro features until 1th May.

Other Changes

  • Added page “Logs”.
  • “Visits” renamed to “Clicks”.
  • Updated cli.php (to get list of commands run “php bin/cli.php").
  • Removed page “Postback”. To get the postback URL, just create an affiliate network.


Q: How to install Keitaro 8?
A: Use new installer or 1-click installer.


Q: What the price for Pro edition?
A: It won’t be more that 2x of Basic license price.


Q: How to update from Keitaro 7 to Keitaro 8?
A: Download file upgrader8.php, upload it to Keitaro directory and open in the browser.


Keitaro 7.8


  • Fixed referrer in CURL action
  • In integration scripts replaced document.write to innerHTML
  • Integrated with,,,,,,
  • Compatibility with address format “”
  • Fixed bug that came when is used File Storage, campaign checks uniqueness by IP and MySQL is down
  • Updated the most instructions in “Integration Assistant”
  • Integrated with,,, TrafficVance,,,
  • Added option “Proxy all query params” in Integration Assistant
  • Fixed: Formula ROI calculates 100% in case cost is 0
  • Fixed: In detailed reports, column “Destination” shows campaign ID instead of campaign came
  • Integration with and
  • Fixed search field in sidebar
  • Fixed checkboxes for ios devices
  • Hidden streams of deleted campaigns in action “Send to stream”
  • Updated list of devices and bot signatures
  • Slightly improved performance
  • Increased precision of values Revenue, Cost, and Profit
  • Fixed checking key in postbacks
  • Fixed compatibility with AbstractRedirect2
  • Fixed creation of the first API key
  • Fixed bug in API
  • Fixed bug with regions list
  • Fixed bug in Cache
  • Removed a critical vulnerability!
  • Fixed checkboxes in streams
  • Fixed updating URL in Monitoring
  • Fixed error message on saving the settings
  • Added validation of imported json
  • Allow entering list of countries like “US, UK, DE”
  • Several UI improvements
  • Fixed bug with cache which occurred on large amount of traffic
  • Solved problem with sending long postback.

Please update your Keitaro installations!

We found a critical vulnerability in of component Keitaro TDS, which might give access to control panel (/admin).


How to fix that

  • Update to 7.7.10
  • Add HTTP-authentication to /admin


How to update 6.7.1

  1. Download file
  2. Replace existed file application/views/updates/index.phtml
  3. Go to “Updates” and press “Update”


HTTP-authentication for Apache

There you can generate files .htaccess and .htpasswd


HTTP-authentication for Nginx


Keitaro TDS 7.3

  • New database of mobile carriers
  • Added range of dates to all reports
  • New hourly report
  • Added “Visitor identification method” to Campaign setting
  • IP Filter considers unique period (like cookies)
  • Added “@empty” macros to filters in Detailed report
  • Removed deleted streams from list in “Send to stream”
  • Added summary for column “Period”
  • Added thai language to Language filter
  • Fixed row “0” in Streams Report
  • Fixed columns “Mobile” and “Empty referrer” in Campaigns Report
  • Added rule to forbid changing conversion status from lead to sale;
  • Fixed list of networks on page Postbacks
  • Added param “return” to postback url
  • Fixed error “Duplicate entry …” that appears 00:00
  • Improved Random stream selection algorithm
  • Fixed conversions in hourly report
  • Fixed bug with visitor empty geo-data
  • Fixed bug with viruscheckmate
  • Separator of keywords replaced from “,” to “;”
  • Updated devices db
  • Fixed bug with incorrect detection smartphone as table
  • Fixed value of “Destination” when triggered “404 Not Found”
  • Fixed filter “Source”
  • Fixed label “devices.@empty”
  • Fixed reloading cache after deleting stream
  • Fixed “Currency error”
  • Fixed time of conversions
  • Disabled switch of stream status for users which don’t have rights to edit streams
  • Time of conversion now equal time of visit
  • Fixed entering ISO codes to country filter
  • Fixed Language column in detailed report
  • Added “All countries” to the filter of country column
  • Fixed changing campaign in reports
  • Fixed calculating revenue and cost for Browser and OS
  • Fixed a small issue with VCM
  • Fixed a small issue with calculating cost for conversions
  • Fixed region and user-agent in Conversions
  • Update revenue after conversion changed his state
  • Fixed finding connection type when enabled storage Redis
  • Fixed data losses when data is being moved from files to db
  • Fixed Region filter
  • Fixed filter “Limits” when using redis
  • Fixed default sorting in detailed report
  • Fixed unknown regions in detailed report
  • Fixed hidden “GET-parameter” in filters list while edit
  • Fixed changing values in grouped reports
  • Fixed numbers format in reports
  • Fixed multiple rows “Unknown” in regions report
  • Fixed summing of values in reports when campaign is not selected
  • Allowed enter custom ISP name in filter “ISP”
  • Updated list of maxmind ISPs
  • Added grouping to all reports
  • Added searching by country code in “Country” filter
  • Fixed calculating hourly report
  • Fixed filter “Device Type + Reject”
  • Updated bot signatures list
  • Added grouping in reports “Sub ID 1-4”
  • Fixed button “Clear” in Monitoring Events
  • Fixed hidden button “Create campaign” for users
  • Fixed time correction for Conversions
  • Set rate 1 when Google Finance is unavailable
  • Fixed date picking in hourly report
  • Integration with
  • Fixed incorrect behavior on postback status “rejected”
  • Fixed updating cost from postback
  • Fixed finding connection type when mobile carrier found
  • Fixed bug which drop filters after editing weight (in-line)
  • Fixed bug which shows empty Position when creating new stream
  • Fixed bug with cost updating
  • Integration with
  • Fixed an error with authorization
  • Fixed date picking in reports
  • Removed signature instagram that caused incorrect bot detection
  • Integration with
  • Improved compatibility with CloudFlare
  • Add support of conversion status “Rejected”
  • Fixed duplication of some conversions
  • Fixed compatibility with Maxmind City Full
  • Fixed bug with different sub ids in Conversions and Detailed Report.
  • Fixed report “Streams”.
    • Removed untranslated string in UI
    • Fixed bug with empty values in reports
    • Fixed bug with values “0” in report “By Streams”
    • Show banner titles instead of codes in report “By Stream”
    • Fixed bug with restricting access to reports
    • Added permissions “View Dashboard” and “Reports”
    • Hide restricted for users pages from menu
    • Fixed bug with error “Redis was gone away”
    • Sorted values in countries list for filter “Country”

Keitaro TDS 7.2


  • Removed untranslated string in UI
  • Fixed bug with empty values in reports
  • Fixed bug with values “0” in report “By Streams”
  • Show banner titles instead of codes in report “By Stream”
  • Fixed bug with restricting access to reports
  • Added permissions “View Dashboard” and “Reports”
  • Hide restricted for users pages from menu
  • Fixed bug with error “Redis was gone away”
  • Sorted values in countries list for filter “Country”
  • Detects Wifi connections
  • Fixed filter by in detailed stats
  • Compatibility with redirect-scripts of Keitaro 6
  • Fixed filters in reports
  • Fixed bug with reseting position after stream edited
  • Fixed bug with “files” as draft storage
  • Fixed bug with filters dropping on state change
  • Added option “Action for domain” in Settings
  • Added full export of keywords
  • Show keywords as list for stream

Keitaro TDS 7.1

  • Fixed error “Failed to parse time string (2) at position 0 (2): Unexpected character”
  • Added default date intervals when grouping by days and months
  • Fixed keyword in traffic simulation
  • Fixed params in Campaign Integration Assistant
  • Fixed revenue calculations with leads
  • Fixed result refreshing in search page
  • Fixed calculation of EPC in summary
  • Fixed filter “Mobile Carrier”
  • Improved example code of “API Request” in “Campaign Intergration Assistant”
  • Fixed selecting current campaign for action “Send to Campaign”
  • Lead is replaced by Sale instead of create new Conversion Entry
  • Fixed cron freezing;
  • Fixed Redis as option in “Storage for draft data”
  • Fixed brut-force protection for sign in page
  • Fixed export of streams with filters
  • Fixed calculations for Campaign Hourly Report
  • Fixed date change in reports
  • Fixed redirect codes in “Campaign Integration Assistant”
  • Fixed edit link in Exit Stream (Default stream)
  • Improved protection of parallel cron execution
  • When chosen “MySQL” as “Storage for draft data”, all characteristics are resolved before cron
  • Added trimming of banner codes (to see full code press on it)
  • Fixed filter by Mobile Carriers
  • Add filtering by empty values in filters
  • Fixed link in Help > Contacts
  • Changed positions of block in stream form
  • Added migration to copy revenue values to “Detailed Report”
  • Restored setting “Redis Server”
  • Fixed currency in “Detailed Report”
  • Settings apply changes without full refresh
  • Fixed migration #78
  • Fixed extra params
  • Fixed collecting statistics for API
  • Fixed API code generation in Integration Assistant
  • Fixed sorting error in Campaigns report
  • Removed option “Use Redis”. Just select “Redis” in “Storage for draft data”
  • Implemented “auto-add” for filters values when unfocus
  • Fixed saving cache storage in Settings
  • Fixed notification about “php_redis extension”
  • Fixed calculation of statistics in beginning of days
  • More accurate values in the Dashboard
  • Fixed report Campaigns for “Default Action”
  • Fixed report Referrers
  • Fixed counter on Campaign pages
  • Fixed “Cannot redeclare geoip_country_name_by_name()”
  • Fixed design if sign in page for mobile devices
  • Fixed bug with unique status
  • Optimized RAM usage of calculating statistics
  • Fixed keyword parameter
  • Fixed URL validation in streams

Keitaro TDS 7


  • Groups are renamed to campaigns;
  • “Track conversion” option is removed. Conversion is always tracked;
  • Deleted campaigns are moved to archive and removed from reports (fully deleted after 2 months);
  • Billing the campaign option is added (in ”Other” menu). Costs sum is divided into the number of visitors for the chosen period and is applied to each report.
  • ”Campaign Connection Help” page is added. It demonstrates the ways to link Keitaro to landing pages, doorways, and advertising networks;
  • Short link to campaigns is available in Search section.


  • Deleted streams are moved into archive, but they stay in reports (fully deleted after 1 month);
  • Filters are added from the list;
  • Visitor number restriction filter (per day, per hour, and total). Works both with MySQL and Redis;
  • “Connection type“ filter added;
  • ”Provider” filter added (if Maxmind ISP is installed);
  • “Empty referrer” filter added;
  • Timetable tab is moved to ”Timetable” filter;
  • Uniqueness filter is divided into ”Uniqueness by Cookies” and ”Uniqueness by IP”;
  • “Exclude” mode is added to the filters by keyword and uniqueness;
  • “Monitoring” column is removed from the stream table. Check monitoring history by clicking green Monitoring icon.



  • Currency conversion through Google Currency Convertor is added. It is used if the ”currency” parameter is transmitted in the postback and it is different from the chosen currency.
  • Postbacks with leads are accepted. Their conversion is calculated separately, and they are not included in revenue and profit.
  • Rebills are accepted. It is important that tid (Transaction Id) parameter, unique transaction identifier, is also transmitted in the postback.
  • extra_param_1…7, which are present in ”Conversion” table, are also accepted with filtering and sorting options available.


  • New columns added: tid, original status, revenue, cost, profit, country, region, city, browser, OS, sub_id_1…4.
  • Conversion (leads/sales), costs, revenue, profit and ROI calculations are added. Each visitor parameter is taken except “extra_param_1…7”.
  • New parameters to indicate the way how status should be determined. These are “sale_status” and “lead_status” parameters. The old “status” parameter is a pseudonym for “sale_status”.


  • ”Statistics” page is renamed to ”Reports”;
  • ”Sales” page is renamed to ”Conversion”;
  • ”Visitors” page is renamed to ”Visitor specification”;
  • New reports are added: mobile carriers, providers (if Maxmind ISP is on), device type, connection type, regions and states, ”Sub ID 1…4”;
  • Column settings in reports are added;
  • Export to HTML is added;
  • New parameters are added: leads, sales, conversion (Leads), conversion (Sales), revenue, costs, profit, ROI, EPC.
  • Detailed reports for a period of several days are available, including their export to csv and html.



  • Visitor data storage is now available in files (as an alternative to Redis). This way it does not overload MySQL ;
  • When traffic is processed, determined visitor characteristics are only those necessary for the filters. All the others are determined when cron is launched;
  • Code in filters is optimized.


Visitor Tracking

A new campaign type (”Tracking”) is added. Only js-code gathering information about visitors and conversion is connected to the landing page.


Maxmind ISP and Connection Type Database Support

Maxmind Connection Type and Maxmind ISP database support is added. To connect the databases enter their key at Settings page. After this they are available for download and update at “Geo-databases” page.


  • ”Storage for traffic processor” option is added;
  • Currency settings are added;
  • Editing of additional IP bot list is added;
  • Pseudonym editing for get-parameters is added.


Automatic Diagnostics

  • Disabled cron check;
  • File access check;
  • Installer availability check and open configuration.


Technical Changes

  • This version is non-compatible with PHP 5.2;
  • Uniqueness is determined by cookies, considering indicated validity period in campaign settings. Before it was counted only by IP and only by calendar day;
  • Significant changes in database structure. The list of changes is available at Services > Migrations page.

Other Changes                                                   

  • “Archive” page is added;
  • Interface language options are moved to upper menu;
  • Lower bar is removed. Time settings are moved to Settings page (“Other” tab).

How to upgrade from version 6?

Please read page