From 3b2eb4d8fb435bea1f0a172e1923db0ad2fc5ac9 Mon Sep 17 00:00:00 2001 From: Noctis Hsu Date: Fri, 1 Apr 2016 13:01:08 +0800 Subject: [PATCH] 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[]; + } +}