[{"data":1,"prerenderedAt":298},["ShallowReactive",2],{"docs-navigation-en":3,"docs-\u002Fen\u002Fdocs\u002Fdevelopers":70,"docs-surround-\u002Fen\u002Fdocs\u002Fdevelopers":293},[4],{"title":5,"path":6,"stem":7,"children":8,"page":69},"En","\u002Fen","en",[9],{"title":10,"path":11,"stem":12,"children":13,"page":69},"Docs","\u002Fen\u002Fdocs","en\u002Fdocs",[14,22,45],{"title":15,"path":16,"stem":17,"children":18,"icon":21},"Getting started","\u002Fen\u002Fdocs\u002Fgetting-started","en\u002Fdocs\u002F1.getting-started\u002F1.index",[19],{"title":20,"path":16,"stem":17},"What Flowfy is","i-lucide-rocket",{"title":23,"path":24,"stem":25,"children":26,"icon":44},"Destinations","\u002Fen\u002Fdocs\u002Fdestinations","en\u002Fdocs\u002F2.destinations\u002F1.index",[27,28,32,36,40],{"title":23,"path":24,"stem":25},{"title":29,"path":30,"stem":31},"Meta","\u002Fen\u002Fdocs\u002Fdestinations\u002Fmeta","en\u002Fdocs\u002F2.destinations\u002F2.meta",{"title":33,"path":34,"stem":35},"TikTok","\u002Fen\u002Fdocs\u002Fdestinations\u002Ftiktok","en\u002Fdocs\u002F2.destinations\u002F3.tiktok",{"title":37,"path":38,"stem":39},"Snapchat","\u002Fen\u002Fdocs\u002Fdestinations\u002Fsnapchat","en\u002Fdocs\u002F2.destinations\u002F4.snapchat",{"title":41,"path":42,"stem":43},"ChatGPT Ads","\u002Fen\u002Fdocs\u002Fdestinations\u002Fopenai","en\u002Fdocs\u002F2.destinations\u002F5.openai","i-lucide-share-2",{"title":46,"path":47,"stem":48,"children":49,"icon":68},"For developers","\u002Fen\u002Fdocs\u002Fdevelopers","en\u002Fdocs\u002F9.developers\u002F1.index",[50,52,56,60,64],{"title":51,"path":47,"stem":48},"Developer overview",{"title":53,"path":54,"stem":55},"Install the SDK","\u002Fen\u002Fdocs\u002Fdevelopers\u002Finstall","en\u002Fdocs\u002F9.developers\u002F2.install",{"title":57,"path":58,"stem":59},"Tracking","\u002Fen\u002Fdocs\u002Fdevelopers\u002Ftracking","en\u002Fdocs\u002F9.developers\u002F3.tracking",{"title":61,"path":62,"stem":63},"Event reference","\u002Fen\u002Fdocs\u002Fdevelopers\u002Fevents","en\u002Fdocs\u002F9.developers\u002F4.events",{"title":65,"path":66,"stem":67},"HTTP API","\u002Fen\u002Fdocs\u002Fdevelopers\u002Fhttp-api","en\u002Fdocs\u002F9.developers\u002F5.http-api","i-lucide-code",false,{"id":71,"title":51,"audience":72,"body":73,"description":287,"extension":288,"meta":289,"navigation":290,"path":47,"seo":291,"stem":48,"__hash__":292},"docs_en\u002Fen\u002Fdocs\u002F9.developers\u002F1.index.md","developer",{"type":74,"value":75,"toc":279},"minimark",[76,80,83,88,156,159,163,170,176,191,195,205,216,220,241,245],[77,78,79],"p",{},"Flowfy receives events from your store, works out where each order came from, and forwards those events on to your advertising platforms. This section covers how to send them yourself.",[77,81,82],{},"If your store is on Salla you do not need any of this — the Flowfy app installs the tracking script for you. These pages are for custom storefronts, headless setups, and server-side tracking.",[84,85,87],"h2",{"id":86},"two-ways-in","Two ways in",[89,90,91,105],"table",{},[92,93,94],"thead",{},[95,96,97,100,103],"tr",{},[98,99],"th",{},[98,101,102],{},"JavaScript SDK",[98,104,65],{},[106,107,108,120,131,142],"tbody",{},[95,109,110,114,117],{},[111,112,113],"td",{},"Runs in",[111,115,116],{},"The shopper's browser",[111,118,119],{},"Anywhere that can make a request",[95,121,122,125,128],{},[111,123,124],{},"Best for",[111,126,127],{},"Storefront tracking",[111,129,130],{},"Orders, refunds, back-office systems",[95,132,133,136,139],{},[111,134,135],{},"Collects page, referrer and campaign for you",[111,137,138],{},"Yes",[111,140,141],{},"No — you send them",[95,143,144,147,152],{},[111,145,146],{},"Start at",[111,148,149],{},[150,151,53],"a",{"href":54},[111,153,154],{},[150,155,65],{"href":66},[77,157,158],{},"Most stores use both: the SDK for what the shopper does, and the API for what happens after the order leaves the browser.",[84,160,162],{"id":161},"three-things-to-know-first","Three things to know first",[77,164,165,169],{},[166,167,168],"strong",{},"A source is your store."," Every event belongs to one source, and you create it in Flowfy before sending anything.",[77,171,172,175],{},[166,173,174],{},"A write key identifies that source."," It is the only credential involved, it lives on the source's page in Flowfy, and it goes in every request. It is not a secret in the browser — it names your store, it does not grant access to your data — but keep your server-side copy out of public repositories anyway.",[77,177,178,181,182,186,187,190],{},[166,179,180],{},"An event is one thing that happened."," It has a name and a set of properties. The names are fixed: Flowfy matches ",[183,184,185],"code",{},"Order Completed"," to a purchase on Meta, TikTok and Snapchat, so use the names from the ",[150,188,189],{"href":62},"event reference"," rather than inventing your own.",[84,192,194],{"id":193},"where-events-go","Where events go",[196,197,203],"pre",{"className":198,"code":200,"language":201,"meta":202},[199],"language-text","your store  →  edge.flofy.co  →  Flowfy  →  Meta \u002F TikTok \u002F Snapchat\n","text","",[183,204,200],{"__ignoreMap":202},[77,206,207,208,211,212,215],{},"Events are accepted at ",[183,209,210],{},"https:\u002F\u002Fedge.flofy.co"," and answered immediately, before any processing. A success response means the event was received, not that it was understood — open ",[166,213,214],{},"Live events"," on the source's page in Flowfy to see what actually landed.",[84,217,219],{"id":218},"property-names-use-snake_case","Property names use snake_case",[77,221,222,223,226,227,226,230,233,234,236,237,240],{},"Every property in these docs is lower-case with underscores: ",[183,224,225],{},"order_id",", ",[183,228,229],{},"product_id",[183,231,232],{},"payment_method",". Flowfy reads ",[183,235,225],{},"; it does not read ",[183,238,239],{},"orderId",", and an order sent that way arrives with no order attached to it.",[84,242,244],{"id":243},"next","Next",[246,247,248,254,269,274],"ul",{},[249,250,251,253],"li",{},[150,252,53],{"href":54}," — the script tag and the load call",[249,255,256,258,259,226,262,226,265,268],{},[150,257,57],{"href":58}," — ",[183,260,261],{},"track",[183,263,264],{},"identify",[183,266,267],{},"page"," and the rest",[249,270,271,273],{},[150,272,61],{"href":62}," — all 30 events and their properties",[249,275,276,278],{},[150,277,65],{"href":66}," — sending events from a server",{"title":202,"searchDepth":280,"depth":280,"links":281},2,[282,283,284,285,286],{"id":86,"depth":280,"text":87},{"id":161,"depth":280,"text":162},{"id":193,"depth":280,"text":194},{"id":218,"depth":280,"text":219},{"id":243,"depth":280,"text":244},"Send your store's events to Flowfy from the browser or from your server.","md",{},true,{"title":51,"description":287},"xJVdkL4cEobMtDMPLKirWp7ISdx8Nef1jOMlOzOlyH4",[294,296],{"title":41,"path":42,"stem":43,"description":295,"children":-1},"Send your store's events to ChatGPT Ads through the OpenAI Conversions API.",{"title":53,"path":54,"stem":55,"description":297,"children":-1},"Add the Flowfy tracking script to a custom storefront and point it at your source.",1789651420293]