[{"data":1,"prerenderedAt":420},["ShallowReactive",2],{"project-4912076":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":46,"post_text":48,"what":49,"said":67,"maker_in_thread":179,"shape":189,"grid":193,"attempts":384,"same_week":385,"maker_shows":47,"maker_hidden":412,"reader_version":413,"card":414},"4912076","Analytics.js","The analytics API you've always wanted","title","Show HN: Analytics.js – The analytics API you've always wanted","http:\u002F\u002Fsegmentio.github.com\u002Fanalytics.js\u002F","segmentio.github.com","ianstormtaylor",1355342124,2012,326,67,31,1677,2,"legend","languages","analytics library","library",[24,25,26,27,28],"analytics","javascript","google analytics","mixpanel","tag management","mixed",-0.164,{"positive":32,"neutral":33,"mixed":34,"critical":35},4,14,3,11,32,{"idea":38,"performance":40,"privacy":43,"execution":44,"docs":45},{"positive":34,"critical":39},7,{"positive":41,"critical":42},0,1,{"positive":41,"critical":42},{"positive":41,"critical":41},{"positive":41,"critical":41},[42,42,41,41,41,41,42,34,47,42,34,34,34,34,42,41,42,41,34,47,42,34,41,41,42,41,41,34,41,41,41,41,42,34,34,34,34,47,34,34],5,null,{"problem":50,"audience":48,"pricing":48,"motivation":48,"time_to_build":48,"stack":57,"openness":66,"stage":66,"team_size":66},{"value":51,"source":52,"evidence":53},"Sending analytics events to multiple providers through one API","maker",[54],{"id":55,"by":11,"text":56},"4912159","The Google Analytics provider doesn't send properties for events. The only thing the GA API providers that's even close is a \"Label\" which is just a string. The idea is to get as…",[58],{"value":59,"source":60,"evidence":61},"JavaScript","commenter",[62],{"id":63,"by":64,"text":65},"4914861","alexatkeplar","It's going to be really hard to make a generic, non-lossy mapping in a static, stateless JS script. Have you looked at Google's dataLayer as an alternative yet? The setup guide…","unknown",{"praise":68,"objections":84,"requests":104,"questions":127,"alternatives":143},[69],{"value":70,"source":60,"evidence":71},"Useful library that helps analytics services work together",[72,76,80],{"id":73,"by":74,"text":75},"4912163","vtuulos","Great library! I know that a number of companies have created a wrapper of their own exactly for this purpose. We could contribute integration to https:\u002F\u002Fbitdeli.com for those…",{"id":77,"by":78,"text":79},"4912268","sudonim","Happy to be supporting this project at http:\u002F\u002Fcustomer.io . A lot of folks who use other tools want it to be easier to send the same information to everyone. Thanks guys for…",{"id":81,"by":82,"text":83},"4912216","spaetzel","Awesome, I was thinking of writing something like this, but you took the idea and made it much more powerful than i was planning.",[85,93],{"value":86,"source":60,"evidence":87},"Mapping a generic event API onto providers like Google Analytics is lossy",[88,92],{"id":89,"by":90,"text":91},"4912581","alexdean","This is a cool idea for a project! The closest equivalent I'm aware of is Qubit OpenTag (https:\u002F\u002Fgithub.com\u002FQubitProducts\u002FOpenTag). I'm interested in adding SnowPlow support to…",{"id":63,"by":64,"text":65},{"value":94,"source":60,"evidence":95},"Script loads provider code even when unused and blocks onload",[96,100],{"id":97,"by":98,"text":99},"4912501","bluesmoon","How does this script impact the performance of a site? Specifically... 1. It includes code to load up various analytics tools even if you never use them. For example, if I only…",{"id":101,"by":102,"text":103},"4912541","Hovertruck","> It includes code to load up various analytics tools even if you never use them. For example, if I only use GA and Mixpanel, do I really want to serve the bytes for all the…",[105,113,120],{"value":106,"source":60,"evidence":107},"Build step that includes only the providers a site uses",[108,112],{"id":109,"by":110,"text":111},"4915189","rossta","Thanks for sharing. A useful improvement could be a build step that supplies only the metrics snippets that I want so I don't need to deliver to clients provider code I'll never…",{"id":97,"by":98,"text":99},{"value":114,"source":60,"evidence":115},"Support for Omniture",[116],{"id":117,"by":118,"text":119},"4912518","donohoe","If this covered Omniture I'd be over the moon...",{"value":121,"source":60,"evidence":122},"Screenshots showing how examples appear in each analytics app",[123],{"id":124,"by":125,"text":126},"4912215","bluetidepro","This looks awesome! One thing would be nice on the demo\u002Flanding site is to maybe add screenshots of how your examples translate in Google Analytics or the others. Like karolisd…",[128,136],{"value":129,"source":60,"evidence":130},"How event properties translate to Google Analytics",[131,135],{"id":132,"by":133,"text":134},"4912129","karolisd","For event tracking, how does analytics.track('Purchased an Item', { price : 39.95, shippingMethod : '2-day' }); translate to Google Analytics? _gaq.push(['...? How many…",{"id":55,"by":11,"text":56},{"value":137,"source":60,"evidence":138},"How to call methods before the script finishes loading",[139,140],{"id":97,"by":98,"text":99},{"id":141,"by":11,"text":142},"4912578","For the last question, all of the providers are initialized just like they would be normally, so GA's queue is setup already and it will just be routed the track calls.",[144,148,155,161,172],{"value":145,"source":60,"evidence":146},"Qubit OpenTag",[147],{"id":89,"by":90,"text":91},{"value":149,"source":60,"evidence":150},"Piwik",[151],{"id":152,"by":153,"text":154},"4912456","smacktoward","You're looking for Piwik (http:\u002F\u002Fpiwik.org\u002F), which is awesome.",{"value":156,"source":60,"evidence":157},"Snowplow",[158],{"id":159,"by":64,"text":160},"4912653","We're more of an opensource complement to GA (rather than alternative), but for completeness: https:\u002F\u002Fgithub.com\u002Fsnowplow\u002Fsnowplow",{"value":162,"source":60,"evidence":163},"Google Tag Manager",[164,168],{"id":165,"by":166,"text":167},"4914370","novaleaf","Three words: Google Tag Manager.",{"id":169,"by":170,"text":171},"4912371","Nagyman","There's also Google Tag Manager. It's not itself an analytics script, but it provides a clean way to separate tags from code (one tag to rule them all). In addition, it's…",{"value":173,"source":60,"evidence":174},"Open Web Analytics",[175],{"id":176,"by":177,"text":178},"4912393","noinput","there is always: http:\u002F\u002Fwww.openwebanalytics.com\u002F",{"comments":180,"answered":34,"key":181},6,[182,185,188],{"id":183,"text":184},"4914821","Really good points. I think there is definitely a way for the Mixpanel-esque API to map cleanly via a decided on spec to the GA-style API with 'category' and 'label'. We are…",{"id":186,"text":187},"4912580","Looking forward to it! Sorry to mess with your onload",{"id":141,"text":142},{"commenters":190,"max_depth":47,"maker_replies":180,"first_comment_mins":191,"lifespan_hours":192},55,10,79,[194,196,198,199,203,206,210,213,216,219,222,224,226,228,230,232,236,239,243,245,246,249,251,254,257,258,262,263,267,271,273,276,278,282,284,287,290,293,295,296,299,303,306,309,312,315,318,321,324,327,330,333,336,339,341,344,347,350,353,357,362,363,365,369,371,376,380],[89,41,42,195,90,41],"project\u002Fcritical\u002Fidea",[183,41,41,197,11,42],"maker\u002Fneutral\u002Fidea",[63,41,42,195,64,41],[200,42,41,201,202,41],"4912293","other\u002Fneutral\u002Fprivacy","hayksaakian",[204,42,41,205,133,41],"4912331","commenter\u002Fneutral\u002Fprivacy",[207,42,41,208,209,41],"4912339","commenter\u002Fpositive\u002Fprivacy","jbail",[211,42,41,205,212,41],"4912347","lazerwalker",[214,42,41,201,215,41],"4912565","dchuk",[217,42,41,205,218,41],"4914104","tomasien",[220,42,41,201,221,41],"4913445","jimmytucson",[97,18,42,223,98,41],"project\u002Fcritical\u002Fperformance",[101,18,34,225,102,41],"project\u002Fmixed\u002Fperformance",[186,18,41,227,11,42],"maker\u002Fpositive\u002Fperformance",[141,18,41,229,11,42],"maker\u002Fneutral\u002Fexecution",[77,34,47,231,78,41],"project\u002Fpositive\u002Fidea",[233,32,42,234,235,41],"4912543","project\u002Fcritical\u002Fprivacy","mediascreen",[237,32,41,238,11,42],"4912711","maker\u002Fneutral\u002Fprivacy",[240,47,34,241,242,41],"4912723","project\u002Fneutral\u002Fnone","stdbrouw",[132,180,34,244,133,41],"project\u002Fneutral\u002Fexecution",[55,180,41,229,11,42],[247,180,34,244,248,41],"4912373","troels",[250,180,41,197,11,42],"4912433",[252,180,34,244,253,41],"4927135","rattray",[255,39,42,195,256,41],"4912378","tarr11",[176,39,42,195,177,41],[259,39,41,260,261,41],"4912559","commenter\u002Fneutral\u002Fnone","mikegirouard",[152,39,42,195,153,41],[264,39,41,265,266,41],"4913361","other\u002Fcritical\u002Fdesign","arcatek",[268,39,41,269,270,41],"4914501","other\u002Fneutral\u002Fdesign","neumann_alfred",[159,39,41,272,64,41],"other\u002Fneutral\u002Fidea",[124,274,34,275,125,41],8,"project\u002Fneutral\u002Fdocs",[73,277,47,231,74,41],9,[279,277,34,280,281,41],"4912222","maker\u002Fneutral\u002Fnone","pkrein",[109,191,34,283,110,41],"project\u002Fneutral\u002Fperformance",[285,35,42,195,286,41],"4912291","dudus",[288,35,34,289,133,41],"4912312","project\u002Fneutral\u002Fidea",[291,35,41,292,286,41],"4912325","other\u002Fneutral\u002Fnone",[294,35,41,292,286,41],"4912343",[169,35,41,272,170,41],[297,35,41,292,298,41],"4912492","adamsfallen",[300,35,42,301,302,41],"4912524","project\u002Fcritical\u002Fnone","ry0ohki",[304,35,41,292,305,41],"4912661","rhizome",[307,35,41,292,308,41],"4912754","javajosh",[310,35,41,292,311,41],"4912945","joevandyk",[313,35,41,292,314,41],"4913594","pud",[316,35,34,275,317,41],"4914048","sgerrand",[319,35,41,292,320,41],"4914818","munger",[322,35,41,292,323,41],"4914062","frozenport",[325,35,41,292,326,41],"4915832","loceng",[328,35,41,292,329,41],"4921732","gopi",[331,35,41,292,332,41],"4912800","dylanvee",[334,35,41,260,335,41],"4913545","riffraff",[337,35,41,260,338,41],"4914078","tach",[340,35,41,260,335,41],"4915126",[342,35,42,301,343,41],"4912986","randartie",[345,35,34,241,346,41],"4914826","saurik",[348,35,41,292,349,41],"4917898","Strshps1MoreTim",[351,35,34,241,352,41],"4918838","tripzilch",[354,355,34,289,356,41],"4912353",12,"mguterl",[358,359,34,360,361,41],"4915632",13,"project\u002Fmixed\u002Fidea","madoublet",[117,33,34,241,118,41],[81,364,47,231,82,41],15,[366,367,34,368,102,41],"4912341",16,"project\u002Fmixed\u002Fexecution",[165,370,42,195,166,41],17,[372,373,47,374,375,41],"4912267",18,"project\u002Fpositive\u002Fnone","davidradcliffe",[377,378,34,241,379,41],"4912703",19,"karthik_ram",[381,382,41,292,383,41],"4912874",20,"benhamner",[],[386,390,394,398,402,407],{"id":387,"name":388,"points":389,"category":20},"4902219","strucjure",204,{"id":391,"name":392,"points":393,"category":20},"4903716","box2d-jquery",167,{"id":395,"name":396,"points":397,"category":20},"4906098","numbers.js",123,{"id":399,"name":400,"points":401,"category":20},"4885689","UXArchive",116,{"id":403,"name":404,"points":405,"category":406},"4909784","Designing Web Applications",105,"learning_science",{"id":408,"name":409,"points":410,"category":411},"4910899","Crowdtilt API",90,"web_saas",false,"v2",{"id":415,"name":5,"line":6,"ai":412,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":416,"top":18,"kw":417,"maker":11,"domain":10,"tier":19,"attempts":41,"strip":418,"url":9,"mix":419,"praise":70,"objection":86,"sub":21},4912076,-0.16,[24,25,26,27,28],"1100001351333310103513001003000013333533",[32,33,34,35],1794036502400]