From 3b2eb4d8fb435bea1f0a172e1923db0ad2fc5ac9 Mon Sep 17 00:00:00 2001 From: Noctis Hsu Date: Fri, 1 Apr 2016 13:01:08 +0800 Subject: [PATCH 1/5] Add Facebook pixel tag api definitely typed --- facebook-pixel/facebook-pixel-tests.ts | 41 +++++++++ facebook-pixel/facebook-pixel.d.ts | 123 +++++++++++++++++++++++++ 2 files changed, 164 insertions(+) create mode 100644 facebook-pixel/facebook-pixel-tests.ts create mode 100644 facebook-pixel/facebook-pixel.d.ts diff --git a/facebook-pixel/facebook-pixel-tests.ts b/facebook-pixel/facebook-pixel-tests.ts new file mode 100644 index 000000000..d4de318e7 --- /dev/null +++ b/facebook-pixel/facebook-pixel-tests.ts @@ -0,0 +1,41 @@ +/// + +fbq('init', ''); +fbq('track', 'PageView'); + +// Standard event (can be used for conversion tracking +// and optimizing in addition to audience building) +var purchaseParam:facebook.Pixel.PurchaseParameters = {currency: 'EUR', value: 15.23}; +purchaseParam["Test"] = 44; // add custom parameter +fbq('track', 'Purchase', purchaseParam); + +// Legacy conversion event (can only be used for conversion +// tracking and optimizing) + +// Custom event (can only be used for audience building) + +var custom_params:any = {custom_param: 'custom_value'}; +fbq('trackCustom', 'MyCustomEvent', custom_params); + +// Reach customers that viewed a product in the 'Shoes' category +// with a price greater than $100 +fbq('track', 'ViewContent', { + content_name: 'Really Fast Running Shoes', + content_category: 'Apparel & Accessories > Shoes', + content_ids: ['1234'], + content_type: 'product', + value: 0.50, + currency: 'USD' +}); + +// Multiple events can also be added to each page. Ex: Reach visitors +// based on information about them and how they got to the page +// that Registered in the last n days +fbq('track', 'ViewContent', { + content_name: 'The Avengers Trailer', + content_category: 'Entertainment', + value: 1.50, + currency: 'USD', +}); + +fbq('track', 'CompleteRegistration', {currency: 'USD', value: 0.75}); diff --git a/facebook-pixel/facebook-pixel.d.ts b/facebook-pixel/facebook-pixel.d.ts new file mode 100644 index 000000000..d5c9b88a4 --- /dev/null +++ b/facebook-pixel/facebook-pixel.d.ts @@ -0,0 +1,123 @@ +// Type definitions for the Facebook Pixel Tag API +// Project: https://developers.facebook.com/docs/ads-for-websites/tag-api/ +// Definitions by: Noctis Hsu +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +declare var fbq:facebook.Pixel.Event; + + +declare module facebook.Pixel { + interface Event { + (eventType:string, InitialAppId:string):void; + (eventType:string, eventName:string):void; + (eventType:string, eventName:string, parameters:facebook.Pixel.ViewContentParameters):void; + (eventType:string, eventName:string, parameters:ViewContentParameters):void; + (eventType:string, eventName:string, parameters:SearchParameters):void; + (eventType:string, eventName:string, parameters:AddToCartParameters):void; + (eventType:string, eventName:string, parameters:AddToWishlistParameters):void; + (eventType:string, eventName:string, parameters:InitiateCheckoutParameters):void; + (eventType:string, eventName:string, parameters:AddPaymentInfoParameters):void; + (eventType:string, eventName:string, parameters:PurchaseParameters):void; + (eventType:string, eventName:string, parameters:LeadParameters):void; + (eventType:string, eventName:string, parameters:CompleteRegistrationParameters):void; + + (eventType:string, eventName:string, parameters:facebook.Pixel.DPA.AddToCartParameters):void; + (eventType:string, eventName:string, parameters:facebook.Pixel.DPA.PurchaseParameters):void; + (eventType:string, eventName:string, parameters:facebook.Pixel.DPA.ViewContentParameters):void; + + // custom event + //(eventType:string, eventName:string, parameters:any):void; + } + + + interface ViewContentParameters { + value?:number; + currency?:string; + content_name?:string; + content_type?:string; + content_ids?:string[]; + content_category?:string; + } + + interface SearchParameters { + value?:number; + currency?:string; + content_category?:string; + content_ids?:string[]; + search_string?:string; + } + + interface AddToCartParameters { + value?:number; + currency?:string; + content_name?:string; + content_type?:string; + content_ids?:string[]; + } + + interface AddToWishlistParameters { + value?:number; + currency?:string; + content_name?:string; + content_category?:string; + content_ids?:string[]; + } + + interface InitiateCheckoutParameters { + value?:number; + currency?:string; + content_name?:string; + content_category?:string; + content_ids?:string[]; + num_items?:number; + } + + interface AddPaymentInfoParameters { + value?:number; + currency?:string; + content_category?:string; + content_ids?:string[]; + } + + interface PurchaseParameters { + value:number; + currency:string; + content_name?:string; + content_type?:string; + content_ids?:string[]; + num_items?:number; + order_id?:string; + } + + interface LeadParameters { + value?:number; + currency?:string; + content_name?:string; + content_category?:string; + } + + interface CompleteRegistrationParameters { + value?:number; + currency?:string; + content_name?:string; + status?:string; + } +} + +// For Facebook Tag API using Dynamic Product Ads +declare module facebook.Pixel.DPA { + + interface ViewContentParameters extends facebook.Pixel.ViewContentParameters { + content_type:string; + content_ids:string[]; + } + + interface AddToCartParameters extends facebook.Pixel.AddToCartParameters { + content_type:string; + content_ids:string[]; + } + + interface PurchaseParameters extends facebook.Pixel.PurchaseParameters { + content_type:string; + content_ids:string[]; + } +} From aec655aedee5dcf5fbaa0ce4f2f11b75c52b1378 Mon Sep 17 00:00:00 2001 From: Noctis Hsu Date: Fri, 1 Apr 2016 14:26:07 +0800 Subject: [PATCH 2/5] Fix reference path --- facebook-pixel/facebook-pixel-tests.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/facebook-pixel/facebook-pixel-tests.ts b/facebook-pixel/facebook-pixel-tests.ts index d4de318e7..e29190d23 100644 --- a/facebook-pixel/facebook-pixel-tests.ts +++ b/facebook-pixel/facebook-pixel-tests.ts @@ -1,4 +1,4 @@ -/// +/// fbq('init', ''); fbq('track', 'PageView'); From 5701e952cb716715755108c694703d94314b74ca Mon Sep 17 00:00:00 2001 From: Noctis Hsu Date: Fri, 1 Apr 2016 14:28:42 +0800 Subject: [PATCH 3/5] remove unused code --- facebook-pixel/facebook-pixel.d.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/facebook-pixel/facebook-pixel.d.ts b/facebook-pixel/facebook-pixel.d.ts index d5c9b88a4..ff01fb0dd 100644 --- a/facebook-pixel/facebook-pixel.d.ts +++ b/facebook-pixel/facebook-pixel.d.ts @@ -23,9 +23,6 @@ declare module facebook.Pixel { (eventType:string, eventName:string, parameters:facebook.Pixel.DPA.AddToCartParameters):void; (eventType:string, eventName:string, parameters:facebook.Pixel.DPA.PurchaseParameters):void; (eventType:string, eventName:string, parameters:facebook.Pixel.DPA.ViewContentParameters):void; - - // custom event - //(eventType:string, eventName:string, parameters:any):void; } From d9af8cb1913172e2138852c37b6869b7e41cbc92 Mon Sep 17 00:00:00 2001 From: Noctis Hsu Date: Fri, 1 Apr 2016 14:31:21 +0800 Subject: [PATCH 4/5] fix error 'Index signature of object type implicitly has an 'any' type.' --- facebook-pixel/facebook-pixel-tests.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/facebook-pixel/facebook-pixel-tests.ts b/facebook-pixel/facebook-pixel-tests.ts index e29190d23..94e2b50b5 100644 --- a/facebook-pixel/facebook-pixel-tests.ts +++ b/facebook-pixel/facebook-pixel-tests.ts @@ -14,7 +14,7 @@ fbq('track', 'Purchase', purchaseParam); // Custom event (can only be used for audience building) -var custom_params:any = {custom_param: 'custom_value'}; +var custom_params = {custom_param: 'custom_value'}; fbq('trackCustom', 'MyCustomEvent', custom_params); // Reach customers that viewed a product in the 'Shoes' category From 003090b8cce144edd995660206c040f78b6f5333 Mon Sep 17 00:00:00 2001 From: Noctis Hsu Date: Fri, 1 Apr 2016 14:33:26 +0800 Subject: [PATCH 5/5] fix error 'Index signature of object type implicitly has an 'any' type.' --- facebook-pixel/facebook-pixel-tests.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/facebook-pixel/facebook-pixel-tests.ts b/facebook-pixel/facebook-pixel-tests.ts index 94e2b50b5..718a972c2 100644 --- a/facebook-pixel/facebook-pixel-tests.ts +++ b/facebook-pixel/facebook-pixel-tests.ts @@ -6,7 +6,6 @@ fbq('track', 'PageView'); // Standard event (can be used for conversion tracking // and optimizing in addition to audience building) var purchaseParam:facebook.Pixel.PurchaseParameters = {currency: 'EUR', value: 15.23}; -purchaseParam["Test"] = 44; // add custom parameter fbq('track', 'Purchase', purchaseParam); // Legacy conversion event (can only be used for conversion