UNPKG

next-facebook-tracking

Version:

A simple package to help you integrate Facebook Pixel and Conversions API with Next.js

2 lines (1 loc) 2.69 kB
"use strict";var p=Object.defineProperty;var L=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var V=Object.prototype.hasOwnProperty;var X=(s,n)=>{for(var c in n)p(s,c,{get:n[c],enumerable:!0})},z=(s,n,c,d)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of U(n))!V.call(s,o)&&o!==c&&p(s,o,{get:()=>n[o],enumerable:!(d=L(n,o))||d.enumerable});return s};var j=s=>z(p({},"__esModule",{value:!0}),s);var H={};X(H,{FacebookTracking:()=>G});module.exports=j(H);var g=require("neverthrow"),i=require("facebook-nodejs-business-sdk"),b=require("./utils");class G{config;constructor(n={}){const{pixelId:c=process.env.NEXT_PUBLIC_FACEBOOK_PIXEL,accessToken:d=process.env.FACEBOOK_CONVERSIONS_API_TOKEN,testCode:o=process.env.FACEBOOK_TEST_EVENT_CODE,debug:a}=n;this.config={pixelId:c,accessToken:d,testCode:o,debug:a}}async track({event_id:n,event_name:c,custom_data:d,event_time:o,event_source_url:a,user_data:e,opt_out:l,action_source:u,data_processing_options:_,data_processing_options_country:m,data_processing_options_state:k,advanced_measurement_table:y,advertiser_tracking_enabled:v},{clean:E}={}){if(!this.config.accessToken||!this.config.pixelId)return this.config.debug&&console.error("[next-facebook-tracking] Missing access token or pixel ID"),(0,g.errAsync)("Missing access token or pixel ID");const{value:T,currency:C,content_name:h,content_category:x,content_ids:w,contents:D,content_type:F,order_id:I,predicted_ltv:O,num_items:q,search_string:A,status:N,item_number:B,delivery_category:K,...M}=d||{},P=new i.CustomData(T,C,h,x,w,D?.map(t=>new i.Content(t.id,t.quantity,t.item_price,t.title,t.description,t.brand,t.category,t.delivery_category)),F,I,O,q,A,N,B,K,M),r=E?void 0:await(0,b.getRequestData)(),R=new i.UserData(e?.email,e?.phone,e?.gender,e?.first_name,e?.last_name,e?.date_of_birth,e?.city??r?.user_data.city,e?.state??r?.user_data.state,e?.zip,e?.country??r?.user_data.country,e?.external_id,e?.client_ip_address??r?.user_data.client_ip_address,e?.client_user_agent??r?.user_data.client_user_agent,e?.fbp??r?.user_data.fbp,e?.fbc??r?.user_data.fbc,e?.subscription_id,e?.fb_login_id,e?.lead_id,e?.dobd,e?.dobm,e?.doby,e?.madid,e?.anon_id,e?.app_user_id),S=new i.ServerEvent(c,o??Math.floor(new Date().getTime()/1e3),a??r?.event_source_url,R,P,void 0,n,l,u??"website",_,m,k,y,v),f=new i.EventRequest(this.config.accessToken,this.config.pixelId).setEvents([S]);return this.config.testCode&&f.setTestEventCode(this.config.testCode),f.setDebugMode(this.config.debug??!1),g.ResultAsync.fromPromise(f.execute(),t=>(this.config.debug&&console.error("[next-facebook-tracking] Error tracking event",t.response),t))}}0&&(module.exports={FacebookTracking});