Building a Self Guided Tour That Actually Works
You want to put together a self-guided tour for a city block, a trail, or a historic district. I went through this process for a municipal heritage commission last year. They wanted a walking route with GPS-triggered audio stops. Three months later, after two failed pilot runs and a lot of frustration, we had something people actually finished without getting lost or confused. Here is how the whole thing lands. It is an experience where the participant navigates independently while receiving guided information at specific moments. The guidance comes through a phone app, a website, a dedicated audio device, or sometimes just a printed map with coordinates and a QR code. The core mechanic is simple: the user arrives at a location, the system recognizes they are there, and it delivers the next piece of content. Everything beyond that is infrastructure. The thing nobody tells you about building these is that the content is the easy part. Writing the scripts, recording the audio, getting the permits, mapping the stops. The hard part is the delivery layer. The trigger logic. The thing that decides when a person standing near a fountain should hear the story about the fountain and not the story about the bakery three blocks away.
The Tools You Actually Need
There are two approaches and they serve very different use cases. The first is a no-code platform like GPSmyCity, WithGPX, or TourCreator. These let you plot points on a map, attach audio files or text, and generate a shareable link. A project like this takes maybe a day to assemble if you already have the content ready. The output works well for casual visitors. It is not robust under pressure. The second approach is building your own trigger system using something like Mapbox GL JS paired with a geofencing library. This gives you precise control over trigger radius, hysteresis, and offline caching. The downside is that you need someone who actually knows how to write a JavaScript file that does not crash when the GPS chip decides to report your location as three hundred meters off course, which it will do. I recommend starting with the no-code platforms unless you have a reason to build custom. Most people asking for a self guided tour do not have a reason to build custom. They have a brochure and a budget and a deadline.
Choosing Your Trigger Method
GPS triggering is the default. It is also the most unreliable method by far. Urban canyons, tree cover, cheap phone hardware — these all make GPS bounce around. A stop might trigger three times as someone walks past it. Or it might not trigger at all because the geofence radius is set too tight and the phone is drifting. Beacons are the alternative. Bluetooth Low Energy beacons placed at each stop give you sub-meter accuracy and work indoors where GPS goes to die. The catch is that you have to physically install them, which means permissions, mounting locations, power sources, and a budget that usually makes site managers uncomfortable. A single BLE beacon runs about forty dollars. A ten-stop tour is four hundred dollars in hardware before you write a single line of content. QR code triggers are the third option. You print a small card and tape it to a wall or post it on a kiosk. The user scans it and the next stop plays. This is the least elegant solution and it is also the most bulletproof. If the user can scan the code, the content plays. No GPS arguments. No beacon maintenance. The trade-off is that you have to ask people to actively perform an action instead of letting the system do it passively, and that introduces friction that causes dropoff rates to climb somewhere around fifteen to twenty percent.
Get the Full Details

My actual recommendation depends on your site. If it is an outdoor trail with clear visibility, GPS with a generous trigger radius works fine. If it is an indoor museum or a dense downtown corridor, go QR codes unless you have funding for beacons.
How to Plan the Route
Start with the content, not the map. I know this is backwards from how most people approach it. You need to know what stories you are telling before you decide where those stories live. Write a first draft of every stop script. Record rough audio if you can. Then take the scripts and find physical locations that match them. This is where most projects go sideways because people plot ten stops on a map and only realize after the fact that stop three and stop four are on opposite sides of a one-way street with no crosswalk, or that the trail between stop five and stop six is a steep embankment that would exclude anyone with mobility issues. Walk the full route yourself. At a normal pace. Not a fast pace, not a photo-stop pace. A normal walking pace. Time it. Note where cell service drops. Note where the route becomes ambiguous and a person might turn the wrong way. A self guided tour fails most often at decision points, not at the stops themselves. If someone turns left at an intersection when they should have turned right, they are now three blocks away from the next trigger and the whole experience unravels. Build in a safety margin at every junction. The route should be obvious. If a person with no spatial awareness and a dead phone battery could still follow it, you have designed it correctly. I spent a full afternoon re-routing a commission project because the original plan crossed a railroad median with no pedestrian bridge. The GPS worked fine there. The people did not.
Setting Trigger Radius and Hysteresis
If you are using GPS triggering, the radius setting is where things break. A radius that is too small means the trigger fires inconsistently. A radius that is too large means the trigger fires too early and you get content at the wrong place. Ten meters is a reasonable starting point for open areas. Twenty meters if you are in a built-up environment. Hysteresis is the feature that actually saves you. Without hysteresis, a trigger fires the moment you enter the geofence and fires again the moment you leave it, which means if someone loiters near a stop they get the same audio repeated. Hysteresis adds a secondary boundary so that the trigger only resets when you move a significant distance away from the point. A good rule of thumb is to set the hysteresis exit point at roughly double your trigger radius. This keeps the system from re-triggering on minor GPS drift while still allowing a replay if someone actually walks away and comes back. I had a specific problem with this on a riverfront tour last spring. The trigger for stop seven was sitting right next to a steel bridge. The magnetic interference from the bridge structure was causing the phone GPS to jitter by eight to twelve meters back and forth across the geofence boundary. The audio was playing every four seconds. I resolved it by switching that single stop from GPS triggering to a manual next-button pattern and adding a ten-second cooldown timer to the remaining GPS stops, which stopped the rapid-fire replay issue without requiring a beacon installation.

