Retail and
Hospitality

Trusted by

Responsive Image
Responsive Image
Responsive Image
Rethink your indoor customer experience with data and tools provided by real-time indoor positioning.
Attract more customers and make spaces more profitable and safe. With our indoor positioning and navigation systems powered by Bluetooth Low Energy, you unlock unprecedented opportunities for your omnichannel customer experience.
Our product delivers excellent performance and accuracy, whether your space has high ceilings, thick walls, or high crowding. We accomplish this with our advanced signal filtering algorithm without significantly increasing beacon density.
What you’ll get
SYSTEM INTEGRATION
Use location data collected in any external system (ERP, MES, WMS), thanks to simple integration via APIs.
SEAMLESS INDOOR AND OUTDOOR POSITIONING
Switch smoothly from indoor to outdoor maps when the user or the asset transits into an outdoor area.
GEO-REFERENCED POSITIONING DATA
Collect, aggregate and store positions to provide analytics and insights.
Enrich customer experience
Drive targeted traffic in-store with proximity marketing features, engage customers and gain new insights for your marketing campaigns.
placeholder
Proximity-based notifications
Throw an event or notifications when a customer enters an area.
placeholder
Navigation
Help customers reach a store or point of interest within a store using a map with indoor GPS accurate up to 1.5m (3ft).
placeholder
Custom paths
Let your customers create a shopping list and provide custom paths to reach products easily and quickly.
placeholder
Retargeting
See which products customers interact with and retarget them with custom personalized messages.
Redesign and optimize use of space
Redesign spaces to delight your customers and boost sales by leveraging real-time data up to shelf level.
crowd-levels-r
Real-time crowd monitoring
Collect real-time data about your customers to gain insights and predict queues.
Increase security and provide emergency support
Mitigate risks by enhancing security and providing more informed emergency support thanks to RTLS.
placeholder
Facility services control
Improve control over cleaning and maintenance activities, monitoring presence and time spent by the staff.
placeholder
People tracking
Track employees and authorized staff members for service purposes, restricted areas access control and security.
placeholder
Real Time Monitoring
Locate employees or critical assets to respond to emergencies and provide rapid response.

See case studies

Si è verificato un errore nell'elaborarazione del modello.
The following has evaluated to null or missing:
==> friendlyURLs[themeDisplay.getLanguageId()]  [in template "20100#20127#48947" at line 6, column 85]

