{
    "componentChunkName": "component---node-modules-lekoarts-gatsby-theme-minimal-blog-core-src-templates-post-query-tsx",
    "path": "/mobile-aep-sdk-and-adobe-target-server-side-implementation",
    "result": {"data":{"post":{"slug":"/mobile-aep-sdk-and-adobe-target-server-side-implementation","title":"Mobile AEP SDK and Adobe Target Server-Side Implementation","date":"12.10.2022","tags":[{"name":"Adobe","slug":"adobe"},{"name":"AEP","slug":"aep"},{"name":"AEP SDK","slug":"aep-sdk"},{"name":"Mobile","slug":"mobile"},{"name":"Server-side","slug":"server-side"},{"name":"Proxy","slug":"proxy"}],"description":"Implementing Adobe Target in the Mobile App via AEP SDK and Server-side Proxy","canonicalUrl":null,"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"Mobile AEP SDK and Adobe Target Server-Side Implementation\",\n  \"date\": \"2022-10-12T00:00:00.000Z\",\n  \"description\": \"Implementing Adobe Target in the Mobile App via AEP SDK and Server-side Proxy\",\n  \"tags\": [\"Adobe\", \"AEP\", \"AEP SDK\", \"Mobile\", \"Server-side\", \"Proxy\"],\n  \"banner\": \"./target-premium-banner.jpg\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h1\", null, \"Mobile AEP SDK and Adobe Target Server-Side Implementation\"), mdx(\"h2\", null, \"Intro\"), mdx(\"p\", null, \"During my consulting practice, I am often asked to share best practices on how Adobe Target can work outside of mobile AEP SDK in the apps.\\nThe reason is that some enterprise apps are architectured in a way where content is fully or partially driven by a web server API - the external server that delivers content.\\nTherefore, implementing AEP SDK client-side in the app is not an option, even though Adobe recommends client-side implementaiton as a best practice.\\nTo implement Target server-side, we need to let SDK generate and pass Target-related data into an external API service. \"), mdx(\"p\", null, \"This document describes how Adobe Target can operate in the mobile app where Target calls are re-routed to a server-side API service responsible for communicating with Target edge network.  \"), mdx(\"h2\", null, \"Technical requirements:\"), mdx(\"p\", null, \"The following technical requirements must be met to leverage Target solution via server-side implementation.\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"AEP SDK\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Mobile AEP SDK must be initialized in the app and have Adobe Target and Analytics solutions enabled. \"))), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Target Delivery API \", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"The web server must route all Target calls to the Delivery API (\", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"http://developers.adobetarget.com/api/delivery-api/\"\n  }, \"http://developers.adobetarget.com/api/delivery-api/\"), \")\")))), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"Note that legacy Target API does not support A4T integration so it cannot be used. Use the Delivery API only.\")), mdx(\"h2\", null, \"Extracting Identifiers for Target from AEP SDK\"), mdx(\"p\", null, \"The key to this implementation is to \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"extract Target functionality from the AEP SDK\"), \" running client-side into an \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"external server-side API\"), \" service, or Proxy service.\\nBecause this is \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"not a recommended approach\"), \", we must be careful about what information is being passed to the Proxy server.\\nSDK generates all necessary data about the visitor to correctly pass it to Target and other Adobe solutions.\\nPassing incorrect data will result in product malfunction. \"), mdx(\"p\", null, \"Here is a list of identifiers required for all Target calls:\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Your Customer ID with authenticated state, if known\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"ECID\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"TNT ID\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Session ID\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Edge Host\")), mdx(\"h3\", null, \"Getting Customer ID\"), mdx(\"p\", null, \"Your organization Customer ID with an authenticated state, if known, is superior to any other ID such as ECID and TNT ID. However, it is only known when visitor logs in to authenticate.\\nGet and pass it to the Proxy call every time when it is known together with the user authenticated state.\"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"IMPORTANT: if multiple Customer IDs are set, Target only supports the first authenticated ID on the list. \")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"Identity.getIdentifiers { customerIds, error in\\n  if let firstCustomerId = customerIds.first {\\n    print(\\\"Visitor ID : \\\\(firstCustomerId)\\\")\\n  }\\n}\\n\")), mdx(\"h3\", null, \"Getting ECID or Experience Cloud ID\"), mdx(\"p\", null, \"Known as ECID, Experience Cloud ID or formerly Marketing Cloud ID, this identifier is used across multiple Adobe solutions and is considered the most important ID when your Customer ID is unknown.\\nTarget call without ECID may result in unexpected behavior.\\nGetting ECID can be achieved using this method:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"Identity.getExperienceCloudId { (ecid, error) in\\n  print(\\\"ECID is: \\\\(ecid)\\\")\\n}\\n\")), mdx(\"h3\", null, \"Getting TNT ID\"), mdx(\"p\", null, \"TNT ID is the key identifier for Target. Passing it is required.\\nHowever, when ECID is available, and in most cases it will be, the TNT ID would only be an alias ID.\\nNote, that the very first call to Target may omit TNT ID, in which case Target will generate a new TNT ID and send it back in response.\\nThis new TNT ID will need to be used for all future Target calls. AEP SDK handles this automatically.\"), mdx(\"p\", null, \"TNT ID also contains mbox edge number, which is important for routing to the nearest edge location. \"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"Target.getTntId({ tntId, error in\\n  print(\\\"TNT ID is \\\\(tntId)\\\")\\n})\\n\")), mdx(\"h3\", null, \"Getting Session ID\"), mdx(\"p\", null, \"Session ID is required for constructing a Target request. Passing inconsistent session ID would result in duplicate visitor sessions and, in return, incorrectly personalized experience.\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"Target.getSessionId { (sessionId, err) in\\n  print(\\\"Session ID is \\\\(sessionId)\\\")\\n}\\n\")), mdx(\"h3\", null, \"Extracting Mbox Edge Host\"), mdx(\"p\", null, \"Mbox edge host allows routing Target call to the nearest edge location.\\nIt looks like \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"mboxedgeNN.tt.omtrdc.net\"), \" where NN is the edge number. \"), mdx(\"p\", null, \"The very first request to Target Delivery API has the following URL where mbox host is replaced by \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"client code\"), \":\"), mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"https://<CLIENT_CODE>.tt.omtrdc.net/rest/v1/delivery/\")), mdx(\"p\", null, \"After the initial Target response, SDK starts using the nearest mbox edge to route new calls to. It will then look like below.\"), mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"https://mboxedge34.tt.omtrdc.net/rest/v1/delivery/\")), mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"mboxedge34\"), \" is now the nearest mbox edge host. Mbox host can be retrieved from TNT ID.\\nFor example, TNT ID \\\"B70FF281-E87D-4FAC-9D5E-E84E53242D9C.34_0\\\" contains \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"34\"), \" for mbox edge hint that will become \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"mboxedge34\"), \".\"), mdx(\"p\", null, \"Extract TNT ID and parse it to get your edge hint and pass it to the Proxy call. Mbox edge must always be consistent when known\\nor, otherwise, connecting to a different edge would result in duplicate visitor profile and inconsistant personalized experience.\"), mdx(\"p\", null, \"If mbox edge host is unknown, pass \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"client code\"), \" instead. \"), mdx(\"h2\", null, \"Constructing Target Request with Delivery API\"), mdx(\"p\", null, \"Adobe Target \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"http://developers.adobetarget.com/api/delivery-api/\"\n  }, \"Delivery API\"), \" is to be used for this server-side implementation.\\nThe Delivery API also supports A4T integration so Target Activities can report to Analytics. \"), mdx(\"p\", null, \"Target has 2 content delivery methods: \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"execute\"), \" and \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"prefetch\"), \".\\nThe server-side implementation works best with the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"execute\"), \" method.\\nHere is an example of the app-generated Target call specific to mobile environment:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"curl -H 'Host: mboxedge34.tt.omtrdc.net' -H 'accept: */*' -H 'content-type: application/json' -H 'user-agent: Mozilla/5.0 (iPhone; CPU OS 14_5_1 like Mac OS X; en_US)' -H 'accept-language: en-us' --data-binary '{\\n  \\\"execute\\\" : {\\n    \\\"mboxes\\\" : [\\n      {\\n        \\\"parameters\\\" : {\\n          \\\"a.HourOfDay\\\" : \\\"12\\\",\\n          \\\"a.CarrierName\\\" : \\\"AT&T\\\",\\n          \\\"a.CrashEvent\\\" : \\\"CrashEvent\\\",\\n          \\\"a.DeviceName\\\" : \\\"iPhone10,6\\\",\\n          \\\"previousosversion\\\" : \\\"iOS 14.5.1\\\",\\n          \\\"a.Resolution\\\" : \\\"1125x2436\\\",\\n          \\\"a.locale\\\" : \\\"en-US\\\",\\n          \\\"mycustomdata\\\" : \\\"ASUDYTF67WEUYSGYDVWE6TFWES\\\",\\n          \\\"a.AppID\\\" : \\\"AEP Demo 1.0 (1)\\\",\\n          \\\"a.RunMode\\\" : \\\"Application\\\",\\n          \\\"a.DaysSinceFirstUse\\\" : \\\"243\\\",\\n          \\\"previousappid\\\" : \\\"AEP Demo 1.0 (1)\\\",\\n          \\\"type\\\" : \\\"gold\\\",\\n          \\\"a.DaysSinceLastUse\\\" : \\\"0\\\",\\n          \\\"a.OSVersion\\\" : \\\"iOS 14.5.1\\\",\\n          \\\"a.LaunchEvent\\\" : \\\"LaunchEvent\\\",\\n          \\\"page\\\" : \\\"GlobalPage\\\",\\n          \\\"a.ignoredSessionLength\\\" : \\\"-1623862502\\\",\\n          \\\"a.DayOfWeek\\\" : \\\"4\\\",\\n          \\\"a.Launches\\\" : \\\"3\\\"\\n        },\\n        \\\"profileParameters\\\" : {\\n          \\\"extraPrefetchProfileKey\\\" : \\\"extraPrefetchProfileValue\\\"\\n        },\\n        \\\"name\\\" : \\\"sdk-demo-4\\\",\\n        \\\"index\\\" : 0\\n      }\\n    ]\\n  },\\n  \\\"experienceCloud\\\" : {\\n    \\\"audienceManager\\\" : {\\n      \\\"blob\\\" : \\\"j8Odv6LonN4r3an7LhD3WZrU1bUpAkFkkiY1ncBR96t2PTI\\\",\\n      \\\"locationHint\\\" : \\\"7\\\"\\n    },\\n    \\\"analytics\\\" : {\\n      \\\"logging\\\" : \\\"client_side\\\"\\n    }\\n  },\\n  \\\"id\\\" : {\\n    \\\"tntId\\\" : \\\"74BEFBA7-819A-4D99-9D6A-F64011FB2654.34_0\\\",\\n    \\\"marketingCloudVisitorId\\\" : \\\"10238278281262063009146396392721108540\\\",\\n    \\\"customerIds\\\" : [\\n      {\\n        \\\"id\\\" : \\\"146396392721108345\\\",\\n        \\\"authenticatedState\\\" : \\\"authenticated\\\",\\n        \\\"integrationCode\\\" : \\\"guid\\\"\\n      },\\n      {\\n        \\\"id\\\" : \\\"827828126206300914\\\",\\n        \\\"authenticatedState\\\" : \\\"authenticated\\\",\\n        \\\"integrationCode\\\" : \\\"hhid\\\"\\n      }\\n    ]\\n  },\\n  \\\"property\\\" : {\\n    \\\"token\\\" : \\\"4b962579-c709-d8e0-2752-c2ef3c9ed3ea\\\"\\n  },\\n  \\\"context\\\" : {\\n    \\\"screen\\\" : {\\n      \\\"colorDepth\\\" : 32,\\n      \\\"height\\\" : 2436,\\n      \\\"width\\\" : 1125,\\n      \\\"orientation\\\" : \\\"portrait\\\"\\n    },\\n    \\\"mobilePlatform\\\" : {\\n      \\\"deviceName\\\" : \\\"iPhone10,6\\\",\\n      \\\"deviceType\\\" : \\\"phone\\\",\\n      \\\"platformType\\\" : \\\"ios\\\"\\n    },\\n    \\\"timeOffsetInMinutes\\\" : 27064379.699999999,\\n    \\\"application\\\" : {\\n      \\\"id\\\" : \\\"com.vues.aep-demo\\\",\\n      \\\"name\\\" : \\\"AEP Demo\\\",\\n      \\\"version\\\" : \\\"1\\\"\\n    },\\n    \\\"channel\\\" : \\\"mobile\\\",\\n    \\\"userAgent\\\" : \\\"Mozilla\\\\/5.0 (iPhone; CPU OS 14_5_1 like Mac OS X; en_US)\\\"\\n  },\\n  \\\"environmentId\\\" : 5062\\n}' --compressed 'https://mboxedge34.tt.omtrdc.net/rest/v1/delivery/?client=adobeinternalags300&sessionId=74BEFBA7-819A-4D99-9D6A-F64011FB2654'\\n\")), mdx(\"p\", null, \"Here is Response for the above Request.\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"{\\n    \\\"status\\\": 200,\\n    \\\"requestId\\\": \\\"0ad6de40-f953-46e9-83f4-9e484c5cbc09\\\",\\n    \\\"client\\\": \\\"adobeinternalags300\\\",\\n    \\\"id\\\": {\\n        \\\"tntId\\\": \\\"74BEFBA7-819A-4D99-9D6A-F64011FB2654.34_0\\\",\\n        \\\"marketingCloudVisitorId\\\": \\\"10238278281262063009146396392721108540\\\"\\n    },\\n    \\\"edgeHost\\\": \\\"mboxedge34.tt.omtrdc.net\\\",\\n    \\\"execute\\\": {\\n        \\\"mboxes\\\": [{\\n            \\\"index\\\": 0,\\n            \\\"name\\\": \\\"sdk-demo-4\\\",\\n      \\\"state\\\": \\\"cWPpH5/slkSPMe...ZNNk8Ba6QQPVmUUGyVdI=\\\",\\n      \\\"options\\\": [{\\n        \\\"content\\\": {\\n          \\\"exp\\\": \\\"B\\\"\\n        },\\n        \\\"type\\\": \\\"json\\\",\\n        \\\"eventToken\\\": \\\"pIe/Ag35pmQBL7O...rWQTvE54PwSXpSSS2Q==\\\",\\n        \\\"responseTokens\\\": {\\n          \\\"experience.id\\\": \\\"1\\\",\\n          \\\"offer.name\\\": \\\"/app_prod_dealsscreengrossordersa4t92721aacopy/experiences/1/pages/0/zones/0/1634149051932\\\",\\n          \\\"activity.name\\\": \\\"HP - Banner - PROD\\\",\\n          \\\"activity.id\\\": \\\"590517\\\",\\n          \\\"option.name\\\": \\\"Offer3\\\",\\n          \\\"experience.name\\\": \\\"Experience B\\\",\\n          \\\"option.id\\\": \\\"3\\\",\\n          \\\"offer.id\\\": \\\"736344\\\"\\n        },\\n        \\\"sourceType\\\": \\\"target\\\"\\n      }],\\n      \\\"analytics\\\": {\\n        \\\"payload\\\": {\\n          \\\"pe\\\": \\\"tnt\\\",\\n          \\\"tnta\\\": \\\"590517:1:0|2,590517:1:0|1\\\"\\n        }\\n      }\\n        }]\\n    }\\n}\\n\")), mdx(\"p\", null, \"Adobe mobile AEP SDK passes a lot of useful data to Target as seen above.\\nRequest parameters contain \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"lifecycle events\"), \" prefixed with \\\"\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"a.\"), \"\\\".\\nThis data is not available for extraction so some server-side functionality may be limited when re-routing Target calls to a Proxy.\"), mdx(\"p\", null, \"See \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://aep-sdks.gitbook.io/docs/foundation-extensions/mobile-core/lifecycle/lifecycle-metrics\"\n  }, \"Lifecycle metrics\"), \" for awareness.\"), mdx(\"p\", null, \"This Target Request may be the bare minimum template for HTTP Request to Target Delivery API:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"curl -H 'Host: mboxedge34.tt.omtrdc.net' -H 'accept: */*' -H 'content-type: application/json' -H 'user-agent: Mozilla/5.0 (iPhone; CPU OS 14_5_1 like Mac OS X; en_US)' -H 'accept-language: en-us' --data-binary '{\\n  \\\"execute\\\" : {\\n    \\\"mboxes\\\" : [\\n      {\\n        \\\"parameters\\\" : {\\n          \\\"<ANY_CUSTOM_PARAM>\\\" : \\\"<ANY_CUSTOM_VALUE>\\\"\\n        }\\n        \\\"name\\\" : \\\"<ANY_LOCATION_NAME>\\\",\\n        \\\"index\\\" : 0\\n      }\\n    ]\\n  },\\n  \\\"experienceCloud\\\" : {\\n    \\\"analytics\\\" : {\\n      \\\"logging\\\" : \\\"client_side\\\"\\n    }\\n  },\\n  \\\"id\\\" : {\\n    \\\"tntId\\\" : \\\"<TNT_ID_EXTRACTED_FROM_SDK>\\\",\\n    \\\"marketingCloudVisitorId\\\" : \\\"ECID_EXTRACTED_FROM_SDK\\\",\\n    \\\"customerIds\\\" : [\\n      {\\n        \\\"id\\\" : \\\"<AUTHENTICATED_CUSTOMER_ID>\\\",\\n        \\\"authenticatedState\\\" : \\\"authenticated\\\",\\n        \\\"integrationCode\\\" : \\\"<CUSTOMER_ID_CODE>\\\"\\n      }\\n    ]\\n  },\\n  \\\"property\\\" : {\\n    \\\"token\\\" : \\\"<PROPERTY_TOKEN_IF_KNOWN>\\\"\\n  },\\n  \\\"context\\\" : {\\n    \\\"channel\\\" : \\\"mobile\\\"\\n  },\\n  \\\"environmentId\\\" : <TARGET_ENVIRONMENT_ID>\\n}' --compressed 'https://<CLIENT_CODE_OR_MBOX_HOST>.tt.omtrdc.net/rest/v1/delivery/?client=<CLIENT_CODE>&sessionId=<SESSION_ID>'\\n\")), mdx(\"p\", null, \"In the next sections we will review how to:\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Send personalized experiences from HTTP Response and \"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Send A4T call to Analytics\")), mdx(\"h2\", null, \"Passing Target Response to the App\"), mdx(\"p\", null, \"After sending the Target HTTP Request as shown above, the Response may contain personalized experiences that can be retrieved from this path:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"execute -> mboxes -> [<ARRAY_INDEX>] -> options -> content \\n\")), mdx(\"p\", null, \"Content will contain the Target Offer, or experience, which will need to be sent back and applied to the app's view as needed.\\n\", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"It is developer's responsibility to parse, extract and apply the experience in the app from Target Response.\")), mdx(\"p\", null, \"Your Target experience may be any object: JSON, HTML, or text. JSON is more common for mobile apps.\\nOften, developers use feature flag approach where Target experience carries a flag with what UI change is required. It may also contain the entire meaningful component that app will consume as expected.\"), mdx(\"h2\", null, \"Analytics A4T Call with Data Insertion API\"), mdx(\"p\", null, \"If Adobe customer is using A4T (Analytics for Target) to report Target Activities to Analytics,\\n\", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"it is developer's responsibility to extract Analytics Payload from Target Response\\nand send it to Analytics using Data Insertion API\"), \". \"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"Note that A4T calls are service calls and do not count towards billable quota.\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"https://<DATA_COLLECTION_HOST>.sc.omtrdc.net/b/ss/<RSID>/0/<CODEVERSION>?pe=tnt&tnta=<ANALYTICS_PAYLOAD_FROM_TARGET_RESPONSE>&mid=<ECID>&vid=<VID>&aid=<AID>\\n\")), mdx(\"h4\", null, \"Sample A4T Data Insertion HTTP Get Call\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"https://demo.sc.omtrdc.net/b/ss/myCustomRsid/0/MOBILE-1.0?pe=tnt&tnta=285408:0:0|2&mid=2304820394812039\\n\")), mdx(\"h2\", null, \"References and Useful Links\"), mdx(\"p\", null, mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://developers.adobetarget.com/api/delivery-api/\"\n  }, \"https://developers.adobetarget.com/api/delivery-api/\"), \"\\n\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://developer.adobe.com/target/implement/server-side/sdk-guides/integration-with-experience-cloud/a4t-reporting/\"\n  }, \"https://developer.adobe.com/target/implement/server-side/sdk-guides/integration-with-experience-cloud/a4t-reporting/\"), \"\\n\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://developer.adobe.com/target/implement/server-side/sdk-guides/integration-with-experience-cloud/a4t-reporting/#query-string-parameters-and-variables\"\n  }, \"https://developer.adobe.com/target/implement/server-side/sdk-guides/integration-with-experience-cloud/a4t-reporting/#query-string-parameters-and-variables\"), \"\\n\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://github.com/AdobeDocs/analytics-1.4-apis/blob/master/docs/data-insertion-api/sample_code/r_sample_http_get.md\"\n  }, \"https://github.com/AdobeDocs/analytics-1.4-apis/blob/master/docs/data-insertion-api/sample_code/r_sample_http_get.md\"), \"\\n\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://github.com/AdobeDocs/analytics-1.4-apis/blob/master/docs/data-insertion-api/reference/r_supported_tags.md\"\n  }, \"https://github.com/AdobeDocs/analytics-1.4-apis/blob/master/docs/data-insertion-api/reference/r_supported_tags.md\"), \"\\n\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://www.softcrylic.com/blogs/adobe-analytics-for-target-a4t-a-look-under-the-hood/\"\n  }, \"https://www.softcrylic.com/blogs/adobe-analytics-for-target-a4t-a-look-under-the-hood/\")));\n}\n;\nMDXContent.isMDXComponent = true;","excerpt":"Mobile AEP SDK and Adobe Target Server-Side Implementation Intro During my consulting practice, I am often asked to share best practices on…","timeToRead":4,"banner":null}},"pageContext":{"slug":"/mobile-aep-sdk-and-adobe-target-server-side-implementation","formatString":"DD.MM.YYYY"}},
    "staticQueryHashes": ["2744905544","3090400250","318001574"]}