Skip to content

Commit 40436e4

Browse files
authored
MoEngage Integration Docs (#625)
1 parent 6e6bc29 commit 40436e4

File tree

5 files changed

+379
-0
lines changed

5 files changed

+379
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,4 @@ yarn-error.log*
2626
# they're useful for development, but should always
2727
# be re-fetched from scratch in CI
2828
radar-github-releases.json
29+
/.idea

cspell.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
"mapbox",
4545
"maplibre",
4646
"mcdonalds",
47+
"moengage",
4748
"mparticle",
4849
"mpid",
4950
"multipolygon",

docs/integrations.mdx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,11 @@ Radar supports a number of server-side integrations. *Event integrations* like w
9090
<img className="logo integrations-logo" src="https://images.ctfassets.net/f2vbu16fzuly/7q9O8Y2nkjNGjalieEGug6/02a8e1d6277e5aabf4ca813b98b0998f/cordial.png"/>
9191
</TileCard>
9292
</LinkCard>
93+
<LinkCard linkTo="/integrations/moengage">
94+
<TileCard title="MoEngage">
95+
<img className="logo integrations-logo" src="https://images.ctfassets.net/f2vbu16fzuly/58YvTv1jSUwCf6W6ysYyXd/29df9b69371441fc9b0f05280cd7d5cd/Moengage_logo.png"/>
96+
</TileCard>
97+
</LinkCard>
9398
</div>
9499

95100
### Filters

docs/integrations/moengage.mdx

Lines changed: 371 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,371 @@
1+
---
2+
title: MoEngage
3+
---
4+
import Alert from "../../src/components/Alert";
5+
6+
import Tabs from "@theme/Tabs";
7+
import TabItem from "@theme/TabItem";
8+
import InlineTabs from "../../src/components/InlineTabs";
9+
import InlineTabItem from "../../src/components/InlineTabItem";
10+
11+
import DefaultContextValues from "../../src/components/DefaultContextValues";
12+
13+
<Alert alertType="info">
14+
The MoEngage integration is available on the {` `}
15+
<a href="https://radar.com/pricing" target="_blank">Enterprise plan</a>
16+
.
17+
</Alert>
18+
19+
<DefaultContextValues/>
20+
21+
Radar can send events and user attributes to [MoEngage](https://www.moengage.com/).
22+
23+
Use the MoEngage integration to send location-triggered and location-targeted messages to increase engagement and conversion.
24+
25+
## Configuration
26+
27+
On the MoEngage *APIs* page, copy both your Workspace ID and Data API Key.
28+
29+
Then, on the Radar [Integrations page](https://radar.com/dashboard/integrations#moengage) under *MoEngage*, set *Enabled* to *Yes* and paste your Workspace ID and Data API key into their respective fields. Finally, if your account is not on `https://api-01.moengage.com`, select the appropriate *API Endpoint*.
30+
31+
Whenever events are generated, Radar will send custom events and user attributes to MoEngage.
32+
33+
Set `metadata[moengage:customer_id]` to map Radar users to their respective MoEngage User. For example:
34+
35+
<Tabs
36+
groupId="moengage-radar"
37+
defaultValue="swift"
38+
values={[
39+
{ label: 'Swift', value: 'swift' },
40+
{ label: 'Kotlin', value: 'kotlin' }
41+
]}
42+
>
43+
<TabItem value="swift">
44+
45+
```swift
46+
Radar.setMetadata(["moengage:customer_id": "[email protected]"])
47+
```
48+
49+
</TabItem>
50+
<TabItem value="kotlin">
51+
52+
```kotlin
53+
Radar.setMetadata(JSONObject().put("moengage:customer_id", "[email protected]"))
54+
```
55+
56+
</TabItem>
57+
</Tabs>
58+
59+
## User mapping
60+
61+
Radar User Field | MoEngage User Attribute | Type | Example Value | Context Type
62+
--- | --- | --- | --- | ---
63+
`metadata[moengage:customer_id]` | `ID` | string | `"[email protected]"` |
64+
`_id` | `radar_id` | string | `"5b2c0906f5874b001aecfd8d"` |
65+
`locationAuthorization` | `radar_location_authorization` | string | `"GRANTED_FOREGROUND"` |
66+
`locationAccuracyAuthorization` | `radar_location_accuracy_authorization` | string | `"FULL"` |
67+
`updatedAt` | `radar_updated_at` | timestamp | `"25 Jul 2025, 10:36:17 am"` |
68+
`segments[*].externalId` | `radar_segment_external_ids` | array[string] | `["starbucks-visitors"]` |
69+
`topChains[*].slug` | `radar_top_chain_slugs` | array[string] | `["starbucks", "walmart"]` |
70+
`topChains[*].externalId` | `radar_top_chain_external_ids` | array[string] | `["123", "456"]` |
71+
`geofences[*]._id` | `radar_geofence_ids` | array[string] | `["5b2c0906f5874b001aecfd8e"]` | [Geofences](/geofences)
72+
`geofences[*].description` | `radar_geofence_descriptions` | array[string] | `["Store #123"]` | [Geofences](/geofences)
73+
`geofences[*].tag` | `radar_geofence_tags` | array[string] | `["store"]` | [Geofences](/geofences)
74+
`geofences[*].externalId` | `radar_geofence_external_ids` | array[string] | `["123"]` | [Geofences](/geofences)
75+
`place._id` | `radar_place_id` | string | `"59302bcf8f27e8a156bd4f91"` | [Places](/places)
76+
`place.name` | `radar_place_name` | string | `"Starbucks"` | [Places](/places)
77+
`place.categories` | `radar_place_categories` | array[string] | `["food-beverage", "cafe", "coffee-shop"]` | [Places](/places)
78+
`place.chain.slug` | `radar_place_chain_id` | string | `"starbucks"` | [Places](/places)
79+
`place.chain.name` | `radar_place_chain_name` | string | `"Starbucks"` | [Places](/places)
80+
`country.code` | `radar_region_country_code` | string | `"US"` | [Regions](/regions)
81+
`country.name` | `radar_region_country_name` | string | `"United States"` | [Regions](/regions)
82+
`state.code` | `radar_region_state_code` | string | `"MD"` | [Regions](/regions)
83+
`state.name` | `radar_region_state_name` | string | `"Maryland"` | [Regions](/regions)
84+
`dma.code` | `radar_region_dma_code` | string | `"26"` | [Regions](/regions)
85+
`dma.name` | `radar_region_dma_name` | string | `"Baltimore"` | [Regions](/regions)
86+
`postalCode.code` | `radar_region_postal_code` | string | `"21014"` | [Regions](/regions)
87+
`trip.externalId` | `radar_trip_external_id` | string | `"299"` | [Trips](/trip-tracking)
88+
`trip.destinationGeofenceTag` | `radar_trip_destination_geofence_tag` | string | `"store"` | [Trips](/trip-tracking)
89+
`trip.destinationGeofenceExternalId` | `radar_trip_destination_geofence_external_id` | string | `"123"` | [Trips](/trip-tracking)
90+
`beacons[*]._id` | `radar_beacon_ids` | array[string] | `["5b2c0906f5874b001aecfd8f]"` | [Beacons](/beacons)
91+
`beacons[*].description` | `radar_beacon_descriptions` | array[string] | `["Store #123 - Drive-Thru"]` | [Beacons](/beacons)
92+
`beacons[*].tag` | `radar_beacon_tags` | array[string] | `["drive-thru"]` | [Beacons](/beacons)
93+
`beacons[*].externalId` | `radar_beacon_external_ids` | array[string] | `["123"]` | [Beacons](/beacons)
94+
95+
## Event mapping
96+
97+
Radar Event | Context Type | MoEngage Event
98+
--- | --- | ---
99+
`user.entered_geofence` | [Geofences](/geofences) | `[Radar] Geofence Entered`
100+
`user.exited_geofence` | [Geofences](/geofences) | `[Radar] Geofence Exited`
101+
`user.dwelled_in_geofence` | [Geofences](/geofences) | `[Radar] Dwelled in Geofence`
102+
`user.entered_place` | [Places](/places) | `[Radar] Place Entered`
103+
`user.exited_place` | [Places](/places) | `[Radar] Place Exited`
104+
`user.entered_region_country` | [Regions](/regions) | `[Radar] Country Entered`
105+
`user.exited_region_country` | [Regions](/regions) | `[Radar] Country Exited`
106+
`user.entered_region_state` | [Regions](/regions) | `[Radar] State Entered`
107+
`user.exited_region_state` | [Regions](/regions) | `[Radar] State Exited`
108+
`user.entered_region_dma` | [Regions](/regions) | `[Radar] DMA Entered`
109+
`user.exited_region_dma` | [Regions](/regions) | `[Radar] DMA Exited`
110+
`user.started_trip` | [Trip Tracking](/trip-tracking) | `[Radar] Started Trip`
111+
`user.updated_trip` | [Trip Tracking](/trip-tracking) | `[Radar] Updated Trip`
112+
`user.approaching_trip_destination` | [Trip Tracking](/trip-tracking) | `[Radar] Approaching Trip Destination`
113+
`user.arrived_at_trip_destination` | [Trip Tracking](/trip-tracking) | `[Radar] Arrived at Trip Destination`
114+
`user.stopped_trip` | [Trip Tracking](/trip-tracking) | `[Radar] Stopped Trip`
115+
`user.entered_beacon` | [Beacons](/beacons) | `[Radar] Beacon Entered`
116+
`user.exited_beacon` | [Beacons](/beacons) | `[Radar] Beacon Exited`
117+
118+
### &lbrack;Radar&rbrack; Geofence Entered
119+
120+
Radar Event Field | MoEngage Event Property | Type | Example Value
121+
--- | --- | --- | ---
122+
`geofence._id` | `geofence_id` | string | `"5b2c0906f5874b001aecfd8e"`
123+
`geofence.description` | `geofence_description` | string | `"Store #123"`
124+
`geofence.tag` | `geofence_tag` | string | `"store"`
125+
`geofence.externalId` | `geofence_external_id` | string | `"123"`
126+
`geofence.metadata[{key}]` | `geofence_metadata_{key}` | {type} | `{value}`
127+
`confidence` | `confidence` | string | `"high"`
128+
`foreground` | `foreground` | boolean | `true`
129+
130+
If [Regions](/regions) is enabled, Radar will also send the following attributes:
131+
132+
Radar Event Field | MoEngage Event Property | Type | Example Value
133+
--- | --- | --- | ---
134+
`country.code` | `country_code` | string | `"US"`
135+
`country.name` | `country_name` | string | `"United States"`
136+
`state.code` | `state_code` | string | `"MD"`
137+
`state.name` | `state_name` | string | `"Maryland"`
138+
`dma.code` | `dma_code` | string | `"26"`
139+
`dma.name` | `dma_name` | string | `"Baltimore"`
140+
`postalCode.code` | `postal_code` | string | `"21014"`
141+
142+
### &lbrack;Radar&rbrack; Geofence Exited
143+
144+
Radar Event Field | MoEngage Event Property | Type | Example Value
145+
--- | --- | --- | ---
146+
`geofence._id` | `geofence_id` | string | `"5b2c0906f5874b001aecfd8e"`
147+
`geofence.description` | `geofence_description` | string | `"Store #123"`
148+
`geofence.tag` | `geofence_tag` | string | `"store"`
149+
`geofence.externalId` | `geofence_external_id` | string | `"123"`
150+
`geofence.metadata[{key}]` | `geofence_metadata_{key}` | {type} | `{value}`
151+
`confidence` | `confidence` | string | `"high"`
152+
`duration` | `duration` | number (minutes) | `42.1`
153+
`foreground` | `foreground` | boolean | `true`
154+
155+
If [Regions](/regions) is enabled, Radar will also send the following attributes:
156+
157+
Radar Event Field | MoEngage Event Property | Type | Example Value
158+
--- | --- | --- | ---
159+
`country.code` | `country_code` | string | `"US"`
160+
`country.name` | `country_name` | string | `"United States"`
161+
`state.code` | `state_code` | string | `"MD"`
162+
`state.name` | `state_name` | string | `"Maryland"`
163+
`dma.code` | `dma_code` | string | `"26"`
164+
`dma.name` | `dma_name` | string | `"Baltimore"`
165+
`postalCode.code` | `postal_code` | string | `"21014"`
166+
167+
### &lbrack;Radar&rbrack; Dwelled in Geofence
168+
169+
Radar Event Field | MoEngage Event Property | Type | Example Value
170+
--- | --- | --- | ---
171+
`geofence._id` | `geofence_id` | string | `"5b2c0906f5874b001aecfd8e"`
172+
`geofence.description` | `geofence_description` | string | `"Store #123"`
173+
`geofence.tag` | `geofence_tag` | string | `"store"`
174+
`geofence.externalId` | `geofence_external_id` | string | `"123"`
175+
`geofence.metadata[{key}]` | `geofence_metadata_{key}` | {type} | `{value}`
176+
`confidence` | `confidence` | string | `"high"`
177+
`duration` | `duration` | number (minutes) | `5`
178+
`foreground` | `foreground` | boolean | `true`
179+
180+
If [Regions](/regions) is enabled, Radar will also send the following attributes:
181+
182+
Radar Event Field | MoEngage Event Property | Type | Example Value
183+
--- | --- | --- | ---
184+
`country.code` | `country_code` | string | `"US"`
185+
`country.name` | `country_name` | string | `"United States"`
186+
`state.code` | `state_code` | string | `"MD"`
187+
`state.name` | `state_name` | string | `"Maryland"`
188+
`dma.code` | `dma_code` | string | `"26"`
189+
`dma.name` | `dma_name` | string | `"Baltimore"`
190+
`postalCode.code` | `postal_code` | string | `"21014"`
191+
192+
### &lbrack;Radar&rbrack; Place Entered
193+
194+
Radar Event Field | MoEngage Event Property | Type | Example Value
195+
--- | --- | --- | ---
196+
`place._id` | `place_id` | string | `"59302bcf8f27e8a156bd4f91"`
197+
`place.name` | `place_name` | string | `"Starbucks"`
198+
`place.chain.slug` | `place_chain_id` | string | `"starbucks"`
199+
`place.chain.name` | `place_chain_name` | string | `"Starbucks"`
200+
`place.chain.externalId` | `place_chain_external_id` | string | `"123"`
201+
`place.chain.metadata[{key}]` | `place_chain_metadata_{key}` | {type} | `{value}`
202+
`place.categories` | `place_categories` | string (comma-separated) | `"food-beverage,cafe,coffee-shop"`
203+
`confidence` | `confidence` | string | `"high"`
204+
`foreground` | `foreground` | boolean | `true`
205+
206+
If [Regions](/regions) is enabled, Radar will also send the following attributes:
207+
208+
Radar Event Field | MoEngage Event Property | Type | Example Value
209+
--- | --- | --- | ---
210+
`country.code` | `country_code` | string | `"US"`
211+
`country.name` | `country_name` | string | `"United States"`
212+
`state.code` | `state_code` | string | `"MD"`
213+
`state.name` | `state_name` | string | `"Maryland"`
214+
`dma.code` | `dma_code` | string | `"26"`
215+
`dma.name` | `dma_name` | string | `"Baltimore"`
216+
`postalCode.code` | `postal_code` | string | `"21014"`
217+
218+
### &lbrack;Radar&rbrack; Place Exited
219+
220+
Radar Event Field | MoEngage Event Property | Type | Example Value
221+
--- | --- | --- | ---
222+
`place._id` | `place_id` | string | `"59302bcf8f27e8a156bd4f91"`
223+
`place.name` | `place_name` | string | `"Starbucks"`
224+
`place.chain.slug` | `place_chain_id` | string | `"starbucks"`
225+
`place.chain.name` | `place_chain_name` | string | `"Starbucks"`
226+
`place.chain.externalId` | `place_chain_external_id` | string | `"123"`
227+
`place.chain.metadata[{key}]` | `place_chain_metadata_{key}` | {type} | `{value}`
228+
`place.categories` | `place_categories` | string (comma-separated) | `"food-beverage,cafe,coffee-shop"`
229+
`confidence` | `confidence` | string | `"high"`
230+
`duration` | `duration` | number (minutes) | `42.1`
231+
`foreground` | `foreground` | boolean | `true`
232+
233+
If [Regions](/regions) is enabled, Radar will also send the following attributes:
234+
235+
Radar Event Field | MoEngage Event Property | Type | Example Value
236+
--- | --- | --- | ---
237+
`country.code` | `country_code` | string | `"US"`
238+
`country.name` | `country_name` | string | `"United States"`
239+
`state.code` | `state_code` | string | `"MD"`
240+
`state.name` | `state_name` | string | `"Maryland"`
241+
`dma.code` | `dma_code` | string | `"26"`
242+
`dma.name` | `dma_name` | string | `"Baltimore"`
243+
`postalCode.code` | `postal_code` | string | `"21014"`
244+
245+
### &lbrack;Radar&rbrack; Country Entered
246+
247+
Radar Event Field | MoEngage Event Property | Type | Example Value
248+
--- | --- | --- | ---
249+
`region.code` | `region_code` | string | `"US"`
250+
`region.name` | `region_name` | string | `"United States"`
251+
`confidence` | `confidence` | string | `"high"`
252+
`foreground` | `foreground` | boolean | `true`
253+
254+
### &lbrack;Radar&rbrack; Country Exited
255+
256+
Radar Event Field | MoEngage Event Property | Type | Example Value
257+
--- | --- | --- | ---
258+
`region.code` | `region_code` | string | `"US"`
259+
`region.name` | `region_name` | string | `"United States"`
260+
`confidence` | `confidence` | string | `"high"`
261+
`foreground` | `foreground` | boolean | `true`
262+
263+
### &lbrack;Radar&rbrack; State Entered
264+
265+
Radar Event Field | MoEngage Event Property | Type | Example Value
266+
--- | --- | --- | ---
267+
`region.code` | `region_code` | string | `"MD"`
268+
`region.name` | `region_name` | string | `"Maryland"`
269+
`confidence` | `confidence` | string | `"high"`
270+
`foreground` | `foreground` | boolean | `true`
271+
272+
### &lbrack;Radar&rbrack; State Exited
273+
274+
Radar Event Field | MoEngage Event Property | Type | Example Value
275+
--- | --- | --- | ---
276+
`region.code` | `region_code` | string | `"MD"`
277+
`region.name` | `region_name` | string | `"Maryland"`
278+
`confidence` | `confidence` | string | `"high"`
279+
`foreground` | `foreground` | boolean | `true`
280+
281+
### &lbrack;Radar&rbrack; DMA Entered
282+
283+
Radar Event Field | MoEngage Event Property | Type | Example Value
284+
--- | --- | --- | ---
285+
`region.code` | `region_code` | string | `"26"`
286+
`region.name` | `region_name` | string | `"Baltimore"`
287+
`confidence` | `confidence` | string | `"high"`
288+
`foreground` | `foreground` | boolean | `true`
289+
290+
### &lbrack;Radar&rbrack; DMA Exited
291+
292+
Radar Event Field | MoEngage Event Property | Type | Example Value
293+
--- | --- | --- | ---
294+
`region.code` | `region_code` | string | `"26"`
295+
`region.name` | `region_name` | string | `"Baltimore"`
296+
`confidence` | `confidence` | string | `"high"`
297+
`foreground` | `foreground` | boolean | `true`
298+
299+
### &lbrack;Radar&rbrack; Started Trip
300+
301+
Radar Event Attribute | MoEngage Event Property | Type | Example Value
302+
--- | --- | --- | ---
303+
`trip.externalId` | `trip_external_id` | string | `"299"`
304+
`trip.metadata[{key}]` | `trip_metadata_{key}` | {type} | `{value}`
305+
`trip.destinationGeofenceTag` | `trip_destination_geofence_tag` | string | `"store"`
306+
`trip.destinationGeofenceExternalId` | `trip_destination_geofence_external_id` | string | `"123"`
307+
`foreground` | `foreground` | boolean | `true`
308+
309+
### &lbrack;Radar&rbrack; Updated Trip
310+
311+
Radar Event Attribute | MoEngage Event Property | Type | Example Value
312+
--- | --- | --- | ---
313+
`trip.externalId` | `trip_external_id` | string | `"299"`
314+
`trip.metadata[{key}]` | `trip_metadata_{key}` | {type} | `{value}`
315+
`trip.destinationGeofenceTag` | `trip_destination_geofence_tag` | string | `"store"`
316+
`trip.destinationGeofenceExternalId` | `trip_destination_geofence_external_id` | string | `"123"`
317+
`foreground` | `foreground` | boolean | `true`
318+
319+
### &lbrack;Radar&rbrack; Approaching Trip Destination
320+
321+
Radar Event Attribute | MoEngage Event Property | Type | Example Value
322+
--- | --- | --- | ---
323+
`trip.externalId` | `trip_external_id` | string | `"299"`
324+
`trip.metadata[{key}]` | `trip_metadata_{key}` | {type} | `{value}`
325+
`trip.destinationGeofenceTag` | `trip_destination_geofence_tag` | string | `"store"`
326+
`trip.destinationGeofenceExternalId` | `trip_destination_geofence_external_id` | string | `"123"`
327+
`foreground` | `foreground` | boolean | `true`
328+
329+
### &lbrack;Radar&rbrack; Arrived at Trip Destination
330+
331+
Radar Event Attribute | MoEngage Event Property | Type | Example Value
332+
--- | --- | --- | ---
333+
`trip.externalId` | `trip_external_id` | string | `"299"`
334+
`trip.metadata[{key}]` | `trip_metadata_{key}` | {type} | `{value}`
335+
`trip.destinationGeofenceTag` | `trip_destination_geofence_tag` | string | `"store"`
336+
`trip.destinationGeofenceExternalId` | `trip_destination_geofence_external_id` | string | `"123"`
337+
`foreground` | `foreground` | boolean | `true`
338+
339+
### &lbrack;Radar&rbrack; Stopped Trip
340+
341+
Radar Event Attribute | MoEngage Event Property | Type | Example Value
342+
--- | --- | --- | ---
343+
`trip.externalId` | `trip_external_id` | string | `"299"`
344+
`trip.metadata[{key}]` | `trip_metadata_{key}` | {type} | `{value}`
345+
`trip.destinationGeofenceTag` | `trip_destination_geofence_tag` | string | `"store"`
346+
`trip.destinationGeofenceExternalId` | `trip_destination_geofence_external_id` | string | `"123"`
347+
`foreground` | `foreground` | boolean | `true`
348+
349+
### &lbrack;Radar&rbrack; Beacon Entered
350+
351+
Radar Event Attribute | MoEngage Event Property | Type | Example Value
352+
--- | --- | --- | ---
353+
`beacon._id` | `beacon_id` | string | `"5b2c0906f5874b001aecfd8f"`
354+
`beacon.description` | `radar_beacon_description` | string | `"Store #123 - Drive-Thru"`
355+
`beacon.tag` | `radar_beacon_tag` | string | `"drive-thru"`
356+
`beacon.externalId` | `radar_beacon_external_id` | string | `"123"`
357+
`beacon.metadata[{key}]` | `radar_beacon_metadata_{key}` | {type} | `{value}`
358+
`confidence` | `confidence` | string | `"high"`
359+
`foreground` | `foreground` | boolean | `true`
360+
361+
### &lbrack;Radar&rbrack; Beacon Exited
362+
363+
Radar Event Attribute | MoEngage Event Property | Type | Example Value
364+
--- | --- | --- | ---
365+
`beacon._id` | `beacon_id` | string | `"5b2c0906f5874b001aecfd8f"`
366+
`beacon.description` | `radar_beacon_description` | string | `"Store #123 - Drive-Thru"`
367+
`beacon.tag` | `radar_beacon_tag` | string | `"drive-thru"`
368+
`beacon.externalId` | `radar_beacon_external_id` | string | `"123"`
369+
`beacon.metadata[{key}]` | `radar_beacon_metadata_{key}` | {type} | `{value}`
370+
`confidence` | `confidence` | string | `"high"`
371+
`foreground` | `foreground` | boolean | `true`

0 commit comments

Comments
 (0)