Recipe: Bulk-invite venue owners

Goal

Send a “Claim your listing” invitation to every venue currently in your directory that does not yet have an owner of its own. The result is a one-shot bulk operation: all matching listings are emailed a unique claim code, and each recipient can install the app, sign in with the code, and take ownership of their listing.

This is the bulk equivalent of the per-listing Send Claim Invite meta box on individual edit screens.


Prerequisites

  • WordPress admin (activate_plugins capability).
  • Listings in publish status that have no associated WordPress user (or have a generic admin author).
  • The geodirectory-claim-listing-invitation notification slug active in the MAM notification list (it is registered automatically by mam_geodirectory_manager::mam_notification_list()).
  • A configured Claim Listing Gravity Form ID under Mobile App Manager → Geodirectory → Settings (or no form, in which case claim acceptance still works through the in-app Claim Listing button — see Form and flow: Claim Listing).

Steps

1. Open the tool

Go to Mobile App Manager → Geodirectory and click the Claim Listing tab. The page shows a small form with two dropdowns.

2. Filter recipients

  • Invite all unclaimed listings — pick a state. The list is built from every region value found in the GD detail tables for every non-event post type (gd_place and any custom GD CPTs you have defined). Empty regions are skipped, and the union is deduplicated and sorted.
  • Post Type — pick a GD post type. If you only have one non-event post type registered, the dropdown is replaced with a hidden field and you skip this choice automatically.

Click View Recipients.

3. Review the recipient list

The next view renders a WP_List_Table (mam_gd_claim_listings_grid) showing the listings that match your filters. Review the list — each row is a separate venue that will receive an invitation email. The grid supports the usual paging and search.

4. Send the invitations

The Send Invitations action on the grid kicks off the per-listing email loop. For each row the plugin:

  1. Generates or fetches a unique client code for the listing.
  2. Generates a Branch deep link (when branch_app_id is set) or a fallback ?client_code=... URL via the mam_universal_link_get_branch_link filter.
  3. Builds a geodirectory-claim-listing-invitation notification message with the listing’s name and the generated code as replacements.
  4. Fires mam_notification_send_message to dispatch the message through the mam-main notification pipeline.

Recipients see your configured snackbar message (gd-invited-user-snackbar-message) when they open the app via the deep link.

5. Verify

  • In the listing list table (admin → All listings) check that the “claim invite sent” indicator (visible in the Send Claim Invite meta box on individual listings) is set on the listings you bulk-invited.
  • Open the test listing’s edit screen — the Send Claim Invite meta box should now show the existing code/URL.
  • Test the deep link on a device. The app should open, present the login flow, and show your snackbar message. Once the user authenticates, the listing’s post_author updates to their WP user.

Notes and gotchas

  • One-shot is final. The grid action does not throttle or de-dupe runs across sessions — clicking it twice sends two emails. Use the per-listing meta box if you need to resend selectively.
  • The tsl-setting-directory_display_distance_from_user and other Tier 1 frozen options are unrelated. Do not adjust them as part of this recipe.
  • Empty region rows are skipped automatically. If you don’t see a state you expect, look at the underlying GD detail table — listings with region = '' aren’t offered as filter choices.
  • Notifications are sent through the standard pipeline. If the recipient has push notifications disabled and no email address on file, they will not receive anything. Test with a known-good account before running on production data.

Verification

This article was last verified against:

  • Plugin: mam-geodirectory v2.1.5
  • Source: includes/mam_geodirectory_admin_settings.php (the gd-claim-listings tab)
  • Source: includes/mam_gd_claim_listings_grid.php
  • Source: mam-geodirectory.phpmam_app_badge_url()

Re-verify whenever the grid columns change, the per-row send action’s notification slug changes, or the URL generation logic in mam_app_badge_url() switches providers (away from Branch).


  • Plugin: mam-geodirectory
  • Recipe: Configure the GeoDirectory settings page
  • Recipe: Manage staff and managers (admin)
  • Form and flow: Claim Listing
  • GeoDirectory notification types

Metadata

Field Value
Article type Recipe (Admin)
Plugin slug mam-geodirectory
Applies to plugin version 2.1.5+
Category Building Your App
Audience WordPress admin
Estimated time 10 minutes
Last verified 2026-05-01
Contents

    Need Support?

    Can’t find the answer you’re looking for? Don’t worry we’re here to help!