When you need more data in less time...

Information about When you need more data in less time...

Published on August 3, 2017

Author: BlintHorvth1

Source: slideshare.net

Content

1. Bálint Horváth marketing technology expert When you need more data in less time... FRONTEND FIGHTERS August 1, 2017 [email protected]

2. Bálint Horváth marketing technology expert When you need more data in less time... FRONTEND FIGHTERS August 1, 2017 [email protected]

3. WARMING UP 

4. Business Agility: Lexically Agile Business Business agility is the "ability of a business system to rapidly respond to change by adapting its initial stable configuration". Business agility can be maintained by maintaining and adapting goods and services to meet customer demands, adjusting to the changes in a business environment and taking advantage of human resources. (Wikipedia) BLAH BLAH BLAH BLAH BLAH BLAHBLAH BLAH

5. Business Agility: Practically Agile Business  Customer-centric  Rapidly respond to change  Good team behind (satisfied employees)  Innovative  Well-planned Well-timed  Effective at Risk Management

6. Business Agility  Data-driven Business Collect data before you drive...           

7. Data-driven Business  Data-driven People It's a way of thinking...  Intuitive   Data-driven  

8. Data-driven Business  Tracking To get data, we need to track  Contact Information Interactions Context Cart B2B B2C / RETAIL Interactions Contact Information Lead Data Customer Data Product Personal Email Address Add Item Company eBook Seen Added to Wishlist Share Age Sex Device Referral IP OS Resolution LocationISP Campaign Seen Downloaded Title Lead Level Quotes  Last Login

9. TRACK how to

10. Track: Tools  Website

11. Track: The Challange What's the issue? We want to Ghostery: cnn.com - track many interactions - inspect the whole journey - inspect from different aspects - integrate quickly and smoothly

12. TOYS let’s grab some

13. Toys: Tag Managers Tag Managers Google Tag Manager  Web-only  No API  No data storage  No history

14. Toys: Segment Segment  Cross-platform  Raw Data Access  Advanced API  Historical

15. Segment: Tracking Stack Google Analytics Keen IO Mixpanel Amazon Redshift Postgres BigQuery RDS Heroku    Source Warehouse Destination

16. <script type="text/javascript"> (function(){ // Create a queue, but don't obliterate an existing one! var analytics = window.analytics = win- dow.analytics || []; // If the real analytics.js is already on the page return. if (analytics.initialize) return; // If the snippet was invoked already show an error. if (analytics.invoked) { if (window.console && console.error) { console.error('Segment snippet included twice.'); } return; } // Invoked flag, to make sure the snippet // is never invoked twice. analytics.invoked = true; // A list of the methods in Analytics.js to stub. analytics.methods = [ 'trackSubmit', 'trackClick', 'trackLink', 'trackForm', 'pageview', 'identify', 'reset', 'group', 'track', 'ready', 'alias', 'debug', 'page', 'once', 'off', 'on' ]; // Define a factory to create stubs. These are placeholders // for methods in Analytics.js so that you never have to wait // for it to load to actually record data. The `method` is // stored as the first argument, so we can replay the data. analytics.factory = function(method){ return function(){ var args = Array.prototype.slice.call(ar- guments); args.unshift(method); analytics.push(args); return analytics; }; }; // For each of our methods, generate a queueing stub. for (var i = 0; i < analytics.methods.length; i++) { var key = analytics.methods[i]; analytics[key] = analytics.factory(key); } // Define a method to load Analytics.js from our CDN, // and that will be sure to only ever load it once. analytics.load = function(key){ // Create an async script element based on your key. var script = document.createEle- ment('script'); script.type = 'text/javascript'; script.async = true; script.src = ('https:' === document.loca- tion.protocol ? 'https://' : 'http://') + 'cdn.segment.com/analytics.js/v1/' + key + '/analytics.min.js'; // Insert our script next to the first script element. var first = document.getElementsBy- TagName('script')[0]; first.parentNode.insertBefore(script, first); }; // Add a version to keep track of what's in the wild. analytics.SNIPPET_VERSION = '4.0.0'; // Load Analytics.js with your key, which will automatically // load the tools you've enabled for your account. Boosh! analytics.load("YOUR_WRITE_KEY"); // Make the first page call to load the inte- grations. If // you'd like to manually name or tag the page, edit or // move this call however you'd like. analytics.page(); })(); </script> SOURCES Segment

17. WEB Segment 

18. Segment: Web JavaScript analytics.identify('f4ca124298', { name: 'Michael Bolton', email: '[email protected]' }); analytics.js <script type="text/javascript"> !function(){var analytics=window.analytics=window.analytics||[]; ...} analytics.load("YOUR_WRITE_KEY"); analytics.page(); }}(); </script> Configure Identify analytics.identify('{{ user.id }}', { name: '{{ user.fullname }}', email: '{{ user.email }}' }); Track analytics.track('Article Completed', { title: 'How to Create a Tracking Plan', course: 'Intro to Analytics', }); analytics.page('Pricing', { title: 'Segment Pricing', url: 'https://segment.com/pricing', path: '/pricing', referrer: 'https://segment.com/warehouses' });

