{
    "componentChunkName": "component---node-modules-rocketseat-gatsby-theme-docs-core-src-templates-docs-query-js",
    "path": "/docs/destinations/marketing/moengage/",
    "result": {"data":{"mdx":{"id":"7297fb53-f23b-5fe2-80a8-0f9cd8f00cab","excerpt":"MoEngage MoEngage is an intelligent customer engagement platform that allows you to effectively engage with your customers throughout their product journey. It…","fields":{"slug":"/docs/destinations/marketing/moengage/"},"frontmatter":{"title":"MoEngage","description":"Step-by-step guide to set up MoEngage as a destination in RudderStack","image":null,"disableTableOfContents":null},"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || 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\": \"MoEngage\",\n  \"description\": \"Step-by-step guide to set up MoEngage as a destination in RudderStack\"\n};\n\nvar makeShortcode = function makeShortcode(name) {\n  return function MDXDefaultShortcode(props) {\n    console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n    return mdx(\"div\", props);\n  };\n};\n\nvar Tabs = makeShortcode(\"Tabs\");\nvar TabList = makeShortcode(\"TabList\");\nvar Tab = makeShortcode(\"Tab\");\nvar TabPanels = makeShortcode(\"TabPanels\");\nvar TabPanel = makeShortcode(\"TabPanel\");\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\", {\n    \"id\": \"moengage\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h1\",\n    \"href\": \"#moengage\",\n    \"aria-label\": \"moengage permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"MoEngage\"), mdx(\"p\", null, \"MoEngage is an intelligent customer engagement platform that allows you to effectively engage with your customers throughout their product journey. It allows you to track and map your customer life-cycle across various touchpoints, and optimize their customer experience at each stage.\"), mdx(\"p\", null, \"With MoEngage, you can effectively deliver personalized communication to your customers and thereby increase overall customer engagement and audience retention.\"), mdx(\"p\", null, \"RudderStack now supports MoEngage as a destination to seamlessly send your event data in real-time.\"), mdx(\"div\", {\n    className: \"successBlock\"\n  }, mdx(\"p\", null, \"  \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Find the open-source transformer code for this destination in our \", mdx(\"a\", {\n    href: \"https://github.com/rudderlabs/rudder-transformer/tree/master/v0/destinations/moengage\"\n  }, \"GitHub repo\"), \".\"))), mdx(\"h2\", {\n    \"id\": \"getting-started\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#getting-started\",\n    \"aria-label\": \"getting started permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Getting Started\"), mdx(\"p\", null, \"Before configuring your source and destination on the RudderStack, please verify if the source platform is supported by MoEngage, by referring to the table below:\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"strong\", {\n    parentName: \"th\"\n  }, \"Connection Mode\")), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"strong\", {\n    parentName: \"th\"\n  }, \"Web\")), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"strong\", {\n    parentName: \"th\"\n  }, \"Mobile\")), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"strong\", {\n    parentName: \"th\"\n  }, \"Server\")))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Device Mode\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Supported\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Supported\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"-\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Cloud Mode\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Supported\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Supported\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Supported\"))))), mdx(\"div\", {\n    className: \"infoBlock\"\n  }, mdx(\"p\", null, \"To know more about the difference between Cloud mode and Device mode in RudderStack, read the \", mdx(\"a\", {\n    href: \"https://rudderstack.com/docs/connections/rudderstack-connection-modes/\"\n  }, \"RudderStack connection modes\"), \" guide.\")), mdx(\"p\", null, \"Once you have confirmed that the platform supports sending events to MoEngage, perform the steps below:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"From your \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://app.rudderlabs.com/\"\n  }, \"RudderStack dashboard\"), \", add the source. From the list of destinations, select \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"MoEngage\"), \".\")), mdx(\"div\", {\n    className: \"infoBlock\"\n  }, mdx(\"p\", null, \"Please follow our guide on \", mdx(\"a\", {\n    href: \"https://rudderstack.com/docs/connections/adding-source-and-destination-rudderstack/\"\n  }, \"How to Add a Source and Destination in RudderStack\"), \" to add a source and destination in RudderStack.\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Give a name to the destination and click on \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Next\"), \". You should then see the following screen:\")), mdx(\"span\", {\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"960px\"\n    }\n  }, \"\\n      \", mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"133.75%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/webp;base64,UklGRrAAAABXRUJQVlA4IKQAAADwBACdASoUABsAPjEWiUMiISEUBVQgAwS0gAWAET8F+AEwjJG9C0P5vqkI/qtI10AA/v+3NUqjfAasq9HWUJf+N0g7i97WmwnmyIUYGX+DzTj/Q92YcY8NCJ+GusoNj/WcHwo9To+Rb2+gnDFlDMXwSzaCekmCQCBudqcw62mc01cIo+HNwaQMmtmTy+OGafilA4yG0fmfL+oyMGwdEHyHAAAAAA==')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"picture\", {\n    parentName: \"span\"\n  }, \"\\n          \", mdx(\"source\", {\n    parentName: \"picture\",\n    \"srcSet\": [\"/static/20133c2c9e87137a40066def041b1b93/cbea2/screenshot-2020-11-11-at-11.11.28-am.webp 240w\", \"/static/20133c2c9e87137a40066def041b1b93/42669/screenshot-2020-11-11-at-11.11.28-am.webp 480w\", \"/static/20133c2c9e87137a40066def041b1b93/10c02/screenshot-2020-11-11-at-11.11.28-am.webp 960w\", \"/static/20133c2c9e87137a40066def041b1b93/16880/screenshot-2020-11-11-at-11.11.28-am.webp 1120w\"],\n    \"sizes\": \"(max-width: 960px) 100vw, 960px\",\n    \"type\": \"image/webp\"\n  }), \"\\n          \", mdx(\"source\", {\n    parentName: \"picture\",\n    \"srcSet\": [\"/static/20133c2c9e87137a40066def041b1b93/5243c/screenshot-2020-11-11-at-11.11.28-am.png 240w\", \"/static/20133c2c9e87137a40066def041b1b93/ab158/screenshot-2020-11-11-at-11.11.28-am.png 480w\", \"/static/20133c2c9e87137a40066def041b1b93/7d769/screenshot-2020-11-11-at-11.11.28-am.png 960w\", \"/static/20133c2c9e87137a40066def041b1b93/73395/screenshot-2020-11-11-at-11.11.28-am.png 1120w\"],\n    \"sizes\": \"(max-width: 960px) 100vw, 960px\",\n    \"type\": \"image/png\"\n  }), \"\\n          \", mdx(\"img\", {\n    parentName: \"picture\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"src\": \"/static/20133c2c9e87137a40066def041b1b93/7d769/screenshot-2020-11-11-at-11.11.28-am.png\",\n    \"alt\": \"screenshot 2020 11 11 at 11 11 28 am\",\n    \"title\": \"screenshot 2020 11 11 at 11 11 28 am\",\n    \"loading\": \"lazy\",\n    \"decoding\": \"async\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    }\n  }), \"\\n        \"), \"\\n    \"), mdx(\"p\", null, \"In the Connection Settings on the RudderStack dashboard, please enter the MoEngage \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"API ID\"), \", \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"API Key\"), \", and \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Region\"), \", as shown above.\"), mdx(\"p\", null, \"By turning on the native SDK switch under Android SDK Settings on the RudderStack dashboard you can enable Rudder Stack Device Mode for \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Android\"), \" Sources. Similarly for \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Web\"), \" Under Web SDK Settings and \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"IOS\"), \" under iOS SDK Settings.\"), mdx(\"div\", {\n    className: \"successBlock\"\n  }, mdx(\"p\", null, \"  Choose \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"EU\"), \" in the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Region\"), \" field to send your event data to the MoEngage\\nEurope server. To send your event data to the MoEngage India server, choose\\n\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"IND\"), \".\")), mdx(\"h2\", {\n    \"id\": \"adding-device-mode-integration\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#adding-device-mode-integration\",\n    \"aria-label\": \"adding device mode integration permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Adding Device Mode Integration\"), mdx(Tabs, {\n    mdxType: \"Tabs\"\n  }, mdx(TabList, {\n    mdxType: \"TabList\"\n  }, mdx(Tab, {\n    mdxType: \"Tab\"\n  }, \"iOS\"), mdx(Tab, {\n    mdxType: \"Tab\"\n  }, \"Android\"), mdx(Tab, {\n    mdxType: \"Tab\"\n  }, \"React Native\")), mdx(TabPanels, {\n    mdxType: \"TabPanels\"\n  }, mdx(TabPanel, {\n    mdxType: \"TabPanel\"\n  }, \"Follow these steps to add MoEngage to your iOS project:\", mdx(\"ol\", null, mdx(\"li\", null, \"Go to your \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"Podfile\"), \" and add the \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"Rudder-Moengage\"), \" extension:\", mdx(\"span\", null, mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-ruby\"\n  }, \"pod 'Rudder-Moengage'\\n\")))), mdx(\"li\", null, \"After adding the dependency followed by \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"pod install\"), \", you can add the imports to your \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"AppDelegate.m\"), \" file, as shown:\", mdx(\"span\", null, mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-objectivec\"\n  }, \"#import \\\"RudderMoengageFactory.h\\\"\\n\")))), mdx(\"li\", null, \"Finally, change the initialization of your \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"RudderClient\"), \", as shown:\", mdx(\"span\", null, mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-objectivec\"\n  }, \"RudderConfigBuilder *builder = [[RudderConfigBuilder alloc] init];\\n[builder withDataPlaneUrl:DATA_PLANE_URL];\\n[builder withFactory:[RudderMoengageFactory instance]];\\n[RudderClient getInstance:WRITE_KEY config:[builder build]];\\n\")))))), mdx(TabPanel, {\n    mdxType: \"TabPanel\"\n  }, \"Follow these steps to add MoEngage to your Android project:\", mdx(\"ol\", null, mdx(\"li\", null, \"Open your \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"app/build.gradle\"), \" (Module: app) file and add the following:\", mdx(\"span\", null, mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-groovy\"\n  }, \"repositories {\\n    mavenCentral()\\n}\\n\")))), mdx(\"li\", null, \"Add the following under the dependencies section:\", mdx(\"span\", null, mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-groovy\"\n  }, \"implementation 'com.rudderstack.android.sdk:core:1.+'\\nimplementation 'com.rudderstack.android.integration:moengage:1.0.0'\\napi 'com.moengage:moe-android-sdk:10.5.00'\\n\\n//jet pack library required by moengage\\nimplementation 'androidx.core:core-ktx:1.3.2'\\nimplementation 'androidx.appcompat:appcompat:1.2.0'\\nimplementation 'androidx.lifecycle:lifecycle-process:2.2.0'\\n\\n//firebase messaging dependency\\nimplementation 'com.google.firebase:firebase-messaging:21.0.0'\\n\\n// if you don't have Gson included already\\nimplementation 'com.google.code.gson:gson:2.8.6'\\n\")))), mdx(\"li\", null, \"Also, add the below plugin after \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"buildscript\"), \":\", mdx(\"span\", null, mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-groovy\"\n  }, \"// For Push Notification\\napply plugin: 'com.google.gms.google-services'\\n\")))), mdx(\"li\", null, \"Open your \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"build.gradle\"), \" (Module: Project) file and add the following in the \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"buildscript\"), \" dependencies:\", mdx(\"span\", null, mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-groovy\"\n  }, \"// For Push Notification\\nbuildscript {\\n    dependencies {\\n        classpath 'com.google.gms:google-services:4.3.4'\\n    }\\n}\\n\")))), mdx(\"li\", null, \"Initialize the RudderStack SDK in the \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"Application\"), \" class's \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"onCreate()\"), \" method, as shown:\", mdx(\"span\", null, mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-groovy\"\n  }, \"// initializing Rudder SDK\\nval rudderClient = RudderClient.getInstance(\\n    this,\\n    WRITE_KEY,\\n    RudderConfig.Builder()\\n        .withDataPlaneUrl(DATA_PLANE_URL)\\n        .withFactory(MoengageIntegrationFactory.FACTORY)\\n        .build()\\n)\\n\")))), mdx(\"li\", null, \"Initialize the MoEngage SDK in the \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"Application\"), \" class's \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"onCreate()\"), \" method:\", mdx(\"span\", null, mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-kotlin\"\n  }, \"// this is the instance of the application class\\n// and \\\"XXXXXXXXXXX\\\" is the APP ID from the dashboard.\\nval moEngage = MoEngage.Builder(this, \\\"XXXXXXXXXXX\\\")\\n        .build()\\nMoEngage.initialise(moEngage)\\n\")))))), mdx(TabPanel, {\n    mdxType: \"TabPanel\"\n  }, \"Follow these steps to add MoEngage to your React Native project:\", mdx(\"ol\", null, mdx(\"li\", null, \"Add the RudderStack-MoEngage module to your app by running the following command:\", mdx(\"span\", null, mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"npm install @rudderstack/rudder-integration-moengage-react-native\\n// OR //\\nyarn add @rudderstack/rudder-integration-moengage-react-native\\n\")))), mdx(\"li\", null, \"Import the above module and add it to your SDK initialization, as shown:\", mdx(\"span\", null, mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-javascript\"\n  }, \"import rudderClient from \\\"@rudderstack/rudder-sdk-react-native\\\"\\nimport moengage from \\\"@rudderstack/rudder-integration-moengage-react-native\\\"\\nconst config = {\\n  dataPlaneUrl: <DATA_PLANE_URL>,\\n  trackAppLifecycleEvents: true,\\n  withFactories: [moengage],\\n}\\nrudderClient.setup( <WRITE_KEY> , config)\\n\")))), mdx(\"li\", null, \"Add the following under the dependencies section of the \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"android/app/build.gradle\"), \" (Module: app) file in the Android folder of your React Native project:\", mdx(\"span\", null, mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-groovy\"\n  }, \"implementation 'com.rudderstack.android.sdk:core:1.+'\\nimplementation 'com.rudderstack.android.integration:moengage:1.0.0'\\nimplementation 'com.moengage:moe-android-sdk:10.5.00'\\n\\n//jet pack library required by moengage\\nimplementation 'androidx.core:core-ktx:1.3.2'\\nimplementation 'androidx.appcompat:appcompat:1.2.0'\\nimplementation 'androidx.lifecycle:lifecycle-process:2.2.0'\\n\\n//firebase messaging dependency\\nimplementation 'com.google.firebase:firebase-messaging:21.0.0'\\n\\n// if you don't have Gson included already\\nimplementation 'com.google.code.gson:gson:2.8.6'\\n\")))), mdx(\"li\", null, \"In the \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"android/build.gradle\"), \" (Module: Project) file, add the following:\", mdx(\"span\", null, mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-groovy\"\n  }, \"repositories {\\n  mavenCentral()\\n}\\n\")))), mdx(\"li\", null, \"Add the following in the \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"buildscript\"), \" dependencies in \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"android/build.gradle\"), \" (Module: Project) file:\", mdx(\"span\", null, mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-groovy\"\n  }, \"// For Push Notification\\nbuildscript {\\n  dependencies {\\n    classpath 'com.google.gms:google-services:4.3.4'\\n  }\\n}\\n\")))), mdx(\"li\", null, \"Also, add the following plugin at the top of \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"android/app/build.gradle\"), \" (Module: app):\", mdx(\"span\", null, mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-groovy\"\n  }, \"// For Push Notification\\napply plugin: 'com.google.gms.google-services'\\n\")))), mdx(\"li\", null, \"Initialize the MoEngage SDK in the \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"Application\"), \" class' \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"onCreate()\"), \" method, as shown:\", mdx(\"span\", null, mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-java\"\n  }, \"// MoEngage SDK initialisation: Replace \\\"xxxxxxx\\\" with your APP ID.\\nMoEngage moEngage = new MoEngage\\n  .Builder(MainActivity.this.getApplication(), \\\"xxxxxxx\\\")\\n  .enableLogs(LogLevel.VERBOSE)\\n  .build();\\nMoEngage.initialise(moEngage);\\n\")))))))), mdx(\"h2\", {\n    \"id\": \"identify\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#identify\",\n    \"aria-label\": \"identify permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Identify\"), mdx(\"p\", null, \"To identify a user to MoEngage, you need to call the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"identify\"), \" API.\"), mdx(\"div\", {\n    className: \"infoBlock\"\n  }, mdx(\"p\", null, \"For information on the \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"identify\"), \" call, please refer to our \", mdx(\"a\", {\n    href: \"https://rudderstack.com/docs/rudderstack-api\"\n  }, \"RudderStack API Specification\"), \" guide.\")), mdx(\"p\", null, \"MoEngage needs a unique identifier to identify a user. So, if you provide \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"userId\"), \" in your \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"identify\"), \" call, RudderStack passes it as that \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"customer_id\"), \" . Otherwise, it sends an \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"anonymousId\"), \" if a \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"userId\"), \" is not present.\"), mdx(\"p\", null, \"You can also create a new user property or update existing user properties of the users using the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"identify\"), \" API.\"), mdx(\"p\", null, \"A sample identify call is as shown:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-javascript\"\n  }, \"rudderanalytics.identify(\\\"name123\\\", {\\n  name: \\\"Name Surname\\\",\\n  first_name: \\\"Name\\\",\\n  last_name: \\\"Surname\\\",\\n  email: \\\"name@surname.com\\\",\\n  createdAt: \\\"Thu Mar 24 2020 17:46:45 GMT+0000 (UTC)\\\",\\n})\\n\")), mdx(\"div\", {\n    className: \"infoBlock\"\n  }, mdx(\"p\", null, \"Identify api will be used to \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Login\"), \" the user into MoEngage in \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Device\"), \" Mode\")), mdx(\"h3\", {\n    \"id\": \"moengage-reserved-properties\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#moengage-reserved-properties\",\n    \"aria-label\": \"moengage reserved properties permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"MoEngage Reserved Properties\"), mdx(\"p\", null, \"The following property names are reserved by MoEngage:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"name\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"first_name\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"last_name\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"email\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"age\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"gender\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"mobile\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"transactions\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"revenue\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"moe_unsubscribe\"))), mdx(\"div\", {\n    className: \"warningBlock\"\n  }, mdx(\"p\", null, \"You may create custom properties but you should not create properties with the following names \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"\\\"\"), mdx(\"strong\", {\n    parentName: \"p\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"strong\"\n  }, \"id\")), mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"\\\"\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"\\\"\"), mdx(\"strong\", {\n    parentName: \"p\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"strong\"\n  }, \"_id\")), mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"\\\"\"), \", or \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"\\\"\\\"\"), \" .\")), mdx(\"h3\", {\n    \"id\": \"identifying-a-device-to-moengage\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#identifying-a-device-to-moengage\",\n    \"aria-label\": \"identifying a device to moengage permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Identifying a Device to MoEngage\"), mdx(\"p\", null, \"You can also identify a device to MoEngage , using the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"identify\"), \" API. With this API, you can create new properties or update the existing properties of the device.\"), mdx(\"p\", null, \"A sample call for identifying device is as shown:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-javascript\"\n  }, \"rudderanalytics.identify(\\\"name123\\\", {\\n  context: {\\n    device: {\\n      id: \\\"7ase32188a4dab669f\\\",\\n      manufacturer: \\\"Apple\\\",\\n      model: \\\"IOS SDK built for x86\\\",\\n      name: \\\"generic_x86\\\",\\n      token: \\\"devtoken\\\",\\n      type: \\\"ios\\\",\\n    },\\n  },\\n})\\n\")), mdx(\"h2\", {\n    \"id\": \"track\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#track\",\n    \"aria-label\": \"track permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Track\"), mdx(\"p\", null, \"To track your users' actions, you can use the RudderStack \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"track\"), \" API. You can call \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"track\"), \" with \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"eventname\"), \" and the associated properties.\"), mdx(\"div\", {\n    className: \"infoBlock\"\n  }, mdx(\"p\", null, \"For information on the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"track\"), \" call, please refer to our \", mdx(\"a\", {\n    href: \"https://rudderstack.com/docs/rudderstack-api\"\n  }, \"RudderStack API Specification\"), \" guide.\")), mdx(\"p\", null, \"A sample \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"track\"), \" call is as shown:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-javascript\"\n  }, \"rudderanalytics.track(\\\"Order Completed\\\", {\\n  checkout_id: \\\"C324532\\\",\\n  order_id: \\\"T1230\\\",\\n  value: 15.98,\\n  revenue: 16.98,\\n  shipping: 3.0,\\n  coupon: \\\"FY21\\\",\\n  currency: \\\"INR\\\",\\n  products: [\\n    {\\n      product_id: \\\"product-mixedfruit-jam\\\",\\n      sku: \\\"sku-1\\\",\\n      category: \\\"Food\\\",\\n      name: \\\"Food/Drink\\\",\\n      brand: \\\"Sample\\\",\\n      variant: \\\"None\\\",\\n      price: 10.0,\\n      quantity: 2,\\n      currency: \\\"INR\\\",\\n      position: 1,\\n      value: 6.0,\\n      typeOfProduct: \\\"Food\\\",\\n      url: \\\"https://www.example.com/product/bacon-jam\\\",\\n      image_url: \\\"https://www.example.com/product/bacon-jam.jpg\\\",\\n    },\\n  ],\\n})\\n\")), mdx(\"h2\", {\n    \"id\": \"alias\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#alias\",\n    \"aria-label\": \"alias permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Alias\"), mdx(\"p\", null, \"The Alias api is used to merge two different profiles of a same user into a single profile.\"), mdx(\"p\", null, \"Alias call can be done only through mobile sdks.\"), mdx(\"p\", null, \"For more information, please refer to our \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://rudderstack.com/docs/rudderstack-api/api-specification/rudderstack-spec/\"\n  }, \"RudderStack API Specification\"), \" guide.\"), mdx(Tabs, {\n    mdxType: \"Tabs\"\n  }, mdx(TabList, {\n    mdxType: \"TabList\"\n  }, mdx(Tab, {\n    mdxType: \"Tab\"\n  }, \"iOS\"), mdx(Tab, {\n    mdxType: \"Tab\"\n  }, \"Android\")), mdx(TabPanels, {\n    mdxType: \"TabPanels\"\n  }, mdx(TabPanel, {\n    mdxType: \"TabPanel\"\n  }, mdx(\"ul\", null, mdx(\"li\", null, \"Run the following command to implement the \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"alias\"), \" method in your iOS project:\", mdx(\"span\", null, mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-objectivec\"\n  }, \"[[RSClient sharedInstance]  alias:@\\\"newId\\\"];\\n\")))))), mdx(TabPanel, {\n    mdxType: \"TabPanel\"\n  }, \"Run the following command to implement the `alias` method in your Android project:\", mdx(\"span\", null, mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-javascript\"\n  }, \"rudderClient.alias(\\\"newId\\\")\\n\")))))), mdx(\"h2\", {\n    \"id\": \"reset\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#reset\",\n    \"aria-label\": \"reset permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Reset\"), mdx(\"p\", null, \"The reset method resets the previously identified user and the related information. For more information, please refer to our \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://rudderstack.com/docs/rudderstack-api/api-specification/rudderstack-spec/\"\n  }, \"RudderStack API Specification\"), \" guide.\"), mdx(Tabs, {\n    mdxType: \"Tabs\"\n  }, mdx(TabList, {\n    mdxType: \"TabList\"\n  }, mdx(Tab, {\n    mdxType: \"Tab\"\n  }, \"iOS\"), mdx(Tab, {\n    mdxType: \"Tab\"\n  }, \"Android\")), mdx(TabPanels, {\n    mdxType: \"TabPanels\"\n  }, mdx(TabPanel, {\n    mdxType: \"TabPanel\"\n  }, \"Run the following command to implement the \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"reset\"), \" method in your iOS project:\", mdx(\"span\", null, mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-objectivec\"\n  }, \"[[RSClient sharedInstance] reset];\\n\")))), mdx(TabPanel, {\n    mdxType: \"TabPanel\"\n  }, \"Run the following command to implement the \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"reset\"), \" method in your Android project:\", mdx(\"span\", null, mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-javascript\"\n  }, \"rudderClient.reset()\\n\")))))), mdx(\"div\", {\n    className: \"warningBlock\"\n  }, mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"RESET\"), \" api is applicable only for \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Device\"), \" Mode Connections\")), mdx(\"h2\", {\n    \"id\": \"supported-mappings\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#supported-mappings\",\n    \"aria-label\": \"supported mappings permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Supported mappings\"), mdx(\"p\", null, \"RudderStack maps the following properties to the MoEngage properties before sending them over MoEngage's HTTP API.\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"RudderStack property\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"MoEngage property\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"pushPreference\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"push_preference\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"active\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"active\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"userId\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"customer_id\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"name\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"name\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"firstname\"), \"/\", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"first_name\"), \"/\", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"firstName\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"first_name\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"lastname\"), \"/\", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"last_name\"), \"/\", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"lastName\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"last_name\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"email\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"email\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"age\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"age\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"gender\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"gender\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"mobile\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"mobile\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"source\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"source\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"createdAt\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"created_time\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"last_seen\"), \"/\", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"lastSeen\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"last_seen\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"transactions\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"transactions\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"revenue\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"revenue\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"moe_unsubscribe\"), \"/\", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"moeUnsubscribe\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"moe_unsubscribe\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"event\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"action\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"properties\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"attributes\"))))), mdx(\"h2\", {\n    \"id\": \"configuring-push-notifications\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#configuring-push-notifications\",\n    \"aria-label\": \"configuring push notifications permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Configuring Push Notifications\"), mdx(Tabs, {\n    mdxType: \"Tabs\"\n  }, mdx(TabList, {\n    mdxType: \"TabList\"\n  }, mdx(Tab, {\n    mdxType: \"Tab\"\n  }, \"iOS\"), mdx(Tab, {\n    mdxType: \"Tab\"\n  }, \"Android\"), mdx(Tab, {\n    mdxType: \"Tab\"\n  }, \"Web\"), mdx(Tab, {\n    mdxType: \"Tab\"\n  }, \"React Native\")), mdx(TabPanels, {\n    mdxType: \"TabPanels\"\n  }, mdx(TabPanel, {\n    mdxType: \"TabPanel\"\n  }, mdx(\"ul\", null, mdx(\"li\", null, \"To send push notifications in iOS an APNS certificate needs to be created and has to be converted to \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \".pem\"), \" file.\"), mdx(\"li\", null, \"This \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \".pem\"), \" file needs to be uploaded in the MoEngage dashboard.\"), mdx(\"li\", null, \"In the target app turn on App Groups and enable one of the App group ids, in case if you don't have an App Group ID then create one. The name of your app group should be \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"group.{bundle id}.MoEngage\"), \".\"), mdx(\"li\", null, \"Turn on Background mode and set/enable Remote Notification.\"), mdx(\"li\", null, \"Turn on push notification capabilities in your app.\"), mdx(\"li\", null, \"Before initializing add \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"[MoEngage setAppGroupID:<your app group id>];\")), mdx(\"li\", null, \"In case if you would like to keep the notifications even after the App Launch then : \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"[MoEngage sharedInstance].disableBadgeReset = true;\"))), mdx(\"div\", {\n    className: \"infoBlock\"\n  }, \"For more detailed steps please follow \", mdx(\"a\", {\n    href: \"https://docs.moengage.com/docs/push-notification-implementation\"\n  }, \"MoEngage guidelines here\"), \".\"), mdx(\"h3\", null, \"In-App messaging\"), \"In-app messaging is a type of mobile messaging where the notification is displayed within the app. Some examples include popups, yes/no prompts, interstitials, and more. To implement this please follow this guide: \", mdx(\"a\", {\n    href: \"https://docs.moengage.com/docs/in-app-nativ\"\n  }, \"InApp NATIV\"), \".\"), mdx(TabPanel, {\n    mdxType: \"TabPanel\"\n  }, \"Copy the Server Key from the FCM console and add it to the MoEngage Dashboard(Not sure where to find the Server Key refer to \", mdx(\"a\", {\n    href: \"https://docs.moengage.com/docs/getting-fcmgcm-server-key\"\n  }, \"Getting FCM Server Key\"), \". To upload it, go to the \", mdx(\"a\", {\n    href: \"https://app.moengage.com/v3/#/settings/push/mobile\"\n  }, \"Settings Page\"), \" and add the Server Key and package name. **Please make sure you add the keys both in the Test and Live environment.** Before configuring MoEngage SDK for receiving push notifications please make you have configured Firebase in your application, if not done already refer to the \", mdx(\"a\", {\n    href: \"https://firebase.google.com/docs/android/setup\"\n  }, \"documentation\"), \" and complete setup. Also, make sure you have added the Firebase Messaging dependency in your application \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"build.gradle\"), \" file.\", mdx(\"h3\", null, \"Adding meta for push notification\"), \"To show push notifications you need to add the notification small icon and large icon along with the AppId to the \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"MoEngage.Builder\"), mdx(\"span\", null, mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-kotlin\"\n  }, \"val moEngage = MoEngage.Builder(this, \\\"XXXXXXXX\\\")\\n        .setNotificationSmallIcon(R.drawable.icon)\\n        .setNotificationLargeIcon(R.drawable.ic_launcher)\\n        .build()\\nMoEngage.initialise(moEngage)\\n\"))), \"For showing Push notifications there are 2 important things\", mdx(\"ol\", null, mdx(\"li\", null, \" Registration for Push, i.e. generating push token.\"), mdx(\"li\", null, \" Receiving the Push payload from Firebase Cloud Messaging(FCM) service and showing the notification on the device. The above can either be handled by the application or MoEngage SDK. There is some configuration required based on whether the above-mentioned things are handled by the application or SDK.\")), mdx(\"h3\", null, \"Push Registration and Receiving handled by App\"), mdx(\"p\", null, \"By default, MoEngage SDK attempts to register for push token, since your application is handling push you need to opt-out of SDK's token registration.\"), mdx(\"h4\", null, \"How to opt-out of MoEngage Registration?\"), mdx(\"p\", null, \"To opt-out of MoEngage's token registration mechanism call in the \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"optOutTokenRegistration()\"), \" on the \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"MoEngage.Builder\"), \" as shown below\"), mdx(\"span\", null, mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-kotlin\"\n  }, \"val moEngage = MoEngage.Builder(this, \\\"XXXXXXXX\\\")\\n        .setNotificationSmallIcon(R.drawable.icon)\\n        .setNotificationLargeIcon(R.drawable.ic_launcher)\\n        .configureFcm(FcmConfig(false))\\n        .build()\\nMoEngage.initialise(moEngage)\\n\"))), mdx(\"h4\", null, \"Pass the Push Token To MoEngage SDK\"), \"The Application would need to pass the Push Token received from FCM to the MoEngage SDK for the MoEngage platform to send out push notifications to the device. Use the below API to pass the push token to the MoEngage SDK.\", mdx(\"span\", null, mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-java\"\n  }, \"MoEFireBaseHelper.getInstance().passPushToken(applicationContext, token)\\n\"))), \"_Note:_ Please make sure token is passed to MoEngage SDK whenever push token is refreshed and on application update. Passing token on application update is important for migration to the MoEngage Platform.\", mdx(\"h4\", null, \"Passing the Push payload to the MoEngage SDK\"), \"To pass the push payload to the MoEngage SDK call the MoEngage API from the `onMessageReceived()` from the Firebase receiver. Before passing the payload to the MoEngage SDK you should check if the payload is from the MoEngage platform using the helper API provided by the SDK.\", mdx(\"span\", null, mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-java\"\n  }, \"if (MoEPushHelper.getInstance().isFromMoEngagePlatform(remoteMessage.data)) {\\n  MoEFireBaseHelper.getInstance().passPushPayload(\\n    applicationContext,\\n    remoteMessage.data\\n  )\\n} else {\\n  // your app's business logic to show notification\\n}\\n\"))), mdx(\"h4\", null, \"Push Registration and Receiving handled by SDK\"), \"Add the below code in your manifest file within the application tag\", mdx(\"span\", null, mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-markup\"\n  }, \"<service android:name=\\\"com.moengage.firebase.MoEFireBaseMessagingService\\\">\\n  <intent-filter>\\n    <action android:name=\\\"com.google.firebase.MESSAGING_EVENT\\\" />\\n  </intent-filter>\\n</service>\\n\"))), \"When MoEngage SDK handles push registration it optionally provides a callback to the Application whenever a new token is registered or token is refreshed. An application can get this callback by implementing \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"FirebaseEventListener\"), \" and registering for a callback in the Application class' \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"onCreate()\"), \"using \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"MoEFireBaseHelper.getInstance().setEventListener()\"), mdx(\"h3\", null, \"In-App messaging:\"), \"In-app messaging is a type of mobile messaging where the notification is displayed within the app. Examples include popups, yes/no prompts, interstitials, and more. To implement this please follow: \", mdx(\"a\", {\n    href: \"https://docs.moengage.com/docs/configuring-in-app-nativ\"\n  }, \"InApp NATIV\")), mdx(TabPanel, {\n    mdxType: \"TabPanel\"\n  }, mdx(\"ul\", null, mdx(\"li\", null, \"Go to \", mdx(\"a\", {\n    href: \"http://app.moengage.com/v3/#/settings/4/0\"\n  }, \"Web Push Settings\"), \".\"), mdx(\"li\", null, \"Under Web fill in the details as required.\"), mdx(\"li\", null, \"For HTTPS Web Push to work, you need to host two files in the \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"root\"), \" directory of your web server.\"), mdx(\"li\", null, \"After clicking **SAVE**, please proceed to download \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"serviceworker.js\"), \" file. Under \", mdx(\"a\", {\n    href: \"http://app.moengage.com/v3/#/settings/4/0\"\n  }, \"Web Push Settings\"), \".\"), mdx(\"li\", null, \"In case you already have your own serviceworker.js add :\", mdx(\"span\", null, mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-javascript\"\n  }, \"importScripts(\\n  \\\"https://cdn.moengage.com/webpush/releases/serviceworker_cdn.min.latest.js\\\"\\n)\\n\")))), mdx(\"li\", null, \"HTTP : Select a sub-domain. For more details please follow the \", mdx(\"a\", {\n    href: \"https://docs.moengage.com/docs/setting-up-chrome-push\"\n  }, \"guidelines from MoEngage\"), \".\"))), mdx(TabPanel, {\n    mdxType: \"TabPanel\"\n  }, mdx(\"ul\", null, mdx(\"li\", null, \"Open the \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"android\"), \" folder of your React Native app and follow all the steps listed in the \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"Android\"), \" tab of the \", mdx(\"a\", {\n    href: \"#configuring-push-notifications\"\n  }, \"Configuring Push Notifications\"), \" section.\"), mdx(\"li\", null, \"Open the \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"ios\"), \" folder of your React Native app and follow all the steps listed in the \", mdx(\"code\", {\n    className: \"inline-code\"\n  }, \"iOS\"), \" tab of the \", mdx(\"a\", {\n    href: \"#configuring-push-notifications\"\n  }, \"Configuring Push Notifications\"), \" section. \"))))), mdx(\"h2\", {\n    \"id\": \"debugging-in-web-sdk\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#debugging-in-web-sdk\",\n    \"aria-label\": \"debugging in web sdk permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Debugging in Web SDK\"), mdx(\"p\", null, \"From the RudderStack \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"htps://app.rudderstack.com\"\n  }, \"dashboard\"), \", turn on the debug mode to get debug logs. The events will be seen under the \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Test\"), \" section of the particular app in MoEngage.\"), mdx(\"h2\", {\n    \"id\": \"timezone-offset-for-cloud-mode\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#timezone-offset-for-cloud-mode\",\n    \"aria-label\": \"timezone offset for cloud mode permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Timezone offset for cloud mode\"), mdx(\"h3\", {\n    \"id\": \"track-1\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#track-1\",\n    \"aria-label\": \"track 1 permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Track\"), mdx(\"p\", null, \"MoEngage allows sending the t\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://docs.moengage.com/docs/data-import-apis#event-api\"\n  }, \"ime at which the event occurred\"), \" and calculates the user local time by taking two parameters. \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"current_time\"), \" and \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"user_timezone_offset\"), \" where the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"current_time\"), \" is \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"UTC\"), \" Time at which the event happened, and \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"user_timezone_offset\"), \" is the difference in seconds between the \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"user local time and UTC.\")), mdx(\"div\", {\n    className: \"infoBlock\"\n  }, mdx(\"p\", null, \"The RudderStack transformer maps the \", mdx(\"em\", {\n    parentName: \"p\"\n  }, mdx(\"strong\", {\n    parentName: \"em\"\n  }, \"current_time\"), \" to \", mdx(\"strong\", {\n    parentName: \"em\"\n  }, \"timestamp or originalTimestamp\")), \"\\nvalue from the event payload sent to Rudder server. This value should be passed in \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"UTC.\"))), mdx(\"div\", {\n    className: \"infoBlock\"\n  }, mdx(\"p\", null, \"The \", mdx(\"em\", {\n    parentName: \"p\"\n  }, mdx(\"strong\", {\n    parentName: \"em\"\n  }, \"user_timezone_offset\")), \" is mapped to \", mdx(\"em\", {\n    parentName: \"p\"\n  }, mdx(\"strong\", {\n    parentName: \"em\"\n  }, \"timezone\")), \" field present under the \", mdx(\"em\", {\n    parentName: \"p\"\n  }, mdx(\"strong\", {\n    parentName: \"em\"\n  }, \"context\")), \" object of the event payload. This value should be passed as \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"tz\"), \" string.\\nRudder mobile SDKs populate the timezone field by itself. But for other sources like server like SDKs, HTTP api, the timezone needs to be set explicitly in every request.\")), mdx(\"p\", null, \"Example payload:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-javascript\"\n  }, \"{\\n  \\\"type\\\": \\\"track\\\",\\n  \\\"event\\\": \\\"Email Replied\\\",\\n  \\\"sentAt\\\": \\\"2020-12-02T11:30:33.262Z\\\",\\n  \\\"context\\\": {\\n    \\\"library\\\": {\\n      \\\"name\\\": \\\"analytics-node\\\",\\n      \\\"version\\\": \\\"0.0.3\\\"\\n    },\\n    \\\"timezone\\\": \\\"Asia/Kolkata\\\"\\n  },\\n  \\\"rudderId\\\": \\\"87a40cf3-f6d8-4675-bc01-7854ab4486ec\\\",\\n  \\\"_metadata\\\": {\\n    \\\"nodeVersion\\\": \\\"10.22.0\\\"\\n  },\\n  \\\"messageId\\\": \\\"node-7519b5f2fcacca521c7a9e8ddb9fc09c-c273004b-6968-422d-a511-440b6db24403\\\",\\n  \\\"properties\\\": {\\n    \\\"details\\\": \\\"list of details\\\"\\n  },\\n  \\\"anonymousId\\\": \\\"anony11111111111\\\",\\n  \\\"originalTimestamp\\\": \\\"2020-12-02T11:30:33.259Z\\\"\\n}\\n\")), mdx(\"h3\", {\n    \"id\": \"identify-1\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#identify-1\",\n    \"aria-label\": \"identify 1 permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Identify\"), mdx(\"p\", null, \"MoEngage accepts user creation time for its \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://docs.moengage.com/docs/data-import-apis#user-api\"\n  }, \"user endpoint\"), \". This is reflected as \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"first_Seen\"), \" in their dashboard.\"), mdx(\"div\", {\n    className: \"infoBlock\"\n  }, mdx(\"p\", null, \"The RudderStack transformer maps the \", mdx(\"em\", {\n    parentName: \"p\"\n  }, mdx(\"strong\", {\n    parentName: \"em\"\n  }, \"created_time\")), \" from the \", mdx(\"em\", {\n    parentName: \"p\"\n  }, mdx(\"strong\", {\n    parentName: \"em\"\n  }, \"createdAt\")), \" spec'd traits in our payload. The value should be in the \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"ISO 8601\"), \" format.\\nIf the value is not in proper format or not present, MoEngage will put in the value by itself.\")), mdx(\"p\", null, \"An example payload is as shown:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-javascript\"\n  }, \"{\\n  \\\"type\\\": \\\"identify\\\",\\n  \\\"sentAt\\\": \\\"2020-12-02T13:04:05.953Z\\\",\\n  \\\"traits\\\": {\\n    \\\"city\\\": \\\"Bangalore\\\",\\n    \\\"name\\\": \\\"lolo\\\",\\n    \\\"email\\\": \\\"lolo@website.com\\\",\\n    \\\"country\\\": \\\"India\\\",\\n    \\\"createdAt\\\": \\\"2020-12-02T12:29:53.872Z\\\"\\n  },\\n  \\\"userId\\\": \\\"111its111\\\",\\n  \\\"context\\\": {\\n    \\\"traits\\\": {\\n      \\\"city\\\": \\\"Bangalore\\\",\\n      \\\"name\\\": \\\"lolo\\\",\\n      \\\"email\\\": \\\"lolo@website.com\\\",\\n      \\\"country\\\": \\\"India\\\",\\n      \\\"createdAt\\\": \\\"2020-12-02T12:29:53.872Z\\\"\\n    },\\n    \\\"library\\\": {\\n      \\\"name\\\": \\\"analytics-node\\\",\\n      \\\"version\\\": \\\"0.0.3\\\"\\n    }\\n  },\\n  \\\"rudderId\\\": \\\"754fe90e-89fb-4d71-9d11-3ec2b91b5777\\\",\\n  \\\"_metadata\\\": {\\n    \\\"nodeVersion\\\": \\\"10.22.0\\\"\\n  },\\n  \\\"messageId\\\": \\\"node-1a585828272cf1116407aaf6be3921f2-65c1670e-f4e1-4283-a7a5-0a60825c4f83\\\",\\n  \\\"originalTimestamp\\\": \\\"2020-12-02T13:04:05.951Z\\\"\\n}\\n\")), mdx(\"h2\", {\n    \"id\": \"faqs\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#faqs\",\n    \"aria-label\": \"faqs permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"FAQs\"), mdx(\"h4\", {\n    \"id\": \"where-can-i-find-my-moengage-api-id-and-api-key\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#where-can-i-find-my-moengage-api-id-and-api-key\",\n    \"aria-label\": \"where can i find my moengage api id and api key permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), mdx(\"strong\", {\n    parentName: \"h4\"\n  }, \"Where can I find my MoEngage API ID and API KEY?\")), mdx(\"p\", null, \"You can find your MoEngage API ID and API KEY in your \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://www.moengage.com/\"\n  }, \"moengage.com\"), \" account under \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Settings\"), \" \", \">\", \" \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"APIs\"), \" \", \">\", \" \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://app.moengage.com/v3/#/settings/1/0\"\n  }, mdx(\"strong\", {\n    parentName: \"a\"\n  }, \"DATA API Settings\")), \".\"), mdx(\"h4\", {\n    \"id\": \"where-can-i-see-the-events-that-are-going-to-moengage\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#where-can-i-see-the-events-that-are-going-to-moengage\",\n    \"aria-label\": \"where can i see the events that are going to moengage permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Where can I see the events that are going to MoEngage?\"), mdx(\"p\", null, \"If your app is in debug mode then you can see under Test otherwise you can see under Live.\\nGo to For developers --\", \">\", \" Recent Events.\"), mdx(\"h2\", {\n    \"id\": \"contact-us\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#contact-us\",\n    \"aria-label\": \"contact us permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Contact Us\"), mdx(\"p\", null, \"If you come across any issues while configuring or using MoEngage with RudderStack, please feel free to \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"mailto:%20docs@rudderstack.com\"\n  }, \"contact us\"), \". You can also start a conversation in our \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://rudderstack.com/join-rudderstack-slack-community\"\n  }, \"Slack\"), \" community; we will be happy to talk to you!\"));\n}\n;\nMDXContent.isMDXComponent = true;","headings":[{"depth":1,"value":"MoEngage"},{"depth":2,"value":"Getting Started"},{"depth":2,"value":"Adding Device Mode Integration"},{"depth":2,"value":"Identify"},{"depth":3,"value":"MoEngage Reserved Properties"},{"depth":3,"value":"Identifying a Device to MoEngage"},{"depth":2,"value":"Track"},{"depth":2,"value":"Alias"},{"depth":2,"value":"Reset"},{"depth":2,"value":"Supported mappings"},{"depth":2,"value":"Configuring Push Notifications"},{"depth":2,"value":"Debugging in Web SDK"},{"depth":2,"value":"Timezone offset for cloud mode"},{"depth":3,"value":"Track"},{"depth":3,"value":"Identify"},{"depth":2,"value":"FAQs"},{"depth":4,"value":"Where can I find my MoEngage API ID and API KEY?"},{"depth":4,"value":"Where can I see the events that are going to MoEngage?"},{"depth":2,"value":"Contact Us"}]}},"pageContext":{"slug":"/docs/destinations/marketing/moengage/","next":{"label":"Home","link":"/docs/home"},"repositoryEditUrl":"","repositoryProvider":""}},
    "staticQueryHashes": ["2501019404"]}