Overview
By the end of this tutorial you’ll have a working local business directory app: visitors browse local businesses in a list and on a map, filter by city and category, tap through to each listing’s detail screen, and — if you choose — business owners can claim and manage their own listings right from the app.
Your directory content itself lives in GeoDirectory, a third-party WordPress plugin that manages listings, categories, and events. The MAM GeoDirectory plugin (mam-geodirectory) is what connects that content to your app: it turns every GeoDirectory listing into a mobile content surface — list, map, calendar, and admin-approval views — and adds the owner, manager, and staff workflows and forms that make the app interactive instead of just read-only.
You won’t write a line of code for any of this. Install two plugins, fill in a handful of form pickers and toggles on an admin page, and your listings start flowing straight into the app. This guide follows the same path as the built-in GeoDirectory Setup Wizard: set up the plugin, add listings, decide on claiming, turn on multi-city location filtering, then preview what you’ve built.
What you’ll have at the end
- A WordPress site with GeoDirectory listings flowing into a native mobile app.
- A directory list screen and a map screen, both backed by the same listing data.
- A listing detail screen built from MAM content sections (address, hours, social, map, favorite).
- Location filtering (geofilters) so users see businesses near a chosen city, within a radius.
- Optionally: an in-app Add/Edit Listing form, claim listing flow, and owner tools (send notification, manage staff).
- The whole thing visible in the Previewer app before you ever submit a build to the stores.
You will not have a published store app at the end of this tutorial — publishing is a separate flow. See What’s next.
Prerequisites
- A WordPress site with MAM Main (
mam-main) installed and activated, and your MAM account enrolled. - Admin access to the WordPress dashboard.
- The GeoDirectory WordPress plugin (GeoDirectory 2.x) installed and activated, with at least one listing post type registered — by default this is
gd_place. - The MAM GeoDirectory plugin (
mam-geodirectory) entitled for your account and activated. - The MAM Gravity Forms Manager (
mam-gravity-forms-manager), which provides the in-app form pipeline, activated, plus Gravity Forms if you want users to add or edit listings from the app. - For location filtering: the MAM GeoFilters plugin (
mam-geofilters) activated.
mam-geodirectorywon’t do anything on its own until GeoDirectory is active,mam-mainis present and at least version 1.9.1, and your account is entitled for the plugin. If your listings never show up in the app, these three things are the first place to look.
The big picture
Here’s what each piece actually does, so the steps ahead make sense before you dive in:
| Piece | Role in your directory app |
|---|---|
| GeoDirectory (WordPress) | Stores the listings, categories, and events. The source of truth for your directory content. |
| MAM Main | The app builder. Provides screens, the tab bar, content sections, and the App Settings UI. |
| MAM GeoDirectory | Bridges GeoDirectory into the app: registers the list/map/calendar content types, builds the listing detail screen, and adds owner/claim/staff workflows. |
| MAM GeoFilters | Adds the city + radius location picker so users browse “near me” or a chosen city. |
| Gravity Forms + MAM Gravity Forms Manager | Power the in-app Add/Edit Listing, Send Notification, and Claim forms. |
Steps
1. Add your directory content in GeoDirectory
Before you touch the app at all, make sure you’ve got real content behind it.
- In WordPress admin, confirm GeoDirectory is active and that you have at least one listing post type (the default is
gd_place, often labelled “Places”). - Add a handful of categories (e.g., Restaurants, Shops, Services) and several published listings, each with an address, business hours, and a photo. The app reads each listing’s coordinates and category to build the map and location filters, so a listing needs a valid address to show up in either place.
- If you want an events calendar in the app, install GeoDir Event Manager and add a few
gd_eventposts. Events live on their own surface, separate from regular listings.
A handful of listings is plenty to start — enough to watch the list, map, and detail screens come to life.
2. Open the GeoDirectory Setup Wizard (optional but recommended)
MAM ships a guided GeoDirectory Setup wizard that walks the same path as this tutorial, if you’d rather click through prompts than read steps. From the WordPress admin, open the MAM Setup Wizard and choose the GeoDirectory Setup guide. Its steps are:
- GeoDirectory Setup (welcome)
- GeoDirectory Features
- Add Listings and Events
- Claim Listings
- Multi-City (geofilters)
- Next Steps — hands off to the Previewer app
Either path gets you there — the wizard or the settings page directly. This tutorial sticks with the settings page, since that’s where the actual options live and where you’ll end up regardless.
3. Configure the GeoDirectory settings page
This is the step where everything gets connected. In WordPress admin, go to Mobile App Manager → Geodirectory. The page has tabs along the top:
- A Settings tab (global options that apply across all post types).
- One tab per registered listing post type, labelled
GD {Plural label}(e.g., GD Places). - A Claim Listing tab (claim checkout mode, claim-screen appearance, and related claim-subscription settings, used later if you enable claiming).
On the global Settings tab, you’re setting the high-level behavior for the whole directory. The options that matter most for a first app:
- User can add listing on app? — turn on if you want visitors or owners to submit listings from the app.
- Author can edit listing on app? — required for a non-admin owner to see the Edit Listing button.
- The Send Notification toggles (to favorited users / users in the area / all users) — defaults that govern owner push notifications.
- Email address for new listing notifications — where new-listing alerts are sent.
- The role display names (Listing Manager / Staff / Subscriber) — labels shown in the in-app Add Users form.
On each post-type tab (e.g., GD Places), you wire up the form and submission behavior for that listing type:
- Add or Edit Listing Form — pick the Gravity Form the app should open for Add/Edit Listing on this post type.
- Default category for new listings — where app-submitted listings land.
- Add in Draft mode for new listings — when on, app submissions arrive as
pending(so an admin can approve them) instead of going live immediately. - The field visibility manager at the bottom — uncheck any listing fields you don’t want shown in the in-app form.
Save each tab as you go. Not ready to let users add listings yet? Skip the form picker for now — you can always come back to it, since the list and map surfaces below work fine either way.
4. Add the directory list screen to your app
Time to get those listings showing up in the app. mam-geodirectory registers several content types you can choose from when building a screen:
| Content type | What it shows |
|---|---|
| GeoDirectory | Standard scrolling list of listings, filtered by category and (optionally) location. |
| GeoDirectory – Map View | The same listings rendered as map markers. |
| GeoDirectory Calendar | Events feed (uses gd_event posts). |
| GeoDirectory – Off Directory | An “off-directory” feed layout for non-geographic listings. |
| GeoDirectory – Admin Approvals | Pending listings only, visible to admins, for reviewing submissions. |
To add the list:
- In the app builder (home screen layout, a tab, or the left menu), add a new screen and choose the GeoDirectory content type.
- In the content-type picker, choose which listings to show: pick a post type (e.g., Places) and optionally a specific category. The picker shows each post type with its categories nested underneath.
- Save the screen.
By default the list sorts alphabetically by title; turn on distance sorting and it’ll instead order by how close each listing is to the user, once a location filter is active.
5. Add a map screen
Repeat step 4, but this time pick the GeoDirectory – Map View content type. It draws on the exact same listings — each one carries its coordinates and a category marker icon — and renders them as pins on the map. Event pins show up by default too; you can turn those off later if you want listings only.
A layout that works well: a bottom tab bar with a List tab and a Map tab pointing at the same category, so users can flip back and forth between the two views of the same directory.
6. Build the listing detail screen
Tap a listing and up comes its detail screen — assembled by mam-geodirectory out of MAM content sections: address, business hours, social media, an embedded map, post content, and a favorite/check-in control. You configure these per screen in the app builder’s content-section / layout manager.
For a directory app, a sensible top-to-bottom order is:
- Photos / header image
- Address (with tap-to-map)
- Business hours
- Description (post content)
- Social media links
- Map
- Favorite / share
Reorder, hide, or restyle any of these sections to fit your app. See Design the listing detail screen for the full walkthrough.
7. Add action buttons to the listing screen
mam-geodirectory can add tab bar action buttons to a listing detail screen — each one shown only to the user it’s meant for:
- Anonymous visitor: Favorites, Phone, Website, Map, Email, Share (and Chat if configured).
- Listing owner: also Edit Listing, Edit Staff, Edit Events, Send Notification.
- Admin: also Approve Listing (for pending submissions).
Which buttons show up depends on the toggles you set in step 3 (e.g., “Author can edit listing on app?”) and on whether you’ve wired the matching side forms (Send Notification, Add Users, Approve Listing). Skip a side form, and its button just won’t appear — nothing breaks.
8. Turn on location filtering (multi-city)
A directory app becomes far more useful once it can answer “businesses near me” or “businesses in this city” — and that’s exactly what MAM GeoFilters adds.
- Confirm
mam-geofiltersis activated. - Go to Mobile App Manager → App Settings and pick the user role to configure (start with
mam-all). Open the GeoFilters settings group. - Turn on the picker:
- Use GeoFilters for an inline picker in the home view, or
- Use GeoFilters Navbar Icon Only for a compact icon in the navigation chrome (you can enable both; the icon presentation wins).
- Set the GeoFilter Radius (Miles) — e.g.,
25–50for a city/regional app, higher for statewide. Empty defaults to25miles; the hard cap is3000. - Save the role.
mam-geodirectory feeds your GeoDirectory cities into the geofilter picker automatically, so the cities where your listings actually live become the options users see. They’ll get a “Current Location” entry (when GPS is available) plus your city list, and the directory narrows down to listings within the radius they picked.
Geofilters and the admin-approval queue are intentionally mutually exclusive: when an admin opens the Approve Listings surface, location filtering switches off automatically so they see the entire pending queue, not just the submissions nearby.
9. (Optional) Enable owner claiming
Want business owners to claim and manage their own listings? Set it up on the GeoDirectory settings page:
- On the global Settings tab, configure the claim options (whether claiming requires admin approval, the checkout mode, and the claim call-to-action text and feature bullets shown to owners).
- To invite a specific owner, open that listing in WordPress admin and use the Send Claim Invite meta box on its edit screen — enter the owner’s email and tick the checkbox on save to email them a claim invitation for that one listing.
- Make sure you’ve picked a Claim Listing form and the Add Users form so the in-app claim and staff flows have forms to render.
Claiming is entirely optional — a read-only directory works just fine without it. Add it whenever you’re ready to monetize or hand off listing management.
10. Preview the app
Now for the fun part: see what you’ve built. Open the Previewer app, sign in against your site, and check:
- The directory list shows your listings; tapping one opens the detail screen with address, hours, photos, and map.
- The map screen shows your listings as pins.
- The geofilter picker appears (inline or icon) and changing the city/location re-filters the list and map.
- If you enabled it, the Add Listing button appears and a submitted listing lands in
pending(when draft mode is on), ready for an admin to approve.
If listings don’t show up, work back through the prerequisites: GeoDirectory active, mam-geodirectory entitled and active, listings published with valid addresses, and the right role selected in App Settings.
Verify
Sign in to the Previewer (or a TestFlight/internal build) in different roles and confirm:
- As a visitor: list + map populate, geofilter changes results, listing detail shows the expected sections and the visitor action buttons (Favorites, Phone, Website, Map, Email, Share).
- As a listing owner: the owner action buttons appear on listings you own (Edit Listing, Edit Staff, Send Notification, Edit Events) per the toggles you set.
- As an admin: the Admin Approvals surface shows pending submissions, and Approve Listing appears on their detail screens.
Variations and next steps
- Events calendar: add a screen with the GeoDirectory Calendar content type to surface
gd_eventposts. See Content type: GeoDirectory list and map. - Featured row on the home screen: show a curated horizontal scroller of categories or listings on the home screen.
- Special offers / deals: integrate
mam-special-offersto attach location-aware deals to listings. - Chat / messaging: integrate
mam-chat-managerto join owners, staff, and managers to per-listing chat groups. - Reviews and ratings: integrate
mam-reviews-managerto add star ratings to listings. - Pricing packages / paid listings: use GeoDir Pricing plus the MAM pricing-package fields to sell listing tiers.
What’s next
Once the app looks right in the Previewer, you’re ready to move on to publishing: buy a publishing plan, set up your Apple and Google developer accounts, and run the App Publishing Wizard. See Run the App Publishing Wizard end to end.
Related articles
- Plugin: mam-geodirectory
- Recipe: Configure the GeoDirectory settings page
- Content type: GeoDirectory list and map
- Design the listing detail screen
- Choose listing layout: switch list and map
- Set up location filtering (geofilters) on the home screen
- Recipe: Enable geofilters
- Form: Add/Edit Listing
- Form and flow: Claim Listing
- Run the App Publishing Wizard end to end