19. Segment: Web AMP <amp-analytics type="segment"> <script type="application/json"> { "vars": { "writeKey": "WRITE_KEY", "name": "My Page Name" } } </script> </amp-analytics> amp-analytics <script async custom-element="amp-analytics" src="https://cdn.ampproject.org/v0/amp-analytics-0.1.js"> </script> Install Track <amp-analytics type="segment"> <script type="application/json"> { "vars": { "writeKey": "WRITE_KEY" } "triggers": { "click": { "on": "click", "selector": ".read-more-button", "request": "track", "vars": { "event": "Read More Clicked" } } } } </script> </amp-analytics>

20. Segment: Web PHP Segment::identify(array( "userId" => "2sfjej334", "traits" => array( "email" => $user->email, "name" => $user->name, "friends" => 25 ) )); segmentio/analytics-php composer require segmentio/analytics-php Configure Track Segment::track(array( "userId" => "f4ca124298", "event" => "Article Bookmarked", "properties" => array( "title" => "Snow Fall", "subtitle" => "The Avalanche at Tunnel Creek", "author" => "John Branch" ) )); Identify

21. Segment: Web Laravel (3rd-Party) 'providers' => [ // ... 'CachetHQSegmentSegmentServiceProvider' ] cachethq/segment composer require cachethq/segment Configure Track Segment::track([ "userId" => "uuid12345", "event" => "Signed up", "properties" => [ "newsletter" => true ] ]); 'aliases' => [ // ... 'Segment' => 'CachetHQSegmentFacadesSegment' ] php artisan vendor:publish Segment::identify([ "userId" => "12345abcde", "traits" => [ "name" => "James Brooks", "email" => "[email protected]", ] ]); Identify

22. Segment: Web Node.js analytics.identify({ userId: '019mr8mf4r', traits: { name: 'Michael Bolton', email: '[email protected]', plan: 'Enterprise', friends: 42 } }); analytics-node npm install --save analytics-node Configure Identify Track analytics.track({ userId: '019mr8mf4r', event: 'Item Purchased', properties: { revenue: 39.95, shippingMethod: '2-day' } }); var Analytics = require('analytics-node'); var analytics = new Analytics('YOUR_WRITE_KEY');

23. Segment: Web HTTP (IN GENERAL) { "userId": "019mr8mf4r", "traits": { "email": "[email protected]", "name": "Peter Gibbons", "industry": "Technology" }, "context": { "ip": "24.5.68.47" }, "timestamp": "2012-12-02T00:30:08.276Z" } HTTP POST https://api.segment.io/v1/identify Identify POST https://api.segment.io/v1/track { "userId": "019mr8mf4r", "event": "Item Purchased", "properties": { "name": "Leap to Conclusions Mat", "revenue": 14.99 }, "context": { "ip": "24.5.68.47" }, "timestamp": "2012-12-02T00:30:12.984Z" } Track

24. MOBILE Segment      

25. Segment: Mobile Android com.segment.analytics.android:analytics dependencies { compile 'com.segment.analytics.android:analytics:4.+' } Configure Identify // Initially when you only know the user's name Analytics.with(context).identify(new Traits().putName("Michael Bolton")); // Sometime later in your app when the user gives you their email Analytics.with(context).identify(new Traits().putEmail("[email protected]")); // Create an analytics client with the given context and Segment write key. Analytics analytics = new Analytics.Builder(context, YOUR_WRITE_KEY) .trackApplicationLifecycleEvents() // Enable this to record certain application events automatically! .recordScreenViews() // Enable this to record screen views automatically! .build(); // Set the initialized instance as a globally accessible instance. Analytics.setSingletonInstance(analytics); Initialize Analytics.with(context) .track("Purchased Item", new Properties().putValue("sku", "13d31").putRevenue(199.99) ); Track

26. Segment: Mobile Android Wear com.segment.analytics.android:wear compile('com.segment.analytics.android:wear:[email protected]') { transitive = true } Configure Track analytics.track("Viewed Product", new Properties() .putValue("name", "Moto 360")); analytics.track("Purchased Item", new Properties() .putValue("sku", "13d31") .putRevenue(199.99));WearAnaytics analytics = WearAnalytics.with(context); Initialize <application ...> <service android:name="com.segment.analytics.PhoneAnalyticsListenerService"> <intent-filter> <action android:name="com.google.android.gms.wearable.BIND_LISTENER" /> </intent-filter> </service> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> </application> AndroidManifest.xml PhoneAnalyticsListenerService

27. Segment: Mobile iOS (OBJECTIVE-C) SEGAnalytics pod 'Analytics', '~> 3.0' Install(via CocoaPods) Identify [[SEGAnalytics sharedAnalytics] identify:@"a user's id" traits:@{ @"email": @"a user's email address" }]; SEGAnalyticsConfiguration *configuration = [SEGAnalyticsConfiguration con- figurationWithWriteKey:@"YOUR_WRITE_KEY"]; configuration.trackApplicationLifecycleEvents = YES; // Enable this to record certain application events automatically! configuration.recordScreenViews = YES; // Enable this to record screen views automatically! [SEGAnalytics setupWithConfiguration:configuration]; Delegate [[SEGAnalytics sharedAnalytics] track:@"Item Purchased" properties:@{ @"item": @"Sword of Heracles", @"revenue": @2.95 }]; Track - application:didFinishLaunchingWithOptions: Import #import <Analytics/SEGAnalytics.h> Carthage: github "segmentio/analytics-ios"

28. Segment: Mobile iOS (SWIFT) AnalyticsSwift use_frameworks! pod 'AnalyticsSwift', '~> 0.2.0' Install(via Cocoapods) Configure var message = TrackMessageBuilder(event: "Button A").userId("prateek") analytics.enqueue(message) analytics.flush() Track AnalyticsSwift library to project, then: import AnalyticsSwift var analytics = Analytics.create(YOUR_SEGMENT_WRITE_KEY_HERE) @IBAction func homeScreenClicked(sender: NSButton) { analytics.enqueue(ScreenMessageBuilder(name: "Home").userId("prateek")) } Not recommended, use SEGAnalytics instead... (with Objective-C bridging header)

29. Segment: Mobile Xamarin Analytics.Xamarin git clone https://github.com/segmentio/Analytics.Xamarin.git Configure Identify Analytics.Client.Identify("019mr8mf4r", new Traits() { { "name", "Tom Smykowski" }, { "email", "[email protected]" }, { "friends", 29 } });using Segment; // initialize with your Segment source write key ... Analytics.Initialize("YOUR_WRITE_KEY"); Initialize Analytics.Client.Track("019mr8mf4r", "Item Purchased", new Properties() { { "revenue", 39.95 }, { "shipping", "2-day" } }); Track

30. WHATEVER Segment 

31. Segment: Whatever Go client.Identify(&analytics.Identify{ UserId: "019mr8mf4r", Traits: map[string]interface{}{ "name": "Michael Bolton", "email": "[email protected]", "plan": "Enterprise", "friends": 42, }, }) segmentio/analytics-go go get github.com/segmentio/analytics-go Configure Identify Track client.Track(&analytics.Track{ Event: "Signed Up", UserId: "f4ca124298", Properties: map[string]interface{}{ "plan": "Enterprise", }, }) var Analytics = require('analytics-node'); var analytics = new Analytics('YOUR_WRITE_KEY'); package main import "github.com/segmentio/analytics-go" func main() { client := analytics.New("YOUR_WRITE_KEY") }

32. Segment: Whatever Ruby Analytics.identify( user_id: '019mr8mf4r', traits: { email: "#{ user.email }", friends: 872 }, context: {ip: '8.8.8.8'}) analytics-ruby gem install analytics-ruby Configure Identify Track Analytics.track( user_id: '019mr8mf4r', event: 'Item Purchased', properties: { revenue: 39.95, shipping: '2-day' }) require 'segment/analytics' Analytics = Segment::Analytics.new({ write_key: 'YOUR_WRITE_KEY', on_error: Proc.new { |status, msg| print msg } })

33. Segment: Whatever Python analytics.identify('019mr8mf4r', { 'email': '[email protected]', 'name': 'John Smith', 'friends': 30 }) analytics-ruby pip install analytics-python Configure Identify Track analytics.track('f4ca124298', 'Signed Up', { 'plan': 'Enterprise' }) import analytics analytics.write_key = 'YOUR_WRITE_KEY'

34. DEMO show tha f#&@ software 

35. DATA STRUCTURE Segment

36. Segment Identify { "anonymousId": "507f191e810c19729de860ea", "channel": "browser", "context": { "ip": "8.8.8.8", "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) Ap- pleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safa- ri/537.36" }, "integrations": { "All": false, "Mixpanel": true, "Salesforce": true }, "messageId": "022bb90c-bbac-11e4-8dfc-aa07a5b093db", "receivedAt": "2015-02-23T22:28:55.387Z", "sentAt": "2015-02-23T22:28:55.111Z", "timestamp": "2015-02-23T22:28:55.111Z", "traits": { "name": "Peter Gibbons", "email": "[email protected]", "plan": "premium", "logins": 5, "address": { "street": "6th St", "city": "San Francisco", "state": "CA", "postalCode": "94103", "country": "USA" } }, "type": "identify", "userId": "97980cfea0067", "version": "1.1" } { "type": "identify", "traits": { "name": "Peter Gibbons", "email": "[email protected]", "plan": "premium", "logins": 5 }, "userId": "97980cfea0067" }

37. Segment Ecommerce: Coupon analytics.track('Coupon Entered', { order_id: '50314b8e9bcf000000000000', cart_id: '923923929jd29jd92dj9j93fj3' coupon_id: 'may_deals_2016' }); analytics.track('Coupon Applied', { order_id: '50314b8e9bcf000000000000', cart_id: '923923929jd29jd92dj9j93fj3' coupon_id: 'may_deals_2016', coupon_name: 'May Deals 2016', discount: 23.32 });

38. Segment Track { "type": "track", "event": "Registered", "properties": { "plan": "Pro Annual", "accountType" : "Facebook" } }

39. Segment Page { "type": "page", "name": "Home", "properties": { "title": "Welcome | Initech", "url": "http://www.initech.com" } }

40. Segment Ecommerce: Product List View analytics.track('Product List Viewed', { list_id: 'hot_deals_1', category: 'Deals', products: [ { product_id: '507f1f77bcf86cd799439011', sku: '45790-32', name: 'Monopoly: 3rd Edition', price: 19, position: 1, category: 'Games' }, { product_id: '505bd76785ebb509fc183733',

41. Segment Ecommerce: Wishlist analytics.track('Product Added to Wishlist', { wishlist_id: 'skdjsidjsdkdj29j', wishlist_name: 'Loved Games', product_id: '507f1f77bcf86cd799439011', sku: 'G-32', category: 'Games', name: 'Monopoly: 3rd Edition', brand: 'Hasbro', variant: '200 pieces', price: 18.99, quantity: 1, coupon: 'MAYDEALS', position: 3 });

42. Segment Ecommerce: Product Share analytics.track('Product Shared', { share_via: 'email', share_message: 'Hey, check out this item', recipient: '[email protected]', product_id: '507f1f77bcf86cd799439011', sku: 'G-32', category: 'Games', name: 'Monopoly: 3rd Edition', brand: 'Hasbro', variant: '200 pieces', price: 18.99, });

43. Segment Ecommerce: Checkout Steps analytics.track('Checkout Step Viewed', { checkout_id: '50314b8e9bcf000000000000', step: 2, shipping_method: 'Fedex', payment_method: 'Visa' });

44. Segment Ecommerce: Reviews analytics.track('Product Reviewed', { product_id: '507f1f77bcf86cd799439011', review_id: 'kdfjrj39fj39jf3', review_body: 'I love this product', rating: '5' });

45. Segment Mobile: App Activities analytics.track("Application Installed", new Properties() .putValue("version", "1.2.3") .putValue("build", 1234)); analytics.track("Push Notification Bounced", new Properties() .putValue("action", "Accept") .putValue("campaign", new Properties() .putValue("medium", "Push") .putValue("source", "Vendor Name") .putValue("name", "Referral Flow") .putValue("content", "Your friend invited you to play a match.")));

46. Segment Video: Playback Events analytics.track('Video Content Started', { session_id: '12345', asset_id: '0129370', pod_id: 'segA', title: 'Interview with Tony Robbins', description: 'short description', keywords: ['entrepreneurship', 'motivation'], season: '2', episode: '177', genre: 'entrepreneurship', program: 'Tim Ferris Show', publisher: 'Tim Ferris', position: 0, total_length: 360,

47. DEMO Do you want more? 

48. MONOLOGUE Segment? Why? 

49. DO NOT FORGET TO ANALYZE One more thing... 

50. Answers! Questions? 

51. Bálint Horváth Thank you, Frontend Fighters! August 1, 2017 [email protected] marketing technology expert

#import presentations

Introduction to ml
18. 06. 2020
0 views

Introduction to ml

Python OpenCV Real Time projects
31. 05. 2020
0 views

Python OpenCV Real Time projects

Related presentations