----
Tip: It's the final [] step that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: ${friendlyURLs[themeDisplay.getLangua...  [in template "20100#20127#48947" at line 6, column 83]
----
1<div class="nextome-case-study-${randomNamespace}"> 
2	<div class="nextome-body1">CASE STUDY</div> 
3  <div class="nextome-heading4b"><#if (NxtNameCaseStudy.getData())??>${NxtNameCaseStudy.getData()}</#if></div> 
4  <div class="nextome-subtitle1sb"><#if (NxtDescCaseStudy.getData())??>${NxtDescCaseStudy.getData()}</#if></div> 
5  <div class="nextome-button1"> 
6		<a class="nextome-txt-primary-active" data-senna-off="true" href="${friendlyURLs[themeDisplay.getLanguageId()]?replace('/web/guest', '')!""}"> 
7			<span>READ MORE</span> 
8			<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">  
9      	<path d="M12 4L10.59 5.41L16.17 11H4V13H16.17L10.59 18.59L12 20L20 12L12 4Z" fill="#05D9AA"></path>  
10      </svg> 
11		</a> 
12	</div> 
13  <div class="nextome-case-study-image"> 
14		<#if (NxtImgCaseStudy.getData())?? && NxtImgCaseStudy.getData() != ""> 
15			<img alt="${NxtImgCaseStudy.getAttribute("alt")}" data-fileentryid="${NxtImgCaseStudy.getAttribute("fileEntryId")}" src="${NxtImgCaseStudy.getData()}" /> 
16		</#if> 
17  </div> 
18</div> 
19<style> 
20		.nextome-case-study-${randomNamespace} { 
21        display: flex; 
22        flex-direction: column; 
23        align-items: flex-start; 
24        padding: clamp(1rem, 2.5vw, 2rem); 
25        background: #FFFFFF; 
26        box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25); 
27        border-radius: 30px; 
28        margin: clamp(.5rem, 2vw, 1.5rem); 
29
30     
31    .nextome-case-study-${randomNamespace} div:not(:last-child) { 
32        margin-bottom: clamp(1rem, 3vw, 2rem); 
33
34     
35    .nextome-case-study-${randomNamespace} div:nth-child(2) { 
36        margin-bottom: .5rem; 
37
38     
39    .nextome-case-study-${randomNamespace} img { 
40        border-radius: 1.5rem; 
41				aspect-ratio: 5 / 4; 
42				object-fit: cover; 
43
44     
45    .nextome-case-study-${randomNamespace} a:hover { 
46        text-decoration: none; 
47				color: #10303b; 
48
49		     
50    .nextome-case-study-${randomNamespace} a:hover svg path { 
51				fill: #10303b; 
52
53		 
54		.nextome-case-study-${randomNamespace} .nextome-heading4b { 
55			display: -webkit-box; 
56			-webkit-line-clamp: 1; 
57			-webkit-box-orient: vertical;   
58			overflow: hidden; 
59
60		 
61		.nextome-case-study-${randomNamespace} .nextome-subtitle1sb { 
62			min-height: clamp(50px, 15vw, 116px); 
63			display: -webkit-box; 
64			-webkit-line-clamp: 4; 
65			-webkit-box-orient: vertical;   
66			overflow: hidden; 
67
68</style> 
Si è verificato un errore nell'elaborarazione del modello.
The following has evaluated to null or missing:
==> friendlyURLs[themeDisplay.getLanguageId()]  [in template "20100#20127#48947" at line 6, column 85]

----
Tip: It's the final [] step that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: ${friendlyURLs[themeDisplay.getLangua...  [in template "20100#20127#48947" at line 6, column 83]
----
1<div class="nextome-case-study-${randomNamespace}"> 
2	<div class="nextome-body1">CASE STUDY</div> 
3  <div class="nextome-heading4b"><#if (NxtNameCaseStudy.getData())??>${NxtNameCaseStudy.getData()}</#if></div> 
4  <div class="nextome-subtitle1sb"><#if (NxtDescCaseStudy.getData())??>${NxtDescCaseStudy.getData()}</#if></div> 
5  <div class="nextome-button1"> 
6		<a class="nextome-txt-primary-active" data-senna-off="true" href="${friendlyURLs[themeDisplay.getLanguageId()]?replace('/web/guest', '')!""}"> 
7			<span>READ MORE</span> 
8			<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">  
9      	<path d="M12 4L10.59 5.41L16.17 11H4V13H16.17L10.59 18.59L12 20L20 12L12 4Z" fill="#05D9AA"></path>  
10      </svg> 
11		</a> 
12	</div> 
13  <div class="nextome-case-study-image"> 
14		<#if (NxtImgCaseStudy.getData())?? && NxtImgCaseStudy.getData() != ""> 
15			<img alt="${NxtImgCaseStudy.getAttribute("alt")}" data-fileentryid="${NxtImgCaseStudy.getAttribute("fileEntryId")}" src="${NxtImgCaseStudy.getData()}" /> 
16		</#if> 
17  </div> 
18</div> 
19<style> 
20		.nextome-case-study-${randomNamespace} { 
21        display: flex; 
22        flex-direction: column; 
23        align-items: flex-start; 
24        padding: clamp(1rem, 2.5vw, 2rem); 
25        background: #FFFFFF; 
26        box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25); 
27        border-radius: 30px; 
28        margin: clamp(.5rem, 2vw, 1.5rem); 
29
30     
31    .nextome-case-study-${randomNamespace} div:not(:last-child) { 
32        margin-bottom: clamp(1rem, 3vw, 2rem); 
33
34     
35    .nextome-case-study-${randomNamespace} div:nth-child(2) { 
36        margin-bottom: .5rem; 
37
38     
39    .nextome-case-study-${randomNamespace} img { 
40        border-radius: 1.5rem; 
41				aspect-ratio: 5 / 4; 
42				object-fit: cover; 
43
44     
45    .nextome-case-study-${randomNamespace} a:hover { 
46        text-decoration: none; 
47				color: #10303b; 
48
49		     
50    .nextome-case-study-${randomNamespace} a:hover svg path { 
51				fill: #10303b; 
52
53		 
54		.nextome-case-study-${randomNamespace} .nextome-heading4b { 
55			display: -webkit-box; 
56			-webkit-line-clamp: 1; 
57			-webkit-box-orient: vertical;   
58			overflow: hidden; 
59
60		 
61		.nextome-case-study-${randomNamespace} .nextome-subtitle1sb { 
62			min-height: clamp(50px, 15vw, 116px); 
63			display: -webkit-box; 
64			-webkit-line-clamp: 4; 
65			-webkit-box-orient: vertical;   
66			overflow: hidden; 
67
68</style> 
Si è verificato un errore nell'elaborarazione del modello.
The following has evaluated to null or missing:
==> friendlyURLs[themeDisplay.getLanguageId()]  [in template "20100#20127#48947" at line 6, column 85]

----
Tip: It's the final [] step that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: ${friendlyURLs[themeDisplay.getLangua...  [in template "20100#20127#48947" at line 6, column 83]
----
1<div class="nextome-case-study-${randomNamespace}"> 
2	<div class="nextome-body1">CASE STUDY</div> 
3  <div class="nextome-heading4b"><#if (NxtNameCaseStudy.getData())??>${NxtNameCaseStudy.getData()}</#if></div> 
4  <div class="nextome-subtitle1sb"><#if (NxtDescCaseStudy.getData())??>${NxtDescCaseStudy.getData()}</#if></div> 
5  <div class="nextome-button1"> 
6		<a class="nextome-txt-primary-active" data-senna-off="true" href="${friendlyURLs[themeDisplay.getLanguageId()]?replace('/web/guest', '')!""}"> 
7			<span>READ MORE</span> 
8			<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">  
9      	<path d="M12 4L10.59 5.41L16.17 11H4V13H16.17L10.59 18.59L12 20L20 12L12 4Z" fill="#05D9AA"></path>  
10      </svg> 
11		</a> 
12	</div> 
13  <div class="nextome-case-study-image"> 
14		<#if (NxtImgCaseStudy.getData())?? && NxtImgCaseStudy.getData() != ""> 
15			<img alt="${NxtImgCaseStudy.getAttribute("alt")}" data-fileentryid="${NxtImgCaseStudy.getAttribute("fileEntryId")}" src="${NxtImgCaseStudy.getData()}" /> 
16		</#if> 
17  </div> 
18</div> 
19<style> 
20		.nextome-case-study-${randomNamespace} { 
21        display: flex; 
22        flex-direction: column; 
23        align-items: flex-start; 
24        padding: clamp(1rem, 2.5vw, 2rem); 
25        background: #FFFFFF; 
26        box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25); 
27        border-radius: 30px; 
28        margin: clamp(.5rem, 2vw, 1.5rem); 
29
30     
31    .nextome-case-study-${randomNamespace} div:not(:last-child) { 
32        margin-bottom: clamp(1rem, 3vw, 2rem); 
33
34     
35    .nextome-case-study-${randomNamespace} div:nth-child(2) { 
36        margin-bottom: .5rem; 
37
38     
39    .nextome-case-study-${randomNamespace} img { 
40        border-radius: 1.5rem; 
41				aspect-ratio: 5 / 4; 
42				object-fit: cover; 
43
44     
45    .nextome-case-study-${randomNamespace} a:hover { 
46        text-decoration: none; 
47				color: #10303b; 
48
49		     
50    .nextome-case-study-${randomNamespace} a:hover svg path { 
51				fill: #10303b; 
52
53		 
54		.nextome-case-study-${randomNamespace} .nextome-heading4b { 
55			display: -webkit-box; 
56			-webkit-line-clamp: 1; 
57			-webkit-box-orient: vertical;   
58			overflow: hidden; 
59
60		 
61		.nextome-case-study-${randomNamespace} .nextome-subtitle1sb { 
62			min-height: clamp(50px, 15vw, 116px); 
63			display: -webkit-box; 
64			-webkit-line-clamp: 4; 
65			-webkit-box-orient: vertical;   
66			overflow: hidden; 
67
68</style> 
Ciao Be the first to know the latest news about indoor positioning.
Sign up for our newsletter and receive insights and opportunities on this growing market.
By submitting this information, I agree to Nextome's Privacy Policy