Recording and Editing Audio
Use a decent USB microphone. A phone recorder in wind is not acceptable for anything intended to be published. You do not need a studio. You need something that captures voice clearly without background hum, traffic noise, or the particular electronic whine that cheap lapel mics pick up from streetlights and power lines. Keep each stop under two minutes. This is not a suggestion. People walking are distracted. They are looking at buildings, navigating crossings, dealing with weather. A three-minute audio clip will either be ignored entirely or listened to at 1.5x speed, which defeats the purpose. Two minutes maximum. One minute thirty seconds is the sweet spot if the content supports it. Export as MP3 at 128 kbps or higher. AAC is fine too. Do not use WAV files unless you have a very good reason and a fast delivery system. File size matters because you are relying on mobile networks or limited offline storage. A two-minute MP3 at 128 kbps is roughly two megabytes. Ten stops is twenty megabytes. That fits comfortably in any modern app cache and downloads in a few seconds on a decent connection.
Testing Before You Launch
This is where most projects fail. You build it, you run through it once on a quiet morning with perfect weather, and you declare it done. Do not do this. Test it in conditions that approximate actual use. Bring someone who has never seen the route before. Give them the link or the app and walk it without giving any hints. Watch where they hesitate. Watch where they go the wrong direction. Watch where they pull out their phone and stare at it confused because the audio did not play when they expected it to. You will find problems you did not anticipate. A trigger that fires inside a coffee shop because the GPS leaks through the walls. A stop where the audio starts playing while the person is still crossing a busy intersection, which is both annoying and unsafe. A section of route where the map display glitches because the tile server times out. These are the things that separate a project that works from a project that exists.
Common Pitfalls
Overlapping geofences are the most common technical mistake. If two trigger zones are within twenty meters of each other, the system will fire both stops almost simultaneously and the user will get confused about which content belongs to which location. Keep your stops at least thirty meters apart when using GPS triggering. If your route has naturally closer points of interest, combine them into a single stop or switch to manual progression for that section. Assuming everyone has data is the most common operational mistake. Some platforms auto-download content. Some do not. If your tour relies on streaming audio and a user enters a dead zone, the experience stops. Provide an offline mode or a downloadable package. Even a simple PDF with embedded audio files distributed through your website will serve people who cannot stream. The biggest pitfall is content that does not match the location. This sounds obvious but it happens constantly because the person writing the scripts is not the person walking the route. You will write something beautiful about a Victorian-era façade and place it at a stop where the building is barely visible from the sidewalk because the route runs along a side street. The user hears detailed architectural description while looking at a brick wall and a dumpster. They lose trust in the system immediately and stop paying attention to everything after that.

A Note on Limitations
Self guided tours have hard constraints. They do not work well in environments with poor GPS reception, heavy pedestrian traffic where people constantly cross trigger boundaries, or routes longer than four kilometers where fatigue becomes a factor. They also require a baseline level of tech literacy from the user. An older visitor who is uncomfortable with smartphones will struggle regardless of how polished your interface is. Offering a parallel option — a printed guidebook, a telephone-based audio route, or a staffed information desk — is not a sign of weakness. It is how you make the product actually accessible. If your use case involves indoor navigation, dense urban cores, or a audience that includes many non-technical users, a self guided tour built on GPS alone is the wrong tool. Consider a beacon-based system or a simple QR code map instead. The simpler the interaction model, the more people will actually complete it. I have seen self guided tours abandoned after a single season because the organizing body assumed that building the content was the project and testing was optional. It is not optional. Testing is the project. The content is just something you test.