{"id":17428,"date":"2026-04-14T17:41:32","date_gmt":"2026-04-14T17:41:32","guid":{"rendered":"https:\/\/tenjin.com\/?post_type=docs&#038;p=17428"},"modified":"2026-06-15T10:28:28","modified_gmt":"2026-06-15T10:28:28","password":"","slug":"implementing-s2s-tracking-a-no-sdk-guide","status":"publish","type":"docs","link":"https:\/\/tenjin.com\/tr\/docs\/implementing-s2s-tracking-a-no-sdk-guide\/","title":{"rendered":"Implementing S2S Tracking: A No-SDK Guide"},"content":{"rendered":"<p class=\"wp-block-paragraph translation-block\">This guide explains how to implement Tenjin <strong>without using an SDK<\/strong>. This method works by sending server-to-server (S2S) events to Tenjin, so that&nbsp;Tenjin can attribute , and retrieve&nbsp;results&nbsp;by using DataVault, LiveOps Campaigns, or S2S Callbacks.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>&nbsp;Pre-requisites<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"translation-block\">You must have their <strong>own backend server setup<\/strong> to collect device identifiers and event data from their apps.<br><\/li>\n\n\n\n<li>The server must be able to make HTTPS requests to Tenjin\u2019s event ingestion endpoints.<br><\/li>\n\n\n\n<li class=\"translation-block\">You should generate and persist their own <strong>UUID (32-character string)<\/strong> to be used as the analytics_installation_id (AIID).<br><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>1. Start Sending Events to Tenjin<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Install and Custom Events<\/strong>\n<ul class=\"wp-block-list\">\n<li><code data-no-translation=\"\" data-no-auto-translation=\"\">https:\/\/track.tenjin.com\/v0\/event<\/code><\/li>\n\n\n\n<li class=\"translation-block\">The required parameters to be sent are marked in (*) in this guide <a href=\"https:\/\/tenjin.com\/tr\/docs\/server-to-server-s2s-setup\/#event-api\" target=\"_blank\">here<\/a>.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Purchase<\/strong>\n<ul class=\"wp-block-list\">\n<li><code data-no-translation=\"\" data-no-auto-translation=\"\">https:\/\/track.tenjin.com\/v0\/purchase<\/code><\/li>\n\n\n\n<li class=\"translation-block\">The required parameters to be sent are marked in&nbsp;(*) in this guide <a href=\"https:\/\/tenjin.com\/tr\/docs\/server-to-server-s2s-setup\/#purchase-api\" target=\"_blank\">here<\/a>.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><br>\u26a0\ufe0f <strong>Important:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use the same analytics_installation_id (UUID) for all subsequent events from the same user (installs, custom events, purchases, etc.).<br><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>2. Attribution in Tenjin via S2S<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tenjin performs attribution on incoming S2S events using two main methods. This method is similar to how it works t using the SDK method:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Deterministic Attribution<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Uses <strong>device identifiers<\/strong> such as IDFA (if ATT consented), GAID, or install referrer.<br><\/li>\n\n\n\n<li>Tenjin will perform deterministic attribution based on the installs we receive via S2S using the advertising_id parameter for opt-in users.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Probabilistic Attribution<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Used when IDFA\/GAID is not available (e.g., iOS without ATT consent).<br><\/li>\n\n\n\n<li>Tenjin will perform probabilistic attribution based on the installs we receive via S2S using the ip_address parameter for opt-out users.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>3. Receive Attribution Data&nbsp;<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Once events are ingested and attribution is performed, customers can access results through:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><a href=\"https:\/\/tenjin.com\/tr\/docs\/raw-data-exporter\/\" type=\"link\" id=\"https:\/\/tenjin.com\/docs\/raw-data-exporter\/\">Raw Data Export<\/a><\/strong>:<br>\n<ul class=\"wp-block-list\">\n<li>Raw attributed event-level data available for export from the dashboard.<br><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/tenjin.com\/tr\/docs\/liveops-campaigns\/\" type=\"link\" id=\"https:\/\/tenjin.com\/docs\/liveops-campaigns\/\">LiveOps Method<\/a><\/strong>:<br>\n<ul class=\"wp-block-list\">\n<li>User-level attribution info on the client side using the Tenjin SDK.<br><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/tenjin.com\/tr\/docs\/server-to-server-s2s-callbacks\/\" type=\"link\" id=\"https:\/\/tenjin.com\/docs\/server-to-server-s2s-callbacks\/\">S2S Callbacks<\/a><\/strong>:<br>\n<ul class=\"wp-block-list\">\n<li>Tenjin can send <strong>postbacks<\/strong> to your server endpoints when attribution occurs.<br><\/li>\n\n\n\n<li>Postbacks include campaign, channel, ad network, and install details.<br><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph translation-block\"><strong>Note<\/strong>: If you would also like to receive raw clicks and impression data to your servers, please contact <a href=\"mailto:support@tenjin.com\" target=\"_blank\">support@tenjin.com<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>This guide explains how to implement Tenjin without using an SDK. This method works by sending server-to-server (S2S) events to Tenjin, so that&nbsp;Tenjin can attribute , and retrieve&nbsp;results&nbsp;by using DataVault, LiveOps Campaigns, or S2S Callbacks. &nbsp;Pre-requisites 1. Start Sending Events to Tenjin \u26a0\ufe0f Important: 2. Attribution in Tenjin via S2S Tenjin performs attribution on incoming&#8230;<\/p>","protected":false},"author":17,"featured_media":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"doc_category":[239],"glossaries":[],"doc_tag":[],"class_list":["post-17428","docs","type-docs","status-publish","hentry","doc_category-attribution-tools"],"acf":[],"year_month":"2026-07","word_count":359,"total_views":0,"reactions":{"happy":0,"normal":0,"sad":0},"author_info":{"name":"anurag","author_nicename":"anurag","author_url":"https:\/\/tenjin.com\/tr\/blog\/author\/anurag\/"},"doc_category_info":[{"term_name":"Attribution Tools","term_url":"https:\/\/tenjin.com\/tr\/docs\/category\/attribution-tools\/"}],"doc_tag_info":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>S2S Tracking: No SDK Guide | Tenjin<\/title>\n<meta name=\"description\" content=\"Learn how to implement Tenjin&#039;s server-to-server tracking without an SDK for flexible attribution and event measurement.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/tenjin.com\/tr\/docs\/implementing-s2s-tracking-a-no-sdk-guide\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"S2S Tracking: No SDK Guide | Tenjin\" \/>\n<meta property=\"og:description\" content=\"Learn how to implement Tenjin&#039;s server-to-server tracking without an SDK for flexible attribution and event measurement.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/tenjin.com\/tr\/docs\/implementing-s2s-tracking-a-no-sdk-guide\/\" \/>\n<meta property=\"og:site_name\" content=\"Tenjin\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-15T10:28:28+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@TenjinMMP\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/tenjin.com\\\/docs\\\/implementing-s2s-tracking-a-no-sdk-guide\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/tenjin.com\\\/docs\\\/implementing-s2s-tracking-a-no-sdk-guide\\\/\"},\"author\":{\"name\":\"anurag\",\"@id\":\"https:\\\/\\\/tenjin.com\\\/#\\\/schema\\\/person\\\/e039df04bf002f4a0825fce9d6d5f13b\"},\"headline\":\"Implementing S2S Tracking: A No-SDK Guide\",\"datePublished\":\"2026-04-14T17:41:32+00:00\",\"dateModified\":\"2026-06-15T10:28:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/tenjin.com\\\/docs\\\/implementing-s2s-tracking-a-no-sdk-guide\\\/\"},\"wordCount\":354,\"publisher\":{\"@id\":\"https:\\\/\\\/tenjin.com\\\/#organization\"},\"inLanguage\":\"tr\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/tenjin.com\\\/docs\\\/implementing-s2s-tracking-a-no-sdk-guide\\\/\",\"url\":\"https:\\\/\\\/tenjin.com\\\/docs\\\/implementing-s2s-tracking-a-no-sdk-guide\\\/\",\"name\":\"S2S Tracking: No SDK Guide | Tenjin\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/tenjin.com\\\/#website\"},\"datePublished\":\"2026-04-14T17:41:32+00:00\",\"dateModified\":\"2026-06-15T10:28:28+00:00\",\"description\":\"Learn how to implement Tenjin's server-to-server tracking without an SDK for flexible attribution and event measurement.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/tenjin.com\\\/docs\\\/implementing-s2s-tracking-a-no-sdk-guide\\\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/tenjin.com\\\/docs\\\/implementing-s2s-tracking-a-no-sdk-guide\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/tenjin.com\\\/docs\\\/implementing-s2s-tracking-a-no-sdk-guide\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/tenjin.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Docs\",\"item\":\"https:\\\/\\\/tenjin.com\\\/docs\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Implementing S2S Tracking: A No-SDK Guide\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/tenjin.com\\\/#website\",\"url\":\"https:\\\/\\\/tenjin.com\\\/\",\"name\":\"Tenjin\",\"description\":\"Growth Made Simple\",\"publisher\":{\"@id\":\"https:\\\/\\\/tenjin.com\\\/#organization\"},\"alternateName\":\"Tenjin - Mobile Measurement Partner\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/tenjin.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/tenjin.com\\\/#organization\",\"name\":\"Tenjin\",\"url\":\"https:\\\/\\\/tenjin.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\\\/\\\/tenjin.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/tenjin.com\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/images.webp\",\"contentUrl\":\"https:\\\/\\\/tenjin.com\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/images.webp\",\"width\":429,\"height\":117,\"caption\":\"Tenjin\"},\"image\":{\"@id\":\"https:\\\/\\\/tenjin.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/TenjinMMP\",\"https:\\\/\\\/www.youtube.com\\\/@TenjinMMP\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/tenjin\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/tenjin.com\\\/#\\\/schema\\\/person\\\/e039df04bf002f4a0825fce9d6d5f13b\",\"name\":\"anurag\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dc89d050d7f8053be5b8856ebaaabf82adb98e0ea57d1579b8397fb09de189c8?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dc89d050d7f8053be5b8856ebaaabf82adb98e0ea57d1579b8397fb09de189c8?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dc89d050d7f8053be5b8856ebaaabf82adb98e0ea57d1579b8397fb09de189c8?s=96&d=mm&r=g\",\"caption\":\"anurag\"},\"url\":\"https:\\\/\\\/tenjin.com\\\/tr\\\/blog\\\/author\\\/anurag\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"S2S Tracking: No SDK Guide | Tenjin","description":"Learn how to implement Tenjin's server-to-server tracking without an SDK for flexible attribution and event measurement.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/tenjin.com\/tr\/docs\/implementing-s2s-tracking-a-no-sdk-guide\/","og_locale":"tr_TR","og_type":"article","og_title":"S2S Tracking: No SDK Guide | Tenjin","og_description":"Learn how to implement Tenjin's server-to-server tracking without an SDK for flexible attribution and event measurement.","og_url":"https:\/\/tenjin.com\/tr\/docs\/implementing-s2s-tracking-a-no-sdk-guide\/","og_site_name":"Tenjin","article_modified_time":"2026-06-15T10:28:28+00:00","twitter_card":"summary_large_image","twitter_site":"@TenjinMMP","twitter_misc":{"Est. reading time":"2 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/tenjin.com\/docs\/implementing-s2s-tracking-a-no-sdk-guide\/#article","isPartOf":{"@id":"https:\/\/tenjin.com\/docs\/implementing-s2s-tracking-a-no-sdk-guide\/"},"author":{"name":"anurag","@id":"https:\/\/tenjin.com\/#\/schema\/person\/e039df04bf002f4a0825fce9d6d5f13b"},"headline":"Implementing S2S Tracking: A No-SDK Guide","datePublished":"2026-04-14T17:41:32+00:00","dateModified":"2026-06-15T10:28:28+00:00","mainEntityOfPage":{"@id":"https:\/\/tenjin.com\/docs\/implementing-s2s-tracking-a-no-sdk-guide\/"},"wordCount":354,"publisher":{"@id":"https:\/\/tenjin.com\/#organization"},"inLanguage":"tr"},{"@type":"WebPage","@id":"https:\/\/tenjin.com\/docs\/implementing-s2s-tracking-a-no-sdk-guide\/","url":"https:\/\/tenjin.com\/docs\/implementing-s2s-tracking-a-no-sdk-guide\/","name":"S2S Tracking: No SDK Guide | Tenjin","isPartOf":{"@id":"https:\/\/tenjin.com\/#website"},"datePublished":"2026-04-14T17:41:32+00:00","dateModified":"2026-06-15T10:28:28+00:00","description":"Learn how to implement Tenjin's server-to-server tracking without an SDK for flexible attribution and event measurement.","breadcrumb":{"@id":"https:\/\/tenjin.com\/docs\/implementing-s2s-tracking-a-no-sdk-guide\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/tenjin.com\/docs\/implementing-s2s-tracking-a-no-sdk-guide\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/tenjin.com\/docs\/implementing-s2s-tracking-a-no-sdk-guide\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/tenjin.com\/"},{"@type":"ListItem","position":2,"name":"Docs","item":"https:\/\/tenjin.com\/docs\/"},{"@type":"ListItem","position":3,"name":"Implementing S2S Tracking: A No-SDK Guide"}]},{"@type":"WebSite","@id":"https:\/\/tenjin.com\/#website","url":"https:\/\/tenjin.com\/","name":"Tenjin","description":"Growth Made Simple","publisher":{"@id":"https:\/\/tenjin.com\/#organization"},"alternateName":"Tenjin - Mobile Measurement Partner","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/tenjin.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":"Organization","@id":"https:\/\/tenjin.com\/#organization","name":"Tenjin","url":"https:\/\/tenjin.com\/","logo":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/tenjin.com\/#\/schema\/logo\/image\/","url":"https:\/\/tenjin.com\/wp-content\/uploads\/2026\/04\/images.webp","contentUrl":"https:\/\/tenjin.com\/wp-content\/uploads\/2026\/04\/images.webp","width":429,"height":117,"caption":"Tenjin"},"image":{"@id":"https:\/\/tenjin.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/TenjinMMP","https:\/\/www.youtube.com\/@TenjinMMP","https:\/\/www.linkedin.com\/company\/tenjin"]},{"@type":"Person","@id":"https:\/\/tenjin.com\/#\/schema\/person\/e039df04bf002f4a0825fce9d6d5f13b","name":"anurag","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/secure.gravatar.com\/avatar\/dc89d050d7f8053be5b8856ebaaabf82adb98e0ea57d1579b8397fb09de189c8?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/dc89d050d7f8053be5b8856ebaaabf82adb98e0ea57d1579b8397fb09de189c8?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dc89d050d7f8053be5b8856ebaaabf82adb98e0ea57d1579b8397fb09de189c8?s=96&d=mm&r=g","caption":"anurag"},"url":"https:\/\/tenjin.com\/tr\/blog\/author\/anurag\/"}]}},"knowledge_base_info":[],"knowledge_base_slug":[],"_links":{"self":[{"href":"https:\/\/tenjin.com\/tr\/wp-json\/wp\/v2\/docs\/17428","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tenjin.com\/tr\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/tenjin.com\/tr\/wp-json\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/tenjin.com\/tr\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/tenjin.com\/tr\/wp-json\/wp\/v2\/comments?post=17428"}],"version-history":[{"count":5,"href":"https:\/\/tenjin.com\/tr\/wp-json\/wp\/v2\/docs\/17428\/revisions"}],"predecessor-version":[{"id":17725,"href":"https:\/\/tenjin.com\/tr\/wp-json\/wp\/v2\/docs\/17428\/revisions\/17725"}],"wp:attachment":[{"href":"https:\/\/tenjin.com\/tr\/wp-json\/wp\/v2\/media?parent=17428"}],"wp:term":[{"taxonomy":"doc_category","embeddable":true,"href":"https:\/\/tenjin.com\/tr\/wp-json\/wp\/v2\/doc_category?post=17428"},{"taxonomy":"glossaries","embeddable":true,"href":"https:\/\/tenjin.com\/tr\/wp-json\/wp\/v2\/glossaries?post=17428"},{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/tenjin.com\/tr\/wp-json\/wp\/v2\/doc_tag?post=17428"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}