0. 기본 정보

1) muti user 와 multi website 지원 : user 당 하나 이상의 웹사이트 access 가능

2) e-commerce traffic, file downloads, 404 pages, RSS feeds, 내/외부 웹사이트 클릭 과 같은 정보 track 지원

3) LAMP 환경에서 동작

(1) Apache 는 Nginx, lighttpd 와 같은 서버로 대체 가능

(2) PHP 5.1.3 이상 (5.3 이상 추천)

(3) MySQL 4.1 이상

(4) PHP GD extension / pdo + pdo_mysql extention (또는  mysqli extension)


1. 설치

1) 설치 정보

(1) 웹 인터페이스를 통해 설치가 진행됨

(2) piwik 공식 사이트를 통해 소스를 다운 받은 후 web 에서 접근할 수 있도록 시스템 설정 필요.

(3) PHP 소스이며 Apache 와 같은 웹서버와 Mysql Database 가 필요.

(3) piwik 이 필요한 테이블들을 생성할 수 있도록 권한을 가진 db 접속 유저와 database 를 준비한다. (ex: create database piwik)

(4) 설치 가이드 : http://piwik.org/docs/installation/


2) 설치 진행

(1) 최신 소스 (http://builds.piwik.org/piwik.zip) 다운로드후 압축해제

(2) 웹에서 접근할 수 있도록 해당 위치 설정

cd ~/mylocal


wget http://builds.piwik.org/piwik.zip && unzip piwik.zip 

ln -s ~/mylocal/piwik ~/public_html/piwik


(3) 웹페이지 접근 후 가이드 되는대로 따라가며 설치하면 된다

- http://www.itraveler.pro/~itraveler/piwik/

- piwik admin 계정 설정

- db 접속 정보 입력

- ...

(4) 설치페이지에서 가이드하는 문제점 해결 

- apache 권한으로 httpd 가 실행되어 있어 권한 조정

cd ~/mylocal


chmod -R 0755 ~/mylocal/piwik/tmp

chown -R apache.apache ~/mylocal/piwik

...

chmod -R 777 ~/mylocal/piwik/tmp/


(5) 설정 > 관리 > 추적코드 를 이용하여 정상 동작 테스트

- super user 로 로그인 후 테스트를 하면 리포트에 접속 로그가 보이지 않는다.

- 기본적으로 관리자 로그는 제외되기 때문이며, 설정을 통해 관리자 로그도 인식하도록 하거나, 타 브라우저를 이용해서 테스트한다.

3) 기본 정보

(1) 사용 쿠키

- _pk_id (2 years after the latest page view) : 64-byte int UUID. UTC cookie 생성 일시 / visit count (_pk_ses cookie 가 생성될 때마다 1증가) / 마지막 방문의 timestamp 등의 값을 저장

- _pk_ses (30 minutes after the latest page view) : 신규 세션은 30분이상 접근하지 않았을 때 생성됨. 즉 UV 카운터는 30분 이상 접근하지 않았을 때 1이 증가된다.

- _pk_ref (6 months from the date of creation) : referrer URL 과 저장시간 저장. 1024 bytes 까지만 보관.


2. 대용량 트래픽 웹사이트를 위한 Piwik 설정

1) 좀 더 좋은 시스템 사용

(1) shared VM > Virtual Private Server > Dedicated server

2) 램 추가

(1) 4GB 이상의 램 추천

3) PHP Opcode Caching

(1) APC or XCache 등과 같은 Opcode Caching을 사용

4) lighter web server 사용

(1) Nginx 또는 lighttpd 와 같은 가벼운 웹서버 고려

5) Report archiving process 를 cron job 으로 설정

(1) 기본설정은, 브라우저로 보고서를 보는 시점에 report archiving process 가 수행됨.

(2) 설정 > 일반 에서 disable 처리

(3) cron job 에 /misc/cron/archive.php 추가 (30분 또는 1시간 정도 추천)

6) Real-time report 해제

(1) 실제로는 real-time 이 아닌 10초 정도의 시간을 가지고 report 가 갱신됨

(2) 설정 > 일반 에서 해당 초 값을 3600 (seconds) 정도로 설정

7) 오래된 로그 삭제

(1) 설정 > 개인정보 보호 > 오래된 방문자 기록 및 보고서 삭제 에서 정기적으로 오래된 방문자 로그와 보고서를 삭제할 수 있도록 설정

8) 다수의 웹 서버 사용

(1) Load balancer (L4) 를 앞 단에 두어 트래픽을 여러 웹 서버로 분산.

(2) piwik 복제

- config/config.ini.php 를 모든 서버에 동기화 (rsync 등을 이용)

- tmp/* 삭제 (piwik 업그레이드 또는 플러그인 추가시)

- config/config.ini.php 에 database session storage(session_save_handler = db table) 설정

- config/config.ini.php 에 SSL Enable (Add force_ssl=1)

9) URL 제한

(1) URL 파라미터를 제외시키는 방법을 통해 작은 URL 을 추적할 수 있게한다.


3. Tracking Code (http://developer.piwik.org/guides/tracking-introduction)

1) Javascript Tracking

- http://developer.piwik.org/guides/tracking-javascript-guide

http://developer.piwik.org/api-reference/tracking-javascript


(1) Javascript Tracker Object : visitor 가 수행하는 모든 액션을 track 하는 javascript object. piwik javascript client 의 모든 작업이 해당 object 를 통해 이뤄진다.

(2) /piwik.js 파일에 존재하며, /piwik.php 를 호출하여 기록한다.

(3) asynchronous tracking 을 위해 configuration 과 tracking call 들은  global 변수인 _paq array 에 push 해 둔다. 따라서, piwik.js 파일이 loading 된 후에 _paq 변수에 값을 push 해야 한다.

(4) data push 형식

- 기본 형태

_paq.push([ 'API_method_name', arg1, arg2... ]); 


- 함수 실행도 가능

_paq.push([ function() { visitor_id = this.getVisitorId(); }]); 


- custom variable 을 넣고 가져올 수 있음

_paq.push(['setCustomVariable','1','VisitorType','Member']);

_paq.push([ function() { var customVariable = this.getCustomVariable(1); }]); 


2) Tracking HTTP API  & API Clients 

http://developer.piwik.org/guides/tracking-api-clients 

http://developer.piwik.org/api-reference/PHP-Piwik-Tracker


4. Javascrpt Tracking API

1) Piwik.getTracker(trackerUrl, siteId)

(1) tracker 의 신규 인스턴스를 생성 

(2) Parameters

- trackerUrl : /pwik.php 의 URL

siteId : piwik 관리자에서 새 사이트를 만들면 생성되는 ID.

(3) _getTracker(account) 와 동일

2) trackPageView([customTitle])

(1) page visit log 를 남긴다.

(2) custom Title 인자를 남기면 해당 Title 로 로그가 남는다. 빈 인자인 경우 기본값인 현재 URL 로 남게 된다.

(3) _trackPageview(opt_pageURL) 와 동일

<ul>

    <li><a href="#About" onclick="javascript:piwikTrack.trackPageView('Menu/About');">About Us</a></li>

    <li><a href="#Privacy" onclick="javascript:piwikTrack.trackPageView('Menu/Privacy');">Privacy Policy</a></li>

    <li><a href="#Returns" onclick="javascript:piwikTrack.trackPageView('Menu/Returns');">Return Policy</a></li>

<ul> 


3) enableLinkTracking(enable)

(1) 트래킹하는 웹사이트를 떠나거나 file download 를 하는 등의 click 을 tracking 한다.

(2) enable 인자를 true 로 호출하면 pseudo-click handler 를 사용하여 middle mouse button 을 막는다.


4) addListener(element)

(1) 특정 DOM element 를 argument 로 넘기면 해당 DOM element 가 click 될 때 Piwik 이 자동으로 log 를 남긴다.

- 일반 형태

var shoutboxButton = document.getElementById( "myShoutboxButton" );

piwikTracker.addListener(shoutboxButton);

piwikTracker.trackPageView('ShoutBoxClick');

- jquery 사용시

$(document).ready(function(){

    $('#myShoutBoxButton').click(function() {

        piwiTracker.trackPageView('ShoutBoxClick');

    });

}); 


5) setDocumentTitle(title)

(1) 기본값인 page url 로 tracking 하지 않고 지정된 title 값으로 tracking 할 수 있다. Override document.title

piwikTracker.setDocumentTitle(document.title); // page title 이용

piwikTracker.setDocumentTitle(document.domain + "/" + document.title); // mutil domain 인 경우 domain 추가

piwikTracker.setDocumentTitle("<?php echo $MyCustomPageName; ?>");  // php 에서 설정한 값 사용


6) setCustomUrl(url_str)

(1) 현재 page 의 url 이 아닌 설정한 URL 로 report 된다.

piwikTracker.setCustomUrl('http://mydomain/customurl.php'); 


7) setReferrerUrl(url_str)

(1) referrer URL 을 지정한 값으로 report 한다.

 piwikTracker.setReferrerUrl('http://mydomain/customurl.php'); 


8) setCookieDomain(domain_str) 

(1) 기본값으로 Piwik 은 각각의 도메인별로(subdomain 별) 필요한 쿠키를 생성함

(2) 몇개의 sub domain 이 하나의 쿠키를 사용할 수 있도록 설정

tracker.setCookieDomain('*.example.com'); 


9) setDomains(array)

(1) 하나의 서비스를 multi domain 으로 서비스 하고 있을 경우, 이 것을 하나의 서비스로 보고 tracking 할 수 있도록 한다. (ex: www.myservice.com, blog.myservice.com 이 같은 서비스 일 경우)

tracker.setDomains('*.example.com'); 


10) setCookiePath(path)

(1) 쿠키가 활성화 될 path 를 지정한다. 각 사용자 페이지별로 별도의 사이트로 인식하여 처리하고 싶을 경우에 유용한다. (ex: http://www.example.com/myid, http://www.example.com/friendid )


11) 기타 쿠키 관련 함수

(1) setCookieNamePrefix(prefix) : piwik 이 사용하는 쿠키들의 이름 prifix (default : _pk_)

(2) setVisitorCookieTimeout(seconds): The default is 2 years.

(3) setSessionCookieTimeout(seconds): The default is 30 minutes.

(4) setReferralCookieTimeout(seconds): The default is 6 months.


12) 일부 링크 Tracking 막기

(1) css class 를 지정하여 tracking 되는 것을 막을 수 있다.

 setIgnoreClasses(string|array)


 <a href='http://site.com' class='notrack'>The Link</a>


piwikTracker.setIgnoreClasses("notrack");


(2) class 명에 piwik_ignore 를 주면 setIgnoreClasses 를 사용하지 않아도 트래킹 되지 않는다.

<a href='http://site.com' class='piwik_ignore'>The Link</a> 


13) 강제 Tracking 지정

(1) piwik 이 링크를 인지하지 못할 경우(스크립트 등으로 처리한 경우 등) 인식할 수 있도록 지정할 수 있다.

(2) download 

- class 이용

<a href='download.php?id=1' class='piwik_download'>The File</a> 

- method 이용

piwikTracker.setDownloadClasses("download");

(3) 외부 사이트로 이동하는 outlink

- class 이용

<a href='http://site.com/myredirect.php?id=2' class='piwik_link'>My Outlink</a>

- method 이용 Type 1

piwikTracker.setLinkClasses("outlander"); 

- method 이용 Type 2 (첫번째 인자 : click 으로 인식할 URL, 두번째 인자 : link or download)

<a href="mailto:gmail@gmail.com" target="_blank" onClick="javascript:piwikTracker.trackLink('http://www.gmail.com', 'link');">gmail@gmail.com</a> 


14) 다운로드로 인식할 file extention 지정

(1) 기본 인식 확장자

7z | aac | arc | arj | asf | asx | avi | bin | bz| b z2 | csv | deb

| dmg | doc | exe | flv | gif | gz | gzip | hqx | jar | jpg | jpeg |

js | mp2 | mp3 | mp4 | mpg | mpeg | mov | movie | msi | msp | odb |

odf | odg | odp | ods | odt | ogg | ogv | pdf | phps | png | ppt | qt

| qtm | ra | ram | rar | rpm | sea | sit | tar | tbz | tbz2 | tgz |

torrent | txt | wav | wma | wmv|wpd | xls | xml | z | zip

(2) 기본 인식 확장자 대체

piwikTracker.setDownloadExtensions( "zip|rar|7z" ); 

(3) 확장자 추가

 piwikTracker.addDownloadExtensions( "mp52|mp69" );


15) download / outlink pause timer 설정

(1) 브라우저가 이동하기 전에 piwik 이 log 를 남길 시간을 벌기 위해 pause time 설정

(2) 기본값 : 500 milliseconds

(3) 변경 method

piwikTracker.setLinkTrackingTimer(300); 


16) 요청 method(GET or POST) 지정 : setRequestMethod(method)

17) url hash tag 무시 : discardHashTag(true)

18) track when pages get prerendered : setCountPreRendered(true)

19) 사용자 의도의 tracking 하지 않음 설정 : setDoNotTrack(bool)

20) 저장된 파일일 경우 원래의 URL 로 이동 : redirectFile(url)

21) piwik이 생성하는 방문자 16-digit ID 획득 : getVisitorId()

22) getVisitorInfo() : piwik 이 사용자별로 생성한 cookie array 리턴

23) 다중 tracker 사용

(1) getTracker 이용하여 여러개 생성

 var piwikTracker1 = Piwik.getTracker(protoCol + URL_1/piwik.php", 1);

piwikTracker1.trackPageView();

var piwikTracker2 = Piwik.getTracker(protoCol + URL_2/piwik.php", 4);

piwikTracker2.trackPageView();


(2) 생성된 Tracker object 에 ID 설정

 var piwikTracker = Piwik.getTracker();

piwikTracker.setSiteId(2);

piwikTracker.setTrackerUrl("http://mysite.com/piwik/");


5. Tracking Goals

1) 종류

(1) Transaction goals 

- Transactional goals 은 금전적 가치를 가지는 어떤 목표 

(2) Engagement goals 

- 당장 돈이 되는 것은 아니지만, 브랜드 가치를 올리거나 미래 전환을 만들 수 있는 Goals

2) 용어

(1) Conversion (전환)

- visitor 가 Goal 을 달성했을때 converted 또는 conversion 이 발생되었다고 한다.

(2) Conversion Rate (전환율)

- unique 한 방문을 기준으로, 요구된 액션(desired action)이 수행된 비율 (conversion / unique visit * 100)

3) Goal 설정

(0) 기본적으로 특별한 코드의 추가 없이 툴 설정만으로 Goal 의 수치를 수집 가능하며, 자바스크립 API 를 이용하여 수동으로 데이터를 추가 가능.

(1) Goal Name : Goal 명칭. 구분하기 쉽도록 작성

(2) Goal is triggered

- When visitors : Visiting a given URL(기입한 URL에 방문), Visiting a given page title(기입한 타이틀을 가진 문서에 방문), Downloading a file(파일 다운로드), Clicking on a link to an external website (외부 웹사이트 링크 클릭)

- manually : When visiters: 에 해당되지 않는, 버튼 클릭 이벤트 / Form Submit 등의 Dynamic 한 케이스로 conversion 발생을 자동으로 확인할 수 없을 때

(3) Filter (Where the URL)

- contains : 포함할때 (ex: url paramter 와 상관없이 Goal 달성시 사용)

- exactly : 완전히 일치 할때

- matchs the expression : regular expression 사용

(4) allow multiple conversions per visit

- Goal can only be converted per visit : unique visit 을 기준으로 한번만 conversion 허용

- Allow goal to be converted more than once per visit : 한번 이상 허용

(5) goal default revenue (수익 금액)

- conversion 100번  발생시 1$ 라면 0.01

- 수익금액을 수시로 바뀔 수 있으므로 정기적으로 그 평균값으로 수정하여 리포트를 볼 수 있도록 한다.

4) Triggering conversions manually

(1) Javascript API

 trackGoal(idGoal, [customRevenue])

 idGoal : 관리 페이지에서 Goal 을 등록하면 생성되는 아이디

- custom Revenue : conversion 마다 금액이 다를 수 있으며, 금액을 입력하면 해당 값으로 등록된다. (넣지 않으면 관리 페이지에서 입력한 금액)


6. Tracking Marketing Campaigns

1) marketing campaign

(1) 트래픽이나 전환율을 증가 시키기 위해 돈이나 시간을 쓰는 어떠한 것도 해당

(2) 투자 대비 효율성 있는 리턴을 얻고 있는지 확신하기 트래킹하는 것은 충분한 타게팅 가치가 있음.

2) campaign tracking 을 위해 piwik 에서 해야 할일

(1) 어떤 설정도 필요 없음

(2) 단지 1~2 개의 URL parameter 만 추가하면 됨.

(3) pk_campaign parameter : 캠페인 구분자

(4) pk_kwd parameter : 캠페인 키워드 (어떤 검색 키워드를 통해 들어왔는지 등을 구분하기 위해 사용)

(5) 구글 Adword 등과 같은 광고 제공 솔루션들은 자체 태그를 통해 광고 배너를 클릭했을때 어떤 키워드를 통해 유입되었는지 URL 에 변환하여 입력해 준다. 

http://www.HolyHandGrenadesAreUs.com/grenade_landing_page.html?pk_ampaign=Paid-{ifsearch:AdWordsSearch}{ifcontent:AdWordsDisplay}
{ifmobile:AdwordsMobile}-TenPerCentOff&pk_kwd={keyword}

 

3) Goal Tracking 과 조합하면 더 좋은 효과를 가져올 수 있다.

(1) 목표를 설정하고, 해당 목표에 어떤 마케팅 유입을 통해 들어왔는지 확인이 가능하다.

4) weekly news letter 의 링크를 통해 들어온 유저가 구매는 하지 않았지만, 다음날 news letter 의 단어를 기억해 내고 검색엔진을 통해 해당 단어를 검색하여 접속하였을 경우

(1) piwik 은 마지막 referrer 를 기준으로 하여 검색엔진의 conversion 을 증가시킨다.

(2) 이런 경우 처음 referrer 기준 (news letter) 으로 잡는게 맞다고 판단하면 setConversionAttributionFirstReferrer 메소드를 통해 처음 기준으로 conversion 을 잡을 수 있다.

5) 캠페인 parameter customizing

(1) Google Analytics 파라미터 이용 : Piwik 은 Google Analytics 의 파라미터를 piwik 이 사용하는 파라미터로 변경해준다.

(2) Google Analytics 는 4개의 parameter 를 이용 : utm_campaign, utm_medium, utm_term, utm_source.

(3) Piwik 은 utm_term 을 pk_kwd 로,  utm_campaign, utm_medium, utm_source 를 연결하여 pk_campaign parameter 로 매핑시켜 준다.

(4) 또한 setCampaignNameKey('campaign'), setCampaignKeywordKey('keyword') 메소드를 이용하여 수동으로 캠페인 키와 캠페인 키워드를 지정할 수 있다.

6) parameter name 변경

(1) config/config.inc.php 에서 piwik이 인지할 parameter name 자체를 변경할 수 있다. 

[Tracker]
campaign_var_name="campaign"
campaign_keyword_var_name="keyword" 

- pk_campaign --> campaign 으로, pk_kwd 가 keyword 로 바뀌게 된다.

7) conversion tracking 셋업을 했다면 방문 카운트 뿐만 아니라 conversion 카운트, conversion rate, purchase revenue per visit 수치도 함께 볼 수 있다.


 

7. Event Tracking

1) 개요 

- 페이지 로드를 일으키지 않는 자바스크립트나 플래시와 같은 이벤트들은 표준 Piwik tracking code 에 의해 잡히지 않는다. 따라서 이를 기록하기 위해서는 별도의 코드 추가가 필요함.

2) Google Analytics 의 이벤트 트래킹 파라미터

(1) Category : 트래킹 그룹명

(2) Action : 유저 액션 정의 문자열

(3) Label : 추가 데이터 (optional, 200자 제한)

(4) Value : 추가 숫자 데이터(optional, 200자 제한)

(5) Non-interaction : 반송율(bounce rate) 계산에서 제외(optional)

3) Piwik 에서는 custom variable 을 사용한다.(이벤트 트래킹이라고 불리우는 것은 없다) 최대 5개까지의 custom variable 을 설정할 수 있다. (each visitor and/or each page view) 기본적으로, top 100개의 custom 변수만 처리함. 나머지는 other 로 표현.

piwikTracker.setCustomVariable (index, name, value, scope); 

(1) index : 1~5 사이의 숫자. custom 변수의 index 값

(2) name: custom 변수명 또는 키

(3) value: 변수명에 매핑되는 값

(4) scope: per visit or per page

- piwikTracker.setCustomVariable(1,"Video","Play","page");

- piwikTracker.setCustomVariable(1,"Video","Pause","page");

- piwikTracker.setCustomVariable(1,"Video","Tweet","page");

4) piwikTracker.trackLink()

(1) setCustomVariable 호출 후에 trackLink 를 불러줘야 custom 변수 설정이 된다.

onclick="javascript:piwikTracker.setCustomVariable(2,'Product Pricing','View Product Price','page');piwikTracker.trackLink();" 

5) Flash Action Script 에서의 호출

(1) Action Script 2

on (release) {

  getURL ("javascript:(function(){piwikTracker.setCustomVariable(1,"Video","Play","page");})()");

}

(2) Action Script 3

 import flash.external.ExternalInterface


playBtn.addEventListener(MouseEvent.CLICK, ExternalInterface.call('piwikTracker.setCustomVariable', 1,'Video', 'Play', 'page'));

<object ...

<param name="allowScriptAccess" value="always" />

<!-- {THE_REST_OF_THE_OBJECT_HERE} -->

<embed ... allowScriptAccess="always"

<!-- {THE_REST_OF_THE_EMBED_HERE} -->

</embed>

</object>



8. E-commerce Tracking

1) 설정

(1) 기본적으로 disable 상태

(2) 설정 > 웹사이트 > 수정 > Ecommerce enabled 로 설정

(3) Goals 메뉴가 Ecommerce & Goals 로 변경됨

2) 주문 Tracking Code

(1) 아이템 추가

addEcommerceItem(Sku,ProductName,Category,Price,Quantity)

- Sku(Stock Keeping Unit) : 제품 구분 ID. 내부적인 제품 번호 등을 기입

- ProductName : 제품명 (optional)

- Category : 카테고리 (optional)

- Price : 가격 (optional. must be an integer or float, not a string)

- Quantity : 수량 (optional. integer)

(2) e-commerce order 생성

 trackEcommerceOrder(OrderID, GrandTotal,SubTotal,Tax,Shipping,Discount)

OrderID : 주문번호

GrandTotal : 총액 (optional. must be a float or int value and not a string)

- SubTotal : Price 합계 (optional. must be a float or int value and not a string)

- Tax : 세금 (optional. must be a float or int value and not a string)

- Shipping : 배송료 (optional. must be a float or int value and not a string)

- Discount : 할인 적용 여부 (optional. true or false)

(3) example

<script type = "text/javascript">

try {

var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", $SITE_ID);

piwikTracker.addEcommerceItem(

"M-2542", //sku

"Holy Hand Grenade", //name

"Gold Things", //category

14.99, //price

1); //quantity

piwikTracker.addEcommerceItem(

"B-2535", //sku

"Holy Hand Grenade Rattle", //name

"Gold Things", //category

7.49, //price

2); //quantity

piwikTracker.trackEcommerceOrder(

"000005236", //order id

38.97, //grand total

29.97, //sub total

5.5, //tax

4.5, //shipping

false); //discount offered

piwikTracker.trackPageView();

piwikTracker.enableLinkTracking();

} catch (err) {}

</script> 


3) Shopping cart tracking code

(1) addEcommerceItem(productSKU, productName, productCategory, price, quantity)

(2) 카트에 담은 금액 총액 : 취소된 금액 추적을 위해 사용된다.

trackEcommerceCartUpdate(cartTotal) 

(3) example

<script type = "text/javascript">

try {

var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php",

$SITE_ID);

piwikTracker.addEcommerceItem(

"M-2542", //sku

"Holy Hand Grenade", //name

"Gold Things", //category

14.99, //price

1); //quantity

piwikTracker.addEcommerceItem(

"B-2535", //sku

"Holy Hand Grenade Rattle", //name

"Gold Things", //category

7.49, //price

2); //quantity

piwikTracker.trackEcommerceCartUpdate(29.97); //cart total

piwikTracker.trackPageView();

piwikTracker.enableLinkTracking();

} catch (err) {}

</script> 


4) Tracking product and category page views

(1) 제품 또는 카테고리 Page View 추적

setEcommerceView(productSKU, productName, categoryName, price) 

(2) example

<script type = "text/javascript">

try { 

var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php",$SITE_ID);

piwikTracker.addEcommerceView(

"M-2542", //sku

"Holy Hand Grenade", //name

"Gold Things", //category

14.99); //price

piwikTracker.trackPageView();

piwikTracker.enableLinkTracking();

} catch (err) {}

</script>

5) e-commerce taking plug-in

(1) Zencart



9. Advanced Tracking

1) PHP traking api

(1) Javascript tracking 과 달리 추적데이터 제공 불가 항목 존재

Screen resolution

Browser plugin support

Local time

Cookie support

(2) 설치

http://piwik.org/docs/tracking-api/ 방문 (Click here to download the file PiwikTracker.php)

- 자신의 웹사이트의 적당한 곳에 api 설치

(3) 사용

<?php

// -- Piwik Tracking API init --

require_once "/PATH_TO/PiwikTracker.php";

PiwikTracker::$URL = 'http://YOUR_PIWIK_URL';


....

echo '<imgsrc="'. str_replace("&","&amp;",Piwik_getUrlTrackPageView( $idSite = {$IDSITE}, $customTitle ="MyDownload-".$download_url)) . '" alt="" />';

?> 

- PATH_TO : api 설치 위치

- YOUR_PIWIK_URL : piwik 설치 base url


function Piwik_getUrlTrackPageView( $idSite, $documentTitle = false )

{

  $tracker = new PiwikTracker($idSite);
  return $tracker->getUrlTrackPageView($documentTitle);
}


function Piwik_getUrlTrackGoal($idSite, $idGoal, $revenue = false) 

{

  $tracker = new PiwikTracker($idSite);

  return $tracker->getUrlTrackGoal($idGoal, $revenue);

}


2) Making an HTTP request to the tracker

<?php

require_once "/PATH_TO/PiwikTracker.php";

//Set the id of your piwik site here

$idSite = 1;

$token_auth = 'your user token here';

//Create a PiwikTracker Object

$piwikTracker = new PiwikTracker($idSite, 'http://your_piwik_url.com/piwik/');

//Set token_auth - required for setVisitorId

$piwikTracker->setTokenAuth( $token_auth );

//Visitor Id from our site's user database

$piwikTracker->setVisitorId( "33c31e01394bdc63" );

// Sends Tracker request via http

$piwikTracker->doTrackPageView('Get Page Title From DataBase Here');

// You can also track Goal conversions

$piwikTracker->doTrackGoal($idGoal = 1, $revenue = 10);

?> 


3) Using Piwik's tracking API directly (228~229)

http://mypiwik.com/piwik/piwik.php?action_name=Google%20Scraper%20Footprint%20Finder&idsite=5&rec=1&r=055697&h=22&m=22&s=21&url=

http%3A%2F%2Fgooglescraper.deal23.com%2F&_id=8af038f1463fb845&_

idts=1340161706&_idvc=1&_idn=0&_refts=0&_viewts=1340161706&pdf=1&qt=1

&realp=0&wma=0&dir=1&fla=1&java=1&gears=0&ag=1&cookie=1&res=1600x900&r

and=0354510516


4) Debugging your tracking code

(1) 모든 tracking 호출은 Piwik.php 를 통해 이루어진다.

(2) 디버깅을 위해서는 PIWIK_TRACKER_DEBUG 변수 값을 true 로 설정한다.

 $GLOBALS['PIWIK_TRACKER_DEBUG'] = true;


5) Piwik plugins



10. Piwik Integration

1) CMS plugins

(1) WP-Piwik plugin 와 같은 외부 솔루션에서 Piwik 의 데이터를 가져가 노출하는 플러그인들이 존재

2) Piwik Mobile

(1) 안드로이드 앱과 IOS 앱 모두 지원

(2) Piwik API 를 이용해서 구현 됨.

(3) The Piwik Mobile app is available for both

the Android and the iOS operating systems

3) Accessing Piwik's data

(1) Piwik analytics API 를 통해 report 데이터를 받을 수 있다.

- XML: Extensible Markup Language

- JSON: JavaScript Object Notation

- TSV: Tab Separated Values, for Excel

- RSS: Really Simple Syndication

(2) 인증이 필요한 데이터의 경우, 접근 사용자를 추가하고 token_auth 를 확인/사용 해야한다.

http://yourpiwiksite.com/piwik/index.php?module=API&method=Actions.getEntryPageTitles&idSite=1&period=day&date=last10&format=rss&token_auth=

2156e61de6286a2fe7faddf6ac181c96&translateColumnNames=1 

- 인증 필요 없는 데이터는 anonymouse 접근 가능 설정 후, token_auth=anonymous 파라미터 이용

(3) piwik 이 설치된 서버에서 local 호출 api

<?php

define('PIWIK_INCLUDE_PATH', realpath('ReplaceWithThePathToYourPiwi

kFolder'));

define('PIWIK_USER_PATH', realpath('PIWIK_INCLUDE_PATH'));

define('PIWIK_ENABLE_DISPATCH', false);

define('PIWIK_ENABLE_ERROR_HANDLER', false);

define('PIWIK_ENABLE_SESSION_START', false);

require_once PIWIK_INCLUDE_PATH . "/index.php";

require_once PIWIK_INCLUDE_PATH . "/core/API/Request.php";

Piwik_FrontController::getInstance()->init();

$request = new Piwik_API_Request('

method=Referers.getKeywordsForPageUrl

&idSite=1

&date=yesterday

&period=week

&url=http://www.stephanmiller.com/my-link-lists/92-freeclassified-

ad-sites/

&format=XML

&token_auth=anonymous

');

// Calls the API and fetch XML data back

$result = $request->process();

echo $result;

?> 


(4) Graphic image 가져오기

<!DOCTYPE HTML>

<html lang="en-US">

<head>

<meta charset="UTF-8">

</head>

<body>

<img src="http://demo.piwik.org/index.php?module=API&method=ImageGra

ph.get&idSite=3&apiModule=VisitsSummary&apiAction=get&token_auth=ano

nymous&graphType=evolution&period=day&date=previous30&width=500&heig

ht=250" alt="" />

</body>

</html> 


ImageGraph.get (idSite, period, date, apiModule, apiAction, graphType= '', outputType = '0', column = '', showMetricTitle = '1', width = '', height = '', fontSize = '9', aliasedGraph = '1', idGoal = '', colors = '')


(5) Live API

(1) real time data 를 가져올 수 있는 API

Live.getCounters(idSite, lastMinutes, segment) 

Live.getLastVisitsDetails(idSite, period, date, segment, filter_limit, maxIdVisit, minTimestamp)

...


(2) REST API

http://YOUR_PIWIK_URL/piwik/index.php?module=API&method=Live.getCounters&idSite=YOUR_SITE_ID&lastMinutes=60&format=json&token_auth=anonymous 


4) Segmentation

 Operator

Meaning

Example

==

 Equals

 &segment=county==DE

 !=

 Does not equal

 &segment=referrerName!=Bing

 <

 Less than 

&segment=daysSinceLastVisit<2 

 <=

 Less than or equal to 

 &segment=actions<=2

 >

 Greater than 

 &segment=visitDuration>180

 >=

 Greater than or equal to 

 &segment=visitServerHour>=18

 =@

 Contains 

 &segment=referrerKeyword=@free

 !@

 Does not contain 

 &segment= referrerKeyword!@






 

Posted by 얼랄라