<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	 xmlns:media="http://search.yahoo.com/mrss/" >

<channel>
	<title>Docs &#8211; Agile Store Locator WordPress Plugin</title>
	<atom:link href="https://agilestorelocator.com/wiki/feed/" rel="self" type="application/rss+xml" />
	<link>https://agilestorelocator.com</link>
	<description>#1 Store Locator WordPress Plugin that finds location using the Google Maps</description>
	<lastBuildDate>Mon, 23 Feb 2026 08:08:17 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>How to Add Multiple Contacts for One Store</title>
		<link>https://agilestorelocator.com/wiki/how-to-add-multiple-contacts-for-one-store/</link>
					<comments>https://agilestorelocator.com/wiki/how-to-add-multiple-contacts-for-one-store/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 23 Feb 2026 08:04:28 +0000</pubDate>
				<guid isPermaLink="false">https://agilestorelocator.com/?post_type=docs&#038;p=4215</guid>

					<description><![CDATA[Sometimes a store location needs more than one phone number or email address—for example a main number, support number, and general contact email. You can achieve this in Agile Store Locator by creating additional fields and displaying them in your locator template. This guide walks you through adding multiple phone numbers and emails for a ... <br><a href="https://agilestorelocator.com/wiki/how-to-add-multiple-contacts-for-one-store/" class="text-muted readmore">Read More <i data-feather="chevron-right" class="fea icon-sm"></i></a>]]></description>
										<content:encoded><![CDATA[
<p>Sometimes a store location needs more than one phone number or email address—for example a main number, support number, and general contact email. You can achieve this in <em>Agile Store Locator</em> by creating additional fields and displaying them in your locator template.</p>



<p>This guide walks you through adding <strong>multiple phone numbers and emails</strong> for a store and displaying them in your locator using the Template Customizer.</p>



<h3 class="wp-block-heading">What This Does</h3>



<p>By default, each store can have one phone and one email. If you need more than one of each, follow these steps:</p>



<ul class="wp-block-list">
<li>Create extra contact fields</li>



<li>Enter the additional data</li>



<li>Update your template to display the extra contacts</li>
</ul>



<h3 class="wp-block-heading">Step 1 — Create Additional Contact Fields</h3>



<ol class="wp-block-list">
<li>Go to <strong>ASL Settings > Manage Additional Fields</strong> in your WordPress admin.</li>



<li>Click <strong>Add New Field</strong> to create a second phone number field:
<ul class="wp-block-list">
<li><strong>Label:</strong> Phone 2</li>



<li><strong>Control Name:</strong> <code class="" data-line="">phone_2</code></li>
</ul>
</li>



<li>Add another field for a second email:
<ul class="wp-block-list">
<li><strong>Label:</strong> Email 2</li>



<li><strong>Control Name:</strong> <code class="" data-line="">email_2</code></li>
</ul>
</li>



<li>Click <strong>Save Fields</strong>.</li>
</ol>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img fetchpriority="high" decoding="async" width="1024" height="260" src="https://agilestorelocator.com/wp-content/uploads/2026/02/custom-fields-manager-1024x260.png" alt="custom field manager" class="wp-image-4216" title="Docs 1" srcset="https://agilestorelocator.com/wp-content/uploads/2026/02/custom-fields-manager-1024x260.png 1024w, https://agilestorelocator.com/wp-content/uploads/2026/02/custom-fields-manager-300x76.png 300w, https://agilestorelocator.com/wp-content/uploads/2026/02/custom-fields-manager-768x195.png 768w, https://agilestorelocator.com/wp-content/uploads/2026/02/custom-fields-manager-360x91.png 360w, https://agilestorelocator.com/wp-content/uploads/2026/02/custom-fields-manager-350x89.png 350w, https://agilestorelocator.com/wp-content/uploads/2026/02/custom-fields-manager-76x19.png 76w, https://agilestorelocator.com/wp-content/uploads/2026/02/custom-fields-manager.png 1150w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<h3 class="wp-block-heading">Step 2 — Enter Additional Contact Data</h3>



<ol class="wp-block-list">
<li>Go to <strong>Stores</strong> and edit the store(s) where you want the extra contacts.</li>



<li>You will now see the new <strong>Phone 2</strong> and <strong>Email 2</strong> fields.</li>



<li>Enter the extra phone numbers and emails you want.</li>



<li>Save the store(s).</li>
</ol>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="898" height="182" src="https://agilestorelocator.com/wp-content/uploads/2026/02/secondary-contact-details.png" alt="secondary-contact-details" class="wp-image-4217" title="Docs 2" srcset="https://agilestorelocator.com/wp-content/uploads/2026/02/secondary-contact-details.png 898w, https://agilestorelocator.com/wp-content/uploads/2026/02/secondary-contact-details-300x61.png 300w, https://agilestorelocator.com/wp-content/uploads/2026/02/secondary-contact-details-768x156.png 768w, https://agilestorelocator.com/wp-content/uploads/2026/02/secondary-contact-details-360x73.png 360w, https://agilestorelocator.com/wp-content/uploads/2026/02/secondary-contact-details-350x71.png 350w, https://agilestorelocator.com/wp-content/uploads/2026/02/secondary-contact-details-76x15.png 76w" sizes="(max-width: 898px) 100vw, 898px" /></figure>
</div>


<h3 class="wp-block-heading">Step 3 — Update Your Template</h3>



<p>To display the new contact fields:</p>



<ol class="wp-block-list">
<li>Go to <strong>ASL Settings > Customizer</strong>.</li>



<li>Select the template you are using from the dropdown.</li>



<li>Click <strong>Load Template</strong> to load its HTML into the editor.</li>
</ol>



<p>Locate the section where phone and email are output.</p>



<h4 class="wp-block-heading">Version A — Each Contact on Its Own Line</h4>



<p>If you want each phone/email on its own line with individual icons:</p>



<pre class="wp-block-prismatic-blocks"><code class="language-markup" data-line="">{{if phone}}
&lt;li class=&quot;sl-phone&quot;&gt;
    &lt;i class=&quot;icon-mobile&quot;&gt;&lt;/i&gt;
    &lt;a href=&quot;tel:{{:phone}}&quot;&gt;{{:phone}}&lt;/a&gt;
&lt;/li&gt;
{{/if}}

{{if phone_2}}
&lt;li class=&quot;sl-phone-2&quot;&gt;
    &lt;i class=&quot;icon-mobile&quot;&gt;&lt;/i&gt;
    &lt;a href=&quot;tel:{{:phone_2}}&quot;&gt;{{:phone_2}}&lt;/a&gt;
&lt;/li&gt;
{{/if}}

{{if email}}
&lt;li class=&quot;sl-email&quot;&gt;
    &lt;i class=&quot;icon-mail&quot;&gt;&lt;/i&gt;
    &lt;a href=&quot;mailto:{{:email}}&quot;&gt;{{:email}}&lt;/a&gt;
&lt;/li&gt;
{{/if}}

{{if email_2}}
&lt;li class=&quot;sl-email-2&quot;&gt;
    &lt;i class=&quot;icon-mail&quot;&gt;&lt;/i&gt;
    &lt;a href=&quot;mailto:{{:email_2}}&quot;&gt;{{:email_2}}&lt;/a&gt;
&lt;/li&gt;
{{/if}}</code></pre>



<h4 class="wp-block-heading">Version B — Phones Together, Emails Together (Single Icon Per Line)</h4>



<p>If you want the <strong>phones on the first line with one phone icon</strong> and the <strong>emails on a second line with one email icon</strong>, use this:</p>



<pre class="wp-block-prismatic-blocks"><code class="language-markup" data-line="">{{if phone || phone_2}}
&lt;li class=&quot;sl-phones&quot;&gt;
    &lt;i class=&quot;icon-mobile&quot;&gt;&lt;/i&gt;

    {{if phone}}
    &lt;a href=&quot;tel:{{:phone}}&quot; class=&quot;mr-2&quot;&gt;{{:phone}}&lt;/a&gt;
    {{/if}}

    {{if phone_2}}
    &lt;a href=&quot;tel:{{:phone_2}}&quot; class=&quot;mr-2&quot;&gt;{{:phone_2}}&lt;/a&gt;
    {{/if}}
&lt;/li&gt;
{{/if}}

{{if email || email_2}}
&lt;li class=&quot;sl-emails&quot;&gt;
    &lt;i class=&quot;icon-mail&quot;&gt;&lt;/i&gt;

    {{if email}}
    &lt;a href=&quot;mailto:{{:email}}&quot; class=&quot;mr-2&quot;&gt;{{:email}}&lt;/a&gt;
    {{/if}}

    {{if email_2}}
    &lt;a href=&quot;mailto:{{:email_2}}&quot; class=&quot;mr-2&quot;&gt;{{:email_2}}&lt;/a&gt;
    {{/if}}
&lt;/li&gt;
{{/if}}</code></pre>



<h3 class="wp-block-heading">Step 4 — Save Your Template</h3>



<p>After adding either version of the code:</p>



<ol class="wp-block-list">
<li>Click <strong>Save Template</strong>.</li>



<li>Visit your store locator on the front end to confirm the new layout displays correctly.</li>
</ol>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="387" height="337" src="https://agilestorelocator.com/wp-content/uploads/2026/02/multiple-phone-numbers.png" alt="multiple phone numbers" class="wp-image-4218" title="Docs 3" srcset="https://agilestorelocator.com/wp-content/uploads/2026/02/multiple-phone-numbers.png 387w, https://agilestorelocator.com/wp-content/uploads/2026/02/multiple-phone-numbers-300x261.png 300w, https://agilestorelocator.com/wp-content/uploads/2026/02/multiple-phone-numbers-360x313.png 360w, https://agilestorelocator.com/wp-content/uploads/2026/02/multiple-phone-numbers-302x263.png 302w, https://agilestorelocator.com/wp-content/uploads/2026/02/multiple-phone-numbers-65x57.png 65w" sizes="(max-width: 387px) 100vw, 387px" /></figure>
</div>]]></content:encoded>
					
					<wfw:commentRss>https://agilestorelocator.com/wiki/how-to-add-multiple-contacts-for-one-store/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Handle Multiple Stores at the Same Address (Overlapping Markers)</title>
		<link>https://agilestorelocator.com/wiki/how-to-handle-multiple-stores-at-the-same-address-overlapping-markers/</link>
					<comments>https://agilestorelocator.com/wiki/how-to-handle-multiple-stores-at-the-same-address-overlapping-markers/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 06 Feb 2026 10:26:43 +0000</pubDate>
				<guid isPermaLink="false">https://agilestorelocator.com/?post_type=docs&#038;p=4206</guid>

					<description><![CDATA[When you have multiple stores located in the same building or exact address, their map markers may appear stacked on top of each other. This can make it difficult for users to click or distinguish between different stores — especially if each store uses a different icon. At the moment, Agile Store Locator places one ... <br><a href="https://agilestorelocator.com/wiki/how-to-handle-multiple-stores-at-the-same-address-overlapping-markers/" class="text-muted readmore">Read More <i data-feather="chevron-right" class="fea icon-sm"></i></a>]]></description>
										<content:encoded><![CDATA[
<p>When you have <strong>multiple stores located in the same building or exact address</strong>, their map markers may appear <strong>stacked on top of each other</strong>. This can make it difficult for users to click or distinguish between different stores — especially if each store uses a different icon.</p>



<p>At the moment, Agile Store Locator places one marker per exact latitude/longitude. If multiple stores share the same coordinates, the markers will overlap.</p>



<h3 class="wp-block-heading">Recommended Solution: Slightly Adjust Store Position Manually</h3>



<p>You can easily fix this by <strong>slightly offsetting one or more store locations</strong> directly from the store editor. This keeps the stores visually side by side on the map while still representing the same building.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="651" height="585" src="https://agilestorelocator.com/wp-content/uploads/2026/02/drag-the-marker.gif" alt="drag the marker" class="wp-image-4207" title="Docs 4"></figure>
</div>


<h3 class="wp-block-heading">Step-by-Step: Offset Store Markers in the Same Building</h3>



<p><strong>1- Open the Store Editor</strong></p>



<ul class="wp-block-list">
<li>Go to <strong>Agile Store Locator → Manage Stores</strong></li>



<li>Edit <strong>one of the stores</strong> that shares the same address</li>
</ul>



<p><strong>2- Fully Zoom Into the Location</strong></p>



<ul class="wp-block-list">
<li>In the map inside the store editor, <strong>zoom in as much as possible</strong></li>



<li>This gives you precise control over marker placement</li>
</ul>



<p><strong>3- Slightly Drag the Marker</strong></p>



<ul class="wp-block-list">
<li>Click and <strong>drag the marker just a little away</strong> from its current position</li>



<li>The movement should be very small — just enough to avoid overlap</li>



<li>The store will still appear in the same building visually</li>
</ul>



<p><strong>4- Save the Store</strong></p>



<ul class="wp-block-list">
<li>Click <strong>Save Store</strong></li>



<li>Repeat the same steps for other stores if needed</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Result</h3>



<ul class="wp-block-list">
<li>Store icons will appear <strong>side by side instead of overlapping</strong></li>



<li>Each store remains clickable and visually distinct</li>



<li>Works perfectly with <strong>different marker icons</strong></li>



<li>No custom code or configuration required</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Important Notes</h3>



<ul class="wp-block-list">
<li>This is a <strong>visual adjustment only</strong> — it does not affect store address data</li>



<li>Best practice for:
<ul class="wp-block-list">
<li>Malls</li>



<li>Office buildings</li>



<li>Hospitals</li>



<li>Shared commercial locations</li>
</ul>
</li>



<li>The offset should be minimal to maintain accurate map representation</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://agilestorelocator.com/wiki/how-to-handle-multiple-stores-at-the-same-address-overlapping-markers/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Fetch Store Coordinates Using Agile Sync Addon</title>
		<link>https://agilestorelocator.com/wiki/how-to-fetch-store-coordinates-using-agile-sync-addon/</link>
					<comments>https://agilestorelocator.com/wiki/how-to-fetch-store-coordinates-using-agile-sync-addon/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 03 Feb 2026 10:20:25 +0000</pubDate>
				<guid isPermaLink="false">https://agilestorelocator.com/?post_type=docs&#038;p=4202</guid>

					<description><![CDATA[When syncing store data using the Agile Sync Addon, some external APIs may not provide latitude and longitude values. In such cases, the addon can automatically fetch coordinates for you using Google Geocoding API, based on the store’s address. This ensures your stores appear correctly on the map—even when coordinates are missing from the source ... <br><a href="https://agilestorelocator.com/wiki/how-to-fetch-store-coordinates-using-agile-sync-addon/" class="text-muted readmore">Read More <i data-feather="chevron-right" class="fea icon-sm"></i></a>]]></description>
										<content:encoded><![CDATA[
<p>When syncing store data using the <strong>Agile Sync Addon</strong>, some external APIs may <strong>not provide latitude and longitude values</strong>. In such cases, the addon can automatically fetch coordinates for you using <strong>Google Geocoding API</strong>, based on the store’s address.</p>



<p>This ensures your stores appear correctly on the map—even when coordinates are missing from the source data.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">When Do You Need This Feature?</h3>



<p>You should enable coordinate fetching if:</p>



<ul class="wp-block-list">
<li>Your external API <strong>does not return latitude and longitude</strong></li>



<li>Your store records include address fields like:
<ul class="wp-block-list">
<li>Street</li>



<li>City</li>



<li>State</li>



<li>Postal Code</li>



<li>Country</li>
</ul>
</li>
</ul>



<p>Agile Sync uses these fields to generate accurate coordinates via Google Geocoding.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">How Agile Sync Fetches Coordinates</h3>



<p>When coordinates are missing:</p>



<ol class="wp-block-list">
<li>Agile Sync sends the full address to <strong>Google Geocoding API</strong></li>



<li>Google returns the latitude and longitude</li>



<li>The addon automatically saves those values with the store record</li>
</ol>



<p>No manual intervention is required once configured correctly.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Required Configuration (Very Important)</h3>



<p>Before enabling this feature, make sure <strong>both</strong> requirements below are met.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h4 class="wp-block-heading">Google Server API Key Must Be Properly Configured</h4>



<p>Your <strong>Google Server API Key</strong> must:</p>



<ul class="wp-block-list">
<li>Be <strong>enabled and active</strong></li>



<li>Have <strong>NO HTTP referrer restrictions</strong></li>



<li>Have <strong>Geocoding API enabled</strong></li>
</ul>



<p>If your key is restricted or misconfigured, coordinates will not be fetched.</p>



<p>Follow this step-by-step guide to fix it:<br><a href="https://agilestorelocator.com/wiki/google-server-api-key-troubleshooting/">https://agilestorelocator.com/wiki/google-server-api-key-troubleshooting/</a></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h4 class="wp-block-heading">Do NOT Map Latitude &amp; Longitude Fields</h4>



<p>If your external API does not provide coordinates:</p>



<ul class="wp-block-list">
<li>Do <strong>not</strong> map <code class="" data-line="">lat</code> or <code class="" data-line="">lng</code> fields in the Agile Sync field mapping</li>



<li>Leave latitude and longitude <strong>unmapped</strong></li>
</ul>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="354" src="https://agilestorelocator.com/wp-content/uploads/2026/02/dont-map-the-coordinates-field-1024x354.png" alt="Coordinates field agile sync addon" class="wp-image-4203" title="Docs 5" srcset="https://agilestorelocator.com/wp-content/uploads/2026/02/dont-map-the-coordinates-field-1024x354.png 1024w, https://agilestorelocator.com/wp-content/uploads/2026/02/dont-map-the-coordinates-field-300x104.png 300w, https://agilestorelocator.com/wp-content/uploads/2026/02/dont-map-the-coordinates-field-768x265.png 768w, https://agilestorelocator.com/wp-content/uploads/2026/02/dont-map-the-coordinates-field-360x124.png 360w, https://agilestorelocator.com/wp-content/uploads/2026/02/dont-map-the-coordinates-field-350x121.png 350w, https://agilestorelocator.com/wp-content/uploads/2026/02/dont-map-the-coordinates-field-76x26.png 76w, https://agilestorelocator.com/wp-content/uploads/2026/02/dont-map-the-coordinates-field.png 1273w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>This allows Agile Sync to detect missing coordinates and fetch them automatically.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Important Note for Existing Sync Jobs</h3>



<p>If you already have an <strong>existing Agile Sync job</strong>, coordinate fetching may <strong>not run</strong> due to timestamp validation.</p>



<h4 class="wp-block-heading">Why This Happens</h4>



<p>If the <strong>“Last Modified”</strong> field is mapped:</p>



<ul class="wp-block-list">
<li>Agile Sync only updates records when the external API provides a <strong>newer timestamp</strong></li>



<li>Existing records without updated timestamps will <strong>not refresh coordinates</strong></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Recommended Solution (Clean Reset)</h3>



<p>To ensure coordinates are fetched correctly:</p>



<ol class="wp-block-list">
<li>Go to <strong>Agile Store Locator → Import / Export</strong></li>



<li><strong>Delete all existing stores</strong></li>



<li>Delete the <strong>existing Agile Sync job</strong></li>



<li>Create a <strong>new Agile Sync job</strong></li>



<li>Ensure:
<ul class="wp-block-list">
<li>Latitude &amp; longitude are <strong>not mapped</strong></li>



<li>Google Server API key is properly configured</li>
</ul>
</li>



<li>Run the new sync</li>
</ol>



<p>This forces all records to be reprocessed and coordinates to be generated correctly.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://agilestorelocator.com/wiki/how-to-fetch-store-coordinates-using-agile-sync-addon/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Link WePOS with Multi-Store Addons for WooCommerce</title>
		<link>https://agilestorelocator.com/wiki/how-to-link-wepos-with-multi-store-addons-for-woocommerce/</link>
					<comments>https://agilestorelocator.com/wiki/how-to-link-wepos-with-multi-store-addons-for-woocommerce/#respond</comments>
		
		<dc:creator><![CDATA[Talha Nadeem]]></dc:creator>
		<pubDate>Mon, 05 Jan 2026 07:42:03 +0000</pubDate>
				<guid isPermaLink="false">https://agilestorelocator.com/?post_type=docs&#038;p=4167</guid>

					<description><![CDATA[This guide explains how to connect WePOS with the Multi-Store Addons for WooCommerce, allowing you to manage product prices and stock centrally across multiple outlets. Prerequisites Before you begin, make sure: Step-by-Step Guide Step 1: Enable the &#8220;WePOS Integration&#8221; Option on Multi Store Addons for WooCommerce The first thing you will need to do is ... <br><a href="https://agilestorelocator.com/wiki/how-to-link-wepos-with-multi-store-addons-for-woocommerce/" class="text-muted readmore">Read More <i data-feather="chevron-right" class="fea icon-sm"></i></a>]]></description>
										<content:encoded><![CDATA[
<p>This guide explains how to connect WePOS with the Multi-Store Addons for WooCommerce, allowing you to manage product prices and stock centrally across multiple outlets.</p>



<h2 class="wp-block-heading"><strong>Prerequisites</strong></h2>



<h3 class="wp-block-heading"><strong>Before you begin, make sure:</strong></h3>



<ul class="wp-block-list">
<li>WordPress and WooCommerce are installed and activated<br></li>



<li>Multi Store Addons for WooCommerce is installed and configured<br></li>



<li>WePOS plugin is installed<br></li>



<li>You have administrator access to WordPress</li>
</ul>



<h2 class="wp-block-heading"><strong>Step-by-Step Guide</strong></h2>



<h3 class="wp-block-heading">Step 1: Enable the &#8220;WePOS Integration&#8221; Option on Multi Store Addons for WooCommerce</h3>



<p>The first thing you will need to do is to enable the &#8220;WePOS Integration&#8221; option in Multi Store Addons for WooCommerce. To do this, please follow the steps below:</p>



<ol class="wp-block-list">
<li>From the WordPress dashboard, go to the &#8220;A Store Locator&#8221; plugin and click on the &#8220;WooCommerce&#8221; tab</li>



<li>Go to the Inventory tab<br><img loading="lazy" decoding="async" width="1036" height="629" class="wp-image-4181" style="" src="https://agilestorelocator.com/wp-content/uploads/2026/01/inventory.png" alt="inventory" title="Docs 6" srcset="https://agilestorelocator.com/wp-content/uploads/2026/01/inventory.png 1036w, https://agilestorelocator.com/wp-content/uploads/2026/01/inventory-300x182.png 300w, https://agilestorelocator.com/wp-content/uploads/2026/01/inventory-1024x622.png 1024w, https://agilestorelocator.com/wp-content/uploads/2026/01/inventory-768x466.png 768w, https://agilestorelocator.com/wp-content/uploads/2026/01/inventory-360x219.png 360w, https://agilestorelocator.com/wp-content/uploads/2026/01/inventory-350x213.png 350w, https://agilestorelocator.com/wp-content/uploads/2026/01/inventory-76x46.png 76w" sizes="auto, (max-width: 1036px) 100vw, 1036px" /></li>



<li>Enable the &#8220;WePOS integration&#8221; option<br><img loading="lazy" decoding="async" width="1067" height="689" class="wp-image-4182" style="" src="https://agilestorelocator.com/wp-content/uploads/2026/01/weposintegration.png" alt="weposintegration" title="Docs 7" srcset="https://agilestorelocator.com/wp-content/uploads/2026/01/weposintegration.png 1067w, https://agilestorelocator.com/wp-content/uploads/2026/01/weposintegration-300x194.png 300w, https://agilestorelocator.com/wp-content/uploads/2026/01/weposintegration-1024x661.png 1024w, https://agilestorelocator.com/wp-content/uploads/2026/01/weposintegration-768x496.png 768w, https://agilestorelocator.com/wp-content/uploads/2026/01/weposintegration-360x232.png 360w, https://agilestorelocator.com/wp-content/uploads/2026/01/weposintegration-350x226.png 350w, https://agilestorelocator.com/wp-content/uploads/2026/01/weposintegration-76x49.png 76w" sizes="auto, (max-width: 1067px) 100vw, 1067px" /></li>
</ol>



<h3 class="wp-block-heading"><strong>Step 2: Install the WePOS Plugin</strong></h3>



<ol class="wp-block-list">
<li>Log in to your WordPress Admin Dashboard</li>



<li>Navigate to Plugins → Add New</li>



<li>Search for WePOS<br><img loading="lazy" decoding="async" width="1769" height="673" class="wp-image-4168" style="" src="https://agilestorelocator.com/wp-content/uploads/2026/01/wepos-plugin.png" alt="wepos plugin" title="Docs 8" srcset="https://agilestorelocator.com/wp-content/uploads/2026/01/wepos-plugin.png 1769w, https://agilestorelocator.com/wp-content/uploads/2026/01/wepos-plugin-300x114.png 300w, https://agilestorelocator.com/wp-content/uploads/2026/01/wepos-plugin-1024x390.png 1024w, https://agilestorelocator.com/wp-content/uploads/2026/01/wepos-plugin-768x292.png 768w, https://agilestorelocator.com/wp-content/uploads/2026/01/wepos-plugin-1536x584.png 1536w, https://agilestorelocator.com/wp-content/uploads/2026/01/wepos-plugin-360x137.png 360w, https://agilestorelocator.com/wp-content/uploads/2026/01/wepos-plugin-350x133.png 350w, https://agilestorelocator.com/wp-content/uploads/2026/01/wepos-plugin-76x29.png 76w" sizes="auto, (max-width: 1769px) 100vw, 1769px" /><br></li>



<li>Click Install Now, then Activate</li>



<li>Once activated, you will see WePOS in the WordPress menu</li>
</ol>



<p>WePOS enables point-of-sale functionality directly inside WooCommerce.</p>



<h3 class="wp-block-heading"><strong>Step 3: Add An Outlet on WePOS</strong></h3>



<ol class="wp-block-list">
<li>Go to WePOS → Outlets</li>



<li>Click on “Add Outlet”, fill in the information, and click on “Create Outlet”<br><img loading="lazy" decoding="async" width="607" height="224" class="wp-image-4169" style="" src="https://agilestorelocator.com/wp-content/uploads/2026/01/addoutlet.png" alt="addoutlet" title="Docs 9" srcset="https://agilestorelocator.com/wp-content/uploads/2026/01/addoutlet.png 607w, https://agilestorelocator.com/wp-content/uploads/2026/01/addoutlet-300x111.png 300w, https://agilestorelocator.com/wp-content/uploads/2026/01/addoutlet-360x133.png 360w, https://agilestorelocator.com/wp-content/uploads/2026/01/addoutlet-350x129.png 350w, https://agilestorelocator.com/wp-content/uploads/2026/01/addoutlet-76x28.png 76w" sizes="auto, (max-width: 607px) 100vw, 607px" /></li>
</ol>



<h3 class="wp-block-heading"><strong>Step 4: Assign a Counter and Cashier to Your Outlet</strong></h3>



<ol class="wp-block-list">
<li>Next to the newly created outlet, click on the three-dot menu button, and click on &#8220;Add Counter&#8221;</li>



<li>Enter the counter name and number, and click on “Add Counter”</li>



<li>Next, click on the three-dot menu button, and click on “Add Cashier”</li>



<li>Select a Cashier and click on “Assign Cashier&#8221;<br><img loading="lazy" decoding="async" width="1369" height="758" class="wp-image-4170" style="" src="https://agilestorelocator.com/wp-content/uploads/2026/01/counterandcashier.png" alt="counterandcashier" title="Docs 10" srcset="https://agilestorelocator.com/wp-content/uploads/2026/01/counterandcashier.png 1369w, https://agilestorelocator.com/wp-content/uploads/2026/01/counterandcashier-300x166.png 300w, https://agilestorelocator.com/wp-content/uploads/2026/01/counterandcashier-1024x567.png 1024w, https://agilestorelocator.com/wp-content/uploads/2026/01/counterandcashier-768x425.png 768w, https://agilestorelocator.com/wp-content/uploads/2026/01/counterandcashier-360x199.png 360w, https://agilestorelocator.com/wp-content/uploads/2026/01/counterandcashier-350x194.png 350w, https://agilestorelocator.com/wp-content/uploads/2026/01/counterandcashier-76x42.png 76w" sizes="auto, (max-width: 1369px) 100vw, 1369px" /><strong><br></strong></li>
</ol>



<p>Now, a counter and cashier are assigned to the outlet you just created.</p>



<p>Counters represent physical POS terminals, while cashiers are the users operating them.</p>



<h3 class="wp-block-heading">Step 5: Link a store with WePOS</h3>



<p>The next step is to link one of your stores with WePOS. To do this, please follow the steps below:</p>



<ol class="wp-block-list">
<li>Go to the WordPress dashboard, navigate to the Agile Store Locator plugin, and click on &#8220;Manage Stores&#8221;</li>



<li>Locate the store you want to link to WePOS and click on the &#8220;edit&#8221; icon<br><img loading="lazy" decoding="async" width="1290" height="909" class="wp-image-4183" style="" src="https://agilestorelocator.com/wp-content/uploads/2026/01/managestores.png" alt="managestores" title="Docs 11" srcset="https://agilestorelocator.com/wp-content/uploads/2026/01/managestores.png 1290w, https://agilestorelocator.com/wp-content/uploads/2026/01/managestores-300x211.png 300w, https://agilestorelocator.com/wp-content/uploads/2026/01/managestores-1024x722.png 1024w, https://agilestorelocator.com/wp-content/uploads/2026/01/managestores-768x541.png 768w, https://agilestorelocator.com/wp-content/uploads/2026/01/managestores-360x254.png 360w, https://agilestorelocator.com/wp-content/uploads/2026/01/managestores-350x247.png 350w, https://agilestorelocator.com/wp-content/uploads/2026/01/managestores-76x54.png 76w" sizes="auto, (max-width: 1290px) 100vw, 1290px" /></li>



<li>Go to the WooCommerce tab </li>



<li>Assign an outlet to this store using the &#8220;WePOS Outlet&#8221; field</li>



<li>Click on &#8220;Update Store&#8221;<br><img loading="lazy" decoding="async" width="1694" height="791" class="wp-image-4184" style="" src="https://agilestorelocator.com/wp-content/uploads/2026/01/linkstore.png" alt="linkstore" title="Docs 12" srcset="https://agilestorelocator.com/wp-content/uploads/2026/01/linkstore.png 1694w, https://agilestorelocator.com/wp-content/uploads/2026/01/linkstore-300x140.png 300w, https://agilestorelocator.com/wp-content/uploads/2026/01/linkstore-1024x478.png 1024w, https://agilestorelocator.com/wp-content/uploads/2026/01/linkstore-768x359.png 768w, https://agilestorelocator.com/wp-content/uploads/2026/01/linkstore-1536x717.png 1536w, https://agilestorelocator.com/wp-content/uploads/2026/01/linkstore-360x168.png 360w, https://agilestorelocator.com/wp-content/uploads/2026/01/linkstore-350x163.png 350w, https://agilestorelocator.com/wp-content/uploads/2026/01/linkstore-76x35.png 76w" sizes="auto, (max-width: 1694px) 100vw, 1694px" /></li>
</ol>



<p>Once this is done, the WePOS outlet will be linked to the store you assigned it to. </p>



<p>Now you can go to the POS interface and manage the products that are assigned to this store.</p>



<h3 class="wp-block-heading"><strong>Step 6: Go to View POS</strong></h3>



<ol class="wp-block-list">
<li><strong>Navigate to WePOS → View POS</strong><br><img loading="lazy" decoding="async" width="745" height="467" class="wp-image-4171" style="" src="https://agilestorelocator.com/wp-content/uploads/2026/01/viewpos.png" alt="viewpos" title="Docs 13" srcset="https://agilestorelocator.com/wp-content/uploads/2026/01/viewpos.png 745w, https://agilestorelocator.com/wp-content/uploads/2026/01/viewpos-300x188.png 300w, https://agilestorelocator.com/wp-content/uploads/2026/01/viewpos-360x226.png 360w, https://agilestorelocator.com/wp-content/uploads/2026/01/viewpos-350x219.png 350w, https://agilestorelocator.com/wp-content/uploads/2026/01/viewpos-76x48.png 76w" sizes="auto, (max-width: 745px) 100vw, 745px" /><strong><br></strong></li>



<li>Log in using the outlet and counter credentials you created earlier<br><img loading="lazy" decoding="async" width="724" height="532" class="wp-image-4172" style="" src="https://agilestorelocator.com/wp-content/uploads/2026/01/login.png" alt="login" title="Docs 14" srcset="https://agilestorelocator.com/wp-content/uploads/2026/01/login.png 724w, https://agilestorelocator.com/wp-content/uploads/2026/01/login-300x220.png 300w, https://agilestorelocator.com/wp-content/uploads/2026/01/login-360x265.png 360w, https://agilestorelocator.com/wp-content/uploads/2026/01/login-350x257.png 350w, https://agilestorelocator.com/wp-content/uploads/2026/01/login-76x57.png 76w" sizes="auto, (max-width: 724px) 100vw, 724px" /><strong><br></strong></li>
</ol>



<p>This will open the WePOS interface, where sales transactions are processed.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="528" src="https://agilestorelocator.com/wp-content/uploads/2026/01/posinterface-1024x528.jpg" alt="posinterface" class="wp-image-4173" title="Docs 15" srcset="https://agilestorelocator.com/wp-content/uploads/2026/01/posinterface-1024x528.jpg 1024w, https://agilestorelocator.com/wp-content/uploads/2026/01/posinterface-300x155.jpg 300w, https://agilestorelocator.com/wp-content/uploads/2026/01/posinterface-768x396.jpg 768w, https://agilestorelocator.com/wp-content/uploads/2026/01/posinterface-1536x792.jpg 1536w, https://agilestorelocator.com/wp-content/uploads/2026/01/posinterface-360x186.jpg 360w, https://agilestorelocator.com/wp-content/uploads/2026/01/posinterface-350x180.jpg 350w, https://agilestorelocator.com/wp-content/uploads/2026/01/posinterface-76x39.jpg 76w, https://agilestorelocator.com/wp-content/uploads/2026/01/posinterface.jpg 1910w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>This step ensures that sales, stock, and pricing data sync correctly with the chosen outlet.</p>



<h3 class="wp-block-heading"><strong>Step 7: Change Product Prices and Stock via CentralStock</strong></h3>



<ol class="wp-block-list">
<li>Go to A Store Locator Plugin → Central Stock<br><img loading="lazy" decoding="async" width="206" height="761" class="wp-image-4174" style="" src="https://agilestorelocator.com/wp-content/uploads/2026/01/centralstock2.png" alt="centralstock2" title="Docs 16" srcset="https://agilestorelocator.com/wp-content/uploads/2026/01/centralstock2.png 206w, https://agilestorelocator.com/wp-content/uploads/2026/01/centralstock2-81x300.png 81w, https://agilestorelocator.com/wp-content/uploads/2026/01/centralstock2-139x512.png 139w, https://agilestorelocator.com/wp-content/uploads/2026/01/centralstock2-71x263.png 71w" sizes="auto, (max-width: 206px) 100vw, 206px" /></li>



<li>Locate the product you want to change the price and/or inventory for</li>



<li>Click on “update” next to the correct store location<br><img loading="lazy" decoding="async" width="1902" height="948" class="wp-image-4175" style="" src="https://agilestorelocator.com/wp-content/uploads/2026/01/centralstock.png" alt="centralstock" title="Docs 17" srcset="https://agilestorelocator.com/wp-content/uploads/2026/01/centralstock.png 1902w, https://agilestorelocator.com/wp-content/uploads/2026/01/centralstock-300x150.png 300w, https://agilestorelocator.com/wp-content/uploads/2026/01/centralstock-1024x510.png 1024w, https://agilestorelocator.com/wp-content/uploads/2026/01/centralstock-768x383.png 768w, https://agilestorelocator.com/wp-content/uploads/2026/01/centralstock-1536x766.png 1536w, https://agilestorelocator.com/wp-content/uploads/2026/01/centralstock-360x179.png 360w, https://agilestorelocator.com/wp-content/uploads/2026/01/centralstock-350x174.png 350w, https://agilestorelocator.com/wp-content/uploads/2026/01/centralstock-76x38.png 76w" sizes="auto, (max-width: 1902px) 100vw, 1902px" /></li>



<li>Update:<strong><br></strong>
<ul class="wp-block-list">
<li>Product prices</li>



<li>Stock quantities<strong><br></strong></li>
</ul>
</li>



<li>Click on &#8220;Update Inventory&#8221; to save the changes<br><img loading="lazy" decoding="async" width="1698" height="952" class="wp-image-4176" style="" src="https://agilestorelocator.com/wp-content/uploads/2026/01/priceupdate.png" alt="priceupdate" title="Docs 18" srcset="https://agilestorelocator.com/wp-content/uploads/2026/01/priceupdate.png 1698w, https://agilestorelocator.com/wp-content/uploads/2026/01/priceupdate-300x168.png 300w, https://agilestorelocator.com/wp-content/uploads/2026/01/priceupdate-1024x574.png 1024w, https://agilestorelocator.com/wp-content/uploads/2026/01/priceupdate-768x431.png 768w, https://agilestorelocator.com/wp-content/uploads/2026/01/priceupdate-1536x861.png 1536w, https://agilestorelocator.com/wp-content/uploads/2026/01/priceupdate-360x202.png 360w, https://agilestorelocator.com/wp-content/uploads/2026/01/priceupdate-350x196.png 350w, https://agilestorelocator.com/wp-content/uploads/2026/01/priceupdate-76x43.png 76w" sizes="auto, (max-width: 1698px) 100vw, 1698px" /><strong><br></strong></li>
</ol>



<p>Once you make changes to the product price and inventory, all updates will automatically reflect in:</p>



<ul class="wp-block-list">
<li>WePOS</li>



<li>WooCommerce product listings</li>



<li>Assigned store/outlet inventory</li>
</ul>



<h2 class="wp-block-heading"><strong>Result</strong></h2>



<p>After completing the above steps:</p>



<ul class="wp-block-list">
<li>WePOS is fully linked with Multi-Store Addons for WooCommerce<strong><br></strong></li>



<li>Product prices and stock are managed from one central location (Central Stock Section)<strong><br></strong></li>



<li>POS transactions update inventory in real time across all outlets</li>
</ul>



<h2 class="wp-block-heading">Order Summary</h2>



<p>Once you complete a transaction using WePOS, you can view the transaction details by following the steps below:</p>



<ol class="wp-block-list">
<li>Go to the WordPress dashboard</li>



<li>Head over to the WooCommerce plugin, and click on &#8220;Orders&#8221;</li>



<li>Open the latest transaction and view the transaction details<br><img loading="lazy" decoding="async" width="1563" height="823" class="wp-image-4177" style="" src="https://agilestorelocator.com/wp-content/uploads/2026/01/ordersummary.png" alt="ordersummary" title="Docs 19" srcset="https://agilestorelocator.com/wp-content/uploads/2026/01/ordersummary.png 1563w, https://agilestorelocator.com/wp-content/uploads/2026/01/ordersummary-300x158.png 300w, https://agilestorelocator.com/wp-content/uploads/2026/01/ordersummary-1024x539.png 1024w, https://agilestorelocator.com/wp-content/uploads/2026/01/ordersummary-768x404.png 768w, https://agilestorelocator.com/wp-content/uploads/2026/01/ordersummary-1536x809.png 1536w, https://agilestorelocator.com/wp-content/uploads/2026/01/ordersummary-360x190.png 360w, https://agilestorelocator.com/wp-content/uploads/2026/01/ordersummary-350x184.png 350w, https://agilestorelocator.com/wp-content/uploads/2026/01/ordersummary-76x40.png 76w" sizes="auto, (max-width: 1563px) 100vw, 1563px" /></li>
</ol>



<h2 class="wp-block-heading">Video</h2>



<p>For a more detailed demo on how to link WePOS with Multi Store addons for WooCommerce, and how to update product prices and stock using the central stock section, please see the video below.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://agilestorelocator.com/wiki/how-to-link-wepos-with-multi-store-addons-for-woocommerce/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Add Agile Store Locator Using Elementor</title>
		<link>https://agilestorelocator.com/wiki/how-to-add-agile-store-locator-using-elementor/</link>
					<comments>https://agilestorelocator.com/wiki/how-to-add-agile-store-locator-using-elementor/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 18 Dec 2025 10:58:18 +0000</pubDate>
				<guid isPermaLink="false">https://agilestorelocator.com/?post_type=docs&#038;p=4153</guid>

					<description><![CDATA[This guide explains how to add Agile Store Locator to a page using Elementor in a safe and supported way. Step-by-Step Instructions Important Notice About Elementor HTML Widget]]></description>
										<content:encoded><![CDATA[
<p>This guide explains how to add <strong>Agile Store Locator</strong> to a page using <strong>Elementor</strong> in a safe and supported way.</p>



<h3 class="wp-block-heading">Step-by-Step Instructions</h3>



<ol class="wp-block-list">
<li><strong>Open the page in Elementor</strong>
<ul class="wp-block-list">
<li>Go to <strong>Pages → All Pages</strong> in WordPress.</li>



<li>Click <strong>Edit with Elementor</strong> on the page where you want to display the store locator.</li>
</ul>
</li>



<li><strong>Search for the Shortcode widget</strong>
<ul class="wp-block-list">
<li>In the Elementor left panel (Widgets section), search for <strong>“Shortcode”</strong>.</li>
</ul>
</li>



<li><strong>Add the Shortcode widget to the page</strong>
<ul class="wp-block-list">
<li>Drag and drop the <strong>Shortcode</strong> widget into your page layout.</li>
</ul>
</li>



<li><strong>Insert the Agile Store Locator shortcode</strong>
<ul class="wp-block-list">
<li>In the shortcode field, paste the following: <code class="" data-line="">[ASL_STORELOCATOR]</code></li>
</ul>
</li>



<li><strong>Update / Publish the page</strong>
<ul class="wp-block-list">
<li>Click <strong>Update</strong> (or <strong>Publish</strong>) to save your changes.</li>



<li>View the page on the frontend to confirm the store locator is loading correctly.</li>
</ul>
</li>
</ol>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="294" height="267" src="https://agilestorelocator.com/wp-content/uploads/2025/12/elementor-shortcode-widget.png" alt="shortcode widget" class="wp-image-4154" title="Docs 20" srcset="https://agilestorelocator.com/wp-content/uploads/2025/12/elementor-shortcode-widget.png 294w, https://agilestorelocator.com/wp-content/uploads/2025/12/elementor-shortcode-widget-290x263.png 290w, https://agilestorelocator.com/wp-content/uploads/2025/12/elementor-shortcode-widget-63x57.png 63w" sizes="auto, (max-width: 294px) 100vw, 294px" /><figcaption class="wp-element-caption">Choose Shortcode Widget</figcaption></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="297" height="360" src="https://agilestorelocator.com/wp-content/uploads/2025/12/shortcode-in-shortcode-widget.png" alt="Add Shortcode in Widget" class="wp-image-4156" title="Docs 21" srcset="https://agilestorelocator.com/wp-content/uploads/2025/12/shortcode-in-shortcode-widget.png 297w, https://agilestorelocator.com/wp-content/uploads/2025/12/shortcode-in-shortcode-widget-248x300.png 248w, https://agilestorelocator.com/wp-content/uploads/2025/12/shortcode-in-shortcode-widget-217x263.png 217w, https://agilestorelocator.com/wp-content/uploads/2025/12/shortcode-in-shortcode-widget-47x57.png 47w" sizes="auto, (max-width: 297px) 100vw, 297px" /><figcaption class="wp-element-caption">Add the Store Locator Shortcode</figcaption></figure>
</div>


<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Important Notice About Elementor HTML Widget</h3>



<ul class="wp-block-list">
<li>Since <strong>Elementor version 3.33.5</strong>, the <strong>HTML widget is no longer supported</strong> for Agile Store Locator.</li>



<li>Using the <strong>HTML widget</strong> can break the store locator UI due to how Elementor now processes inline HTML and scripts.</li>



<li><strong>Always use the Shortcode widget</strong> to embed <code class="" data-line="">[ASL_STORELOCATOR]</code>.</li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="235" src="https://agilestorelocator.com/wp-content/uploads/2025/12/elementor-issue-store-locator-1024x235.png" alt="elementor HTML widget issue" class="wp-image-4155" title="Docs 22" srcset="https://agilestorelocator.com/wp-content/uploads/2025/12/elementor-issue-store-locator-1024x235.png 1024w, https://agilestorelocator.com/wp-content/uploads/2025/12/elementor-issue-store-locator-300x69.png 300w, https://agilestorelocator.com/wp-content/uploads/2025/12/elementor-issue-store-locator-768x176.png 768w, https://agilestorelocator.com/wp-content/uploads/2025/12/elementor-issue-store-locator-1536x352.png 1536w, https://agilestorelocator.com/wp-content/uploads/2025/12/elementor-issue-store-locator-360x83.png 360w, https://agilestorelocator.com/wp-content/uploads/2025/12/elementor-issue-store-locator-350x80.png 350w, https://agilestorelocator.com/wp-content/uploads/2025/12/elementor-issue-store-locator-76x17.png 76w, https://agilestorelocator.com/wp-content/uploads/2025/12/elementor-issue-store-locator.png 1610w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://agilestorelocator.com/wiki/how-to-add-agile-store-locator-using-elementor/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Remove or Disable Phone and Email in the Store Locator Frontend</title>
		<link>https://agilestorelocator.com/wiki/how-to-remove-or-disable-phone-and-email-in-the-store-locator-frontend/</link>
					<comments>https://agilestorelocator.com/wiki/how-to-remove-or-disable-phone-and-email-in-the-store-locator-frontend/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 15 Dec 2025 10:03:23 +0000</pubDate>
				<guid isPermaLink="false">https://agilestorelocator.com/?post_type=docs&#038;p=4149</guid>

					<description><![CDATA[Sometimes you may want to hide contact details (Phone/Email) from the Store List and/or the InfoBox on the frontend. In Agile Store Locator, you can do this in two main ways: Method 1: Remove Phone/Email at the Data API Level (Recommended) This method removes the values from the dataset before the Store Locator renders, so ... <br><a href="https://agilestorelocator.com/wiki/how-to-remove-or-disable-phone-and-email-in-the-store-locator-frontend/" class="text-muted readmore">Read More <i data-feather="chevron-right" class="fea icon-sm"></i></a>]]></description>
										<content:encoded><![CDATA[
<p>Sometimes you may want to hide contact details (Phone/Email) from the Store List and/or the InfoBox on the frontend. In Agile Store Locator, you can do this in two main ways:</p>



<ol class="wp-block-list">
<li><strong>Data API level (WordPress filter)</strong> – removes Phone/Email from the store data output globally. <a href="https://agilestorelocator.com/wiki/store-locator-wordpress-hooks-filters/" target="_blank" rel="noreferrer noopener">Agile Store Locator WordPress Plugin</a></li>



<li><strong>Template level (Customizer)</strong> – removes (or edits) the Phone/Email markup from the List/InfoBox templates. <a href="https://agilestorelocator.com/wiki/customization-of-store-locator/" target="_blank" rel="noreferrer noopener">Agile Store Locator WordPress Plugin</a></li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Method 1: Remove Phone/Email at the Data API Level (Recommended)</h3>



<p>This method removes the values from the dataset before the Store Locator renders, so Phone/Email won’t appear anywhere the template tries to print them. This uses the plugin’s WordPress hooks/filters system. <a href="https://agilestorelocator.com/wiki/store-locator-wordpress-hooks-filters/" target="_blank" rel="noreferrer noopener">Agile Store Locator WordPress Plugin</a></p>



<p>Add this code to your theme’s <strong>functions.php</strong> (or a custom plugin):</p>



<pre class="wp-block-prismatic-blocks"><code class="language-php" data-line="">function remove_asl_phone_email_data($all_stores) {

  foreach($all_stores as $store) {

    $store-&gt;phone = &#039;&#039;;
    $store-&gt;email = &#039;&#039;;
  }

  return $all_stores;
}

add_filter(&#039;asl_filter_stores_result&#039;, &#039;remove_asl_phone_email_data&#039;);</code></pre>



<p><strong>Notes</strong></p>



<ul class="wp-block-list">
<li>This is a <strong>global</strong> approach (affects list + infobox + anywhere the store data is used).</li>



<li>Best when you want Phone/Email removed site-wide without editing templates. <a href="https://agilestorelocator.com/wiki/store-locator-wordpress-hooks-filters/" target="_blank" rel="noreferrer noopener">Agile Store Locator WordPress Plugin</a></li>
</ul>



<h3 class="wp-block-heading">Method 2: Remove Phone/Email from the Template (Customizer)</h3>



<p>This method removes Phone/Email from the <strong>rendered HTML</strong> by editing the template in the Store Locator Customizer. <a href="https://agilestorelocator.com/wiki/customization-of-store-locator/" target="_blank" rel="noreferrer noopener">Agile Store Locator WordPress Plugin</a></p>



<h4 class="wp-block-heading">Remove from the Store List Template</h4>



<ol class="wp-block-list">
<li>Go to <strong>ASL Settings → Customizer</strong>. <a href="https://agilestorelocator.com/wiki/customization-of-store-locator/" target="_blank" rel="noreferrer noopener">Agile Store Locator WordPress Plugin</a></li>



<li>Select the <strong>Template</strong> you’re using.</li>



<li>Select the <strong>List Section</strong>.</li>



<li>Find and remove the Phone/Email blocks (example below), then <strong>Save</strong>.</li>
</ol>



<pre class="wp-block-prismatic-blocks"><code class="language-markup" data-line="">{{if phone}}
    &lt;li class=&quot;sl-phone&quot;&gt;
        &lt;i class=&quot;icon-mobile&quot;&gt;&lt;/i&gt;
        &lt;a href=&quot;tel:{{:phone}}&quot;&gt;{{:phone}}&lt;/a&gt;
    &lt;/li&gt;
{{/if}}
{{if email}}
    &lt;li class=&quot;sl-email&quot;&gt;
        &lt;i class=&quot;icon-mail&quot;&gt;&lt;/i&gt;
        &lt;a href=&quot;mailto:{{:email}}&quot;&gt;{{:email}}&lt;/a&gt;
    &lt;/li&gt;
{{/if}}</code></pre>



<h4 class="wp-block-heading">Remove from the InfoBox Template</h4>



<p>Repeat the same steps but open the <strong>Infobox Section</strong> in the Customizer and remove the Phone/Email markup there as well. <a href="https://agilestorelocator.com/wiki/customization-of-store-locator/" target="_blank" rel="noreferrer noopener">Agile Store Locator WordPress Plugin</a></p>



<p><strong>Notes</strong></p>



<ul class="wp-block-list">
<li>This approach is best when you want more control (hide in list, but keep in infobox, etc.).</li>



<li>Template changes are purely frontend display changes. <a href="https://agilestorelocator.com/wiki/customization-of-store-locator/" target="_blank" rel="noreferrer noopener">Agile Store Locator WordPress Plugin</a></li>
</ul>



<h3 class="wp-block-heading">Convert Phone into a CTA Button Without Showing It</h3>



<p>If you want to <strong>hide the phone text</strong> but still provide a “Call Now” button, you can do it in the <strong>List Section</strong> template.</p>



<ol class="wp-block-list">
<li>Go to <strong>ASL Settings → Customizer</strong></li>



<li>Select your <strong>template</strong></li>



<li>Open the <strong>List Section</strong></li>



<li>Remove the Phone <code class="" data-line="">&lt;li&gt;</code> block and place a CTA button inside the action buttons container.</li>
</ol>



<p>Use this pattern (keep it inside the action buttons container):</p>



<pre class="wp-block-prismatic-blocks"><code class="language-markup" data-line="">&lt;div class=&quot;sl-act-btns mt-3&quot;&gt;
    &lt;a class=&quot;btn btn-asl s-direction&quot;&gt;[Directions]&lt;/a&gt;

    {{if phone}}
    &lt;a target=&quot;_blank&quot; href=&quot;tel:{{:phone}}&quot; class=&quot;btn btn-asl&quot;&gt;[Call Now]&lt;/a&gt;
    {{/if}}

    {{if link}}
    &lt;a target=&quot;{{:target}}&quot; class=&quot;btn btn-asl btn-asl-outline s-visit-website&quot; href=&quot;{{:link}}&quot;&gt;[Website]&lt;/a&gt;
    {{/if}}

    {{if dist_str}}
    &lt;div class=&quot;sl-miles&quot;&gt;
        &lt;span class=&quot;s-distance&quot;&gt;{{:dist_str}}&lt;/span&gt;
    &lt;/div&gt;
    {{/if}}
&lt;/div&gt;
</code></pre>
]]></content:encoded>
					
					<wfw:commentRss>https://agilestorelocator.com/wiki/how-to-remove-or-disable-phone-and-email-in-the-store-locator-frontend/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Agile Store Locator – Google Tag Manager Integration Guide</title>
		<link>https://agilestorelocator.com/wiki/agile-store-locator-google-tag-manager-integration-guide/</link>
					<comments>https://agilestorelocator.com/wiki/agile-store-locator-google-tag-manager-integration-guide/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 11 Jul 2025 14:29:26 +0000</pubDate>
				<guid isPermaLink="false">https://agilestorelocator.com/?post_type=docs&#038;p=4052</guid>

					<description><![CDATA[Agile Store Locator (ASL) supports integration with Google Tag Manager (GTM) for advanced event tracking of your store locator interactions. With GTM, you can send key user interactions from your store locator directly to Google Analytics 4 (GA4) or any other connected service—without modifying your core website code. What This Integration Does By following this ... <br><a href="https://agilestorelocator.com/wiki/agile-store-locator-google-tag-manager-integration-guide/" class="text-muted readmore">Read More <i data-feather="chevron-right" class="fea icon-sm"></i></a>]]></description>
										<content:encoded><![CDATA[
<p>Agile Store Locator (ASL) supports integration with Google Tag Manager (GTM) for advanced event tracking of your store locator interactions.</p>



<p>With GTM, you can send key user interactions from your store locator directly to Google Analytics 4 (GA4) or any other connected service—without modifying your core website code.</p>



<h2 class="wp-block-heading">What This Integration Does</h2>



<p>By following this guide, you’ll track the following events in GTM:</p>



<ul class="wp-block-list">
<li>Search events</li>



<li>Store selection (map/marker clicks)</li>



<li>Store selection (sidebar/list clicks)</li>



<li>Direction clicks</li>



<li>Email link clicks <em>(available since v4.11.19)</em></li>



<li>Phone link clicks <em>(available since v4.11.19)</em></li>
</ul>



<p>Each event automatically pushes relevant store details into GTM’s dataLayer, so you can analyze user interactions in Google Analytics.</p>



<h2 class="wp-block-heading">How It Works</h2>



<p>Agile Store Locator exposes a <strong>JavaScript event hook</strong> called <code class="" data-line="">asl_event_hook</code>. You can add this function to your site to automatically push event data to GTM’s <code class="" data-line="">dataLayer</code>.</p>



<p>When a visitor performs an action—like searching, selecting a store, or clicking email/phone links—your custom <code class="" data-line="">asl_event_hook</code> will send structured data to GTM.</p>



<p>You then configure GTM to trigger Google Analytics events based on these pushes.</p>



<h2 class="wp-block-heading">Step 1 – Add the Google Tag Manager Snippet</h2>



<p>First, ensure the GTM container code is installed on your site. Google Tag Manager provides you with code like:</p>



<pre class="wp-block-prismatic-blocks"><code class="language-javascript" data-line="">&lt;!-- Google Tag Manager --&gt;
&lt;script&gt;(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({&#039;gtm.start&#039;:
new Date().getTime(),event:&#039;gtm.js&#039;});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!=&#039;dataLayer&#039;?&#039;&amp;l=&#039;+l:&#039;&#039;;j.async=true;j.src=
&#039;https://www.googletagmanager.com/gtm.js?id=&#039;+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,&#039;script&#039;,&#039;dataLayer&#039;,&#039;GTM-XXXXXXX&#039;);&lt;/script&gt;
&lt;!-- End Google Tag Manager --&gt;

&lt;!-- Google Tag Manager (noscript) --&gt;
&lt;noscript&gt;&lt;iframe src=&quot;https://www.googletagmanager.com/ns.html?id=GTM-XXXXXXX&quot;
height=&quot;0&quot; width=&quot;0&quot; style=&quot;display:none;visibility:hidden&quot;&gt;&lt;/iframe&gt;&lt;/noscript&gt;
&lt;!-- End Google Tag Manager (noscript) --&gt;
</code></pre>



<p>Replace <code class="" data-line="">GTM-XXXXXXX</code> with your container ID.<br></p>



<p>Add this <strong>above the closing <code class="" data-line="">&lt;/head&gt;</code> tag</strong> and <strong>immediately after the opening <code class="" data-line="">&lt;body&gt;</code> tag</strong> of your site.</p>



<h2 class="wp-block-heading">Step 2 – Add the ASL Event Hook Script</h2>



<p>Next, add the following JavaScript to your site. You can place it in your theme’s footer, or enqueue it via your CMS or plugin.</p>



<p>This script listens for ASL events and pushes them to <code class="" data-line="">dataLayer</code> for GTM:</p>



<pre class="wp-block-prismatic-blocks"><code class="language-javascript" data-line="">&lt;script type=&quot;text/javascript&quot;&gt;
function asl_event_hook(_event) {
  if (!_event || !_event.type) return;

  // 1- SEARCH EVENT
  if (_event.type === &#039;search&#039;) {
    var active_filters = (asl_view.featureFilter.array_ || []).map(function(cat) {
      return cat.name_;
    }).join(&#039;,&#039;);

    dataLayer.push({
      &#039;event&#039;: &#039;asl_search_event&#039;,
      &#039;search_type&#039;: &#039;Address&#039;,
      &#039;search_filters&#039;: active_filters,
      &#039;address_searched&#039;: _event.data.search_text
    });
  }

  // 2- SELECT EVENT (Store list / marker click)
  else if (_event.type === &#039;select&#039;) {
    var store = _event.data || {};
    var category_names = (store.categories || []).map(function(cat) {
      return cat.name;
    }).join(&#039;,&#039;);

    dataLayer.push({
      &#039;event&#039;: &#039;asl_store_selected&#039;,
      &#039;store_id&#039;: store.id,
      &#039;store_title&#039;: store.title,
      &#039;store_street&#039;: store.street,
      &#039;store_city&#039;: store.city,
      &#039;store_state&#039;: store.state,
      &#039;store_postal_code&#039;: store.postal_code,
      &#039;store_country&#039;: store.country,
      &#039;store_lat&#039;: store.lat,
      &#039;store_lng&#039;: store.lng,
      &#039;store_phone&#039;: store.phone,
      &#039;store_email&#039;: store.email,
      &#039;store_website&#039;: store.website,
      &#039;store_categories&#039;: category_names,
      &#039;store_link&#039;: store.link
    });
  }

  // 3- LIST CLICK SELECT EVENT
  else if (_event.type === &#039;asl_store_select_click&#039;) {
    var store = _event.data || {};
    var category_names = (store.categories || []).map(function(cat) {
      return cat.name;
    }).join(&#039;,&#039;);

    dataLayer.push({
      &#039;event&#039;: &#039;asl_store_select_click&#039;,
      &#039;store_id&#039;: store.id,
      &#039;store_title&#039;: store.title,
      &#039;store_city&#039;: store.city,
      &#039;store_state&#039;: store.state,
      &#039;store_country&#039;: store.country,
      &#039;store_phone&#039;: store.phone,
      &#039;store_email&#039;: store.email,
      &#039;store_categories&#039;: category_names
    });
  }

  // 4- EMAIL CLICK EVENT (available since v4.11.19)
  else if (_event.type === &#039;asl_email_click&#039;) {
    var store = _event.data || {};

    dataLayer.push({
      &#039;event&#039;: &#039;asl_email_click&#039;,
      &#039;store_id&#039;: store.id,
      &#039;store_title&#039;: store.title,
      &#039;store_email&#039;: store.email
    });
  }

  // 5- PHONE CLICK EVENT (available since v4.11.19)
  else if (_event.type === &#039;asl_phone_click&#039;) {
    var store = _event.data || {};

    dataLayer.push({
      &#039;event&#039;: &#039;asl_phone_click&#039;,
      &#039;store_id&#039;: store.id,
      &#039;store_title&#039;: store.title,
      &#039;store_phone&#039;: store.phone
    });
  }

  // 6- DIRECTION CLICK EVENT
  else if (_event.type === &#039;direction&#039;) {
    var store = _event.data || {};

    dataLayer.push({
      &#039;event&#039;: &#039;asl_direction_click&#039;,
      &#039;store_id&#039;: store.id,
      &#039;store_title&#039;: store.title,
      &#039;store_street&#039;: store.street,
      &#039;store_city&#039;: store.city,
      &#039;store_state&#039;: store.state,
      &#039;store_postal_code&#039;: store.postal_code,
      &#039;store_country&#039;: store.country,
      &#039;store_lat&#039;: store.lat,
      &#039;store_lng&#039;: store.lng
    });
  }
}
&lt;/script&gt;
</code></pre>



<h2 class="wp-block-heading">Step 3 – Set Up Google Tag Manager</h2>



<p>Once the <code class="" data-line="">asl_event_hook</code> is on your site, Google Tag Manager will receive events in its <strong>dataLayer</strong>.</p>



<p>You can now configure GTM to send these events to Google Analytics 4.</p>



<h3 class="wp-block-heading">3.1 – Create Data Layer Variables</h3>



<p>In GTM:</p>



<ol class="wp-block-list">
<li>Go to <strong>Variables</strong></li>



<li>Click <strong>New</strong> > <strong>Data Layer Variable</strong></li>



<li>Create variables for:</li>
</ol>



<ul class="wp-block-list">
<li>store_id</li>



<li>store_title</li>



<li>store_street</li>



<li>store_city</li>



<li>store_state</li>



<li>store_postal_code</li>



<li>store_country</li>



<li>store_lat</li>



<li>store_lng</li>



<li>store_phone</li>



<li>store_email</li>



<li>store_website</li>



<li>store_categories</li>



<li>store_link</li>



<li>search_type</li>



<li>search_filters</li>



<li>address_searched</li>
</ul>



<p>These variables let GTM pull data from the dataLayer pushes.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">3.2 – Create Custom Event Triggers</h3>



<p>Next, create a <strong>Custom Event Trigger</strong> for each ASL event type:</p>



<p>Event Names to use:</p>



<ul class="wp-block-list">
<li><code class="" data-line="">asl_search_event</code></li>



<li><code class="" data-line="">asl_store_selected</code></li>



<li><code class="" data-line="">asl_store_select_click</code></li>



<li><code class="" data-line="">asl_email_click</code> <em>(available since v4.11.19)</em></li>



<li><code class="" data-line="">asl_phone_click</code> <em>(available since v4.11.19)</em></li>



<li><code class="" data-line="">asl_direction_click</code></li>
</ul>



<ol class="wp-block-list">
<li>Go to <strong>Triggers</strong></li>



<li>Click <strong>New</strong> > <strong>Trigger Type: Custom Event</strong></li>



<li>Enter the Event Name (e.g. <code class="" data-line="">asl_search_event</code>)</li>
</ol>



<p>Repeat for each event.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">3.3 – Create GA4 Event Tags</h3>



<p>For each trigger:</p>



<ol class="wp-block-list">
<li>Go to <strong>Tags</strong></li>



<li>Click <strong>New</strong> > <strong>Tag Type: Google Analytics: GA4 Event</strong></li>



<li>Select your GA4 Configuration Tag</li>



<li>Enter an <strong>Event Name</strong> (e.g. <code class="" data-line="">locator_search</code>, <code class="" data-line="">store_selected</code>, etc.)</li>



<li>Add <strong>Event Parameters</strong> from your Data Layer Variables</li>
</ol>



<p>Example for <code class="" data-line="">asl_email_click</code>:</p>



<ul class="wp-block-list">
<li>Event Name: <code class="" data-line="">store_email_click</code></li>



<li>Parameters:
<ul class="wp-block-list">
<li>store_id</li>



<li>store_title</li>



<li>store_email</li>
</ul>
</li>
</ul>



<p>Example for <code class="" data-line="">asl_search_event</code>:</p>



<ul class="wp-block-list">
<li>Event Name: <code class="" data-line="">locator_search</code></li>



<li>Parameters:
<ul class="wp-block-list">
<li>search_type</li>



<li>search_filters</li>



<li>address_searched</li>
</ul>
</li>
</ul>



<p>Link the appropriate <strong>Custom Event Trigger</strong> to each Tag.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">3.4 – Publish Your Container</h3>



<ol class="wp-block-list">
<li>Click <strong>Submit</strong> in GTM</li>



<li>Add a Version Name (e.g. “ASL Events Integration”)</li>



<li>Click <strong>Publish</strong></li>
</ol>



<p>Your site is now tracking ASL events via GTM!</p>



<h2 class="wp-block-heading">Important Disclaimer</h2>



<p>Agile Store Locator’s Google Tag Manager integration <strong>only</strong> pushes event data into the website’s <code class="" data-line="">dataLayer</code>.</p>



<p>We <strong>do not</strong> configure, debug, or manage your Google Tag Manager container, triggers, or Google Analytics setup.</p>



<p>If your GTM or Google Analytics environment does not receive or record these events as expected, it is your responsibility to:</p>



<ol class="wp-block-list">
<li>Ensure your GTM container is correctly installed on your website</li>



<li>Verify that your triggers, variables, and tags are properly configured</li>



<li>Debug GTM using built-in tools like the Preview mode</li>
</ol>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><strong>Agile Store Locator support does not include customizing or troubleshooting Google Tag Manager or Google Analytics implementations.</strong></p>
</blockquote>



<p>Our plugin guarantees only that it will <strong>send the event data to the dataLayer</strong> in a standard format.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://agilestorelocator.com/wiki/agile-store-locator-google-tag-manager-integration-guide/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>License &#038; Support Renewal Guide</title>
		<link>https://agilestorelocator.com/wiki/license-support-renewal-guide/</link>
					<comments>https://agilestorelocator.com/wiki/license-support-renewal-guide/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 23 Jun 2025 10:57:05 +0000</pubDate>
				<guid isPermaLink="false">https://agilestorelocator.com/?post_type=docs&#038;p=4027</guid>

					<description><![CDATA[AgileLogix offers both Yearly and Lifetime licenses for our plugins. This guide helps you understand when and how to renew your license or support, depending on the plan you purchased. Important Note:This guide does not apply to Agile Store Locator, which is sold exclusively on CodeCanyon (Envato Market).For renewing Agile Store Locator, please log into ... <br><a href="https://agilestorelocator.com/wiki/license-support-renewal-guide/" class="text-muted readmore">Read More <i data-feather="chevron-right" class="fea icon-sm"></i></a>]]></description>
										<content:encoded><![CDATA[
<p><a href="https://agilelogix.com" target="_blank" rel="noopener">AgileLogix</a> offers both <strong>Yearly</strong> and <strong>Lifetime</strong> licenses for our plugins. This guide helps you understand <strong>when and how to renew your license or support</strong>, depending on the plan you purchased.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><strong>Important Note:</strong><br>This guide does <strong>not apply to Agile Store Locator</strong>, which is sold exclusively on <a href="https://codecanyon.net/item/agile-store-locator-google-maps-for-wordpress/16973546" target="_blank" rel="noopener"><strong>CodeCanyon (Envato Market)</strong></a>.<br>For renewing Agile Store Locator, please log into your <strong>Envato account</strong> and extend support or re-purchase the license from there.</p>
</blockquote>



<h2 class="wp-block-heading">What Are You Renewing?</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Plan Type</th><th>What Expires</th><th>What You Renew</th><th>Renewal Cost</th></tr></thead><tbody><tr><td><strong>Yearly License</strong></td><td>License &amp; Support</td><td>Full License</td><td>Product Price</td></tr><tr><td><strong>Lifetime License</strong></td><td>Support Only</td><td>Support Access Only</td><td>$30/year</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">Yearly License Renewal</h2>



<p>With a <strong>Yearly License</strong>, your license and support are valid for one year. After expiry:</p>



<ul class="wp-block-list">
<li>You lose access to updates and support.</li>



<li>Renewing restores both.</li>
</ul>



<h3 class="wp-block-heading">How to Renew:</h3>



<ol class="wp-block-list">
<li>Log in to your <a href="https://agilelogix.com/all-downloads/" target="_blank" rel="noopener">AgileLogix account</a>.</li>



<li>Go to the <strong>All Downloads</strong> section.</li>



<li>Locate the <strong>expired license</strong>.</li>



<li>Click <strong>Renew</strong> and complete checkout.</li>
</ol>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="323" src="https://agilestorelocator.com/wp-content/uploads/2025/06/license-renewal-button-1024x323.png" alt="License renewal button" class="wp-image-4028" title="Docs 23" srcset="https://agilestorelocator.com/wp-content/uploads/2025/06/license-renewal-button-1024x323.png 1024w, https://agilestorelocator.com/wp-content/uploads/2025/06/license-renewal-button-300x95.png 300w, https://agilestorelocator.com/wp-content/uploads/2025/06/license-renewal-button-768x242.png 768w, https://agilestorelocator.com/wp-content/uploads/2025/06/license-renewal-button-360x113.png 360w, https://agilestorelocator.com/wp-content/uploads/2025/06/license-renewal-button-350x110.png 350w, https://agilestorelocator.com/wp-content/uploads/2025/06/license-renewal-button-76x24.png 76w, https://agilestorelocator.com/wp-content/uploads/2025/06/license-renewal-button.png 1104w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<h2 class="wp-block-heading">Support Renewal for Lifetime License</h2>



<p><strong>Lifetime Licenses</strong> never expire, but support lasts <strong>1 year</strong>. After that:</p>



<ul class="wp-block-list">
<li>You still receive plugin updates.</li>



<li>You lose access to customer support unless renewed.</li>
</ul>



<h3 class="wp-block-heading">Renew Support for $30:</h3>



<ol class="wp-block-list">
<li>Log into <a href="https://agilelogix.com/all-downloads/" target="_blank" rel="noopener">AgileLogix</a>.</li>



<li>Go to <strong>All Downloads</strong>.</li>



<li>Locate the <strong>Lifetime license</strong> with <strong>Support Expired</strong>.</li>



<li>Click <strong>Renew Support</strong>.</li>



<li>Complete checkout. Your support will extend 1 year.</li>
</ol>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="331" src="https://agilestorelocator.com/wp-content/uploads/2025/06/support-renew-al-1024x331.png" alt="Renew Support" class="wp-image-4029" title="Docs 24" srcset="https://agilestorelocator.com/wp-content/uploads/2025/06/support-renew-al-1024x331.png 1024w, https://agilestorelocator.com/wp-content/uploads/2025/06/support-renew-al-300x97.png 300w, https://agilestorelocator.com/wp-content/uploads/2025/06/support-renew-al-768x248.png 768w, https://agilestorelocator.com/wp-content/uploads/2025/06/support-renew-al-360x116.png 360w, https://agilestorelocator.com/wp-content/uploads/2025/06/support-renew-al-350x113.png 350w, https://agilestorelocator.com/wp-content/uploads/2025/06/support-renew-al-76x25.png 76w, https://agilestorelocator.com/wp-content/uploads/2025/06/support-renew-al.png 1102w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">How to Check Your Plan</h2>



<p>From your AgileLogix account dashboard:</p>



<ul class="wp-block-list">
<li><strong>License Type:</strong> “Lifetime” or “Yearly”</li>



<li><strong>Support Expiry:</strong> Shown below each license key</li>
</ul>



<h2 class="wp-block-heading">Lost Access to Your Account?</h2>



<p>If you no longer have access to your AgileLogix account:</p>



<ul class="wp-block-list">
<li>You can <strong>purchase a new license</strong> directly from <a href="https://agilelogix.com/" target="_blank" rel="noopener">AgileLogix.com</a>.</li>



<li>After purchase, you can <strong>register the new license</strong> on your existing site using the plugin’s <strong>License Activation</strong> panel.</li>
</ul>



<p>Your plugin and settings will remain intact — you’re simply linking it to a new license key.</p>



<h2 class="wp-block-heading">Need Help?</h2>



<p>Email us: <strong>support@agilelogix.com</strong></p>



<p>We&#8217;re happy to assist with renewals and support questions!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://agilestorelocator.com/wiki/license-support-renewal-guide/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Change Number of Columns in Template 4 Grid Layout</title>
		<link>https://agilestorelocator.com/wiki/change-number-of-columns-in-template-4-grid-layout/</link>
					<comments>https://agilestorelocator.com/wiki/change-number-of-columns-in-template-4-grid-layout/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 23 Jun 2025 07:03:57 +0000</pubDate>
				<guid isPermaLink="false">https://agilestorelocator.com/?post_type=docs&#038;p=4026</guid>

					<description><![CDATA[By default, Template 4 displays store listings in a three-column layout on large screens using the following classes: If you&#8217;d like to customize the number of columns, you can easily do this by modifying the Bootstrap column classes. Steps to Customize: Replace the pol-lg-4 class to adjust the number of columns: Example (4-column layout): This ... <br><a href="https://agilestorelocator.com/wiki/change-number-of-columns-in-template-4-grid-layout/" class="text-muted readmore">Read More <i data-feather="chevron-right" class="fea icon-sm"></i></a>]]></description>
										<content:encoded><![CDATA[
<p>By default, <strong>Template 4</strong> displays store listings in a three-column layout on large screens using the following classes:</p>



<pre class="wp-block-prismatic-blocks"><code class="language-markup" data-line="">&lt;li class=&quot;pol-lg-4 pol-md-6 pol-sm-12 sl-item&quot; data-id=&quot;{{:id}}&quot; tabindex=&quot;0&quot; accesskey=&quot;{{:id}}&quot;&gt;</code></pre>



<p>If you&#8217;d like to <strong>customize the number of columns</strong>, you can easily do this by modifying the Bootstrap column classes.</p>



<h4 class="wp-block-heading">Steps to Customize:</h4>



<ul class="wp-block-list">
<li>Go to <strong><a href="https://agilestorelocator.com/wiki/customization-of-store-locator/">ASL Settings > Customizer</a></strong>.</li>



<li>Select <strong>Template 4</strong> from the dropdown.</li>



<li>Click the <strong>“Load Template”</strong> button to load the template HTML.</li>



<li>In the <strong>List Section</strong>, locate the <code class="" data-line="">&lt;li&gt;</code> element that looks like:</li>
</ul>



<pre class="wp-block-prismatic-blocks"><code class="language-markup" data-line="">&lt;li class=&quot;pol-lg-4 pol-md-6 pol-sm-12 sl-item&quot; ...&gt;</code></pre>



<p>Replace the <code class="" data-line="">pol-lg-4</code> class to adjust the number of columns:</p>



<ul class="wp-block-list">
<li>Use <code class="" data-line="">pol-lg-3</code> for <strong>4 columns</strong></li>



<li>Use <code class="" data-line="">pol-lg-6</code> for <strong>2 columns</strong></li>



<li>Use <code class="" data-line="">pol-lg-12</code> for <strong>1 column</strong></li>
</ul>



<p>Example (4-column layout):</p>



<pre class="wp-block-prismatic-blocks"><code class="language-markup" data-line="">&lt;li class=&quot;pol-lg-3 pol-md-6 pol-sm-12 sl-item&quot; ...&gt;</code></pre>



<ul class="wp-block-list">
<li>Click <strong>Save Template</strong> after making changes.</li>
</ul>



<p>This allows you to tailor the grid layout to better fit your design preferences or available screen space.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://agilestorelocator.com/wiki/change-number-of-columns-in-template-4-grid-layout/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Agile Sync Addon – Developer Hooks (Actions &#038; Filters)</title>
		<link>https://agilestorelocator.com/wiki/agile-sync-addon-developer-hooks-actions/</link>
					<comments>https://agilestorelocator.com/wiki/agile-sync-addon-developer-hooks-actions/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 13 Jun 2025 13:58:25 +0000</pubDate>
				<guid isPermaLink="false">https://agilestorelocator.com/?post_type=docs&#038;p=4024</guid>

					<description><![CDATA[The Agile Sync Addon supports several powerful WordPress filters that allow developers to: Use these filters to customize your synchronization logic when working with platforms like Salesforce, Google Sheets, and REST APIs. Filters 1. asl_sync_data_row_mapping Transform each data record before it&#8217;s saved into the store database. Params: Set the marker_id via hook. 2. asl_sync_prepare_endpoint Customize ... <br><a href="https://agilestorelocator.com/wiki/agile-sync-addon-developer-hooks-actions/" class="text-muted readmore">Read More <i data-feather="chevron-right" class="fea icon-sm"></i></a>]]></description>
										<content:encoded><![CDATA[
<p>The <strong><a href="https://agilelogix.com/product/agile-sync-addon/" target="_blank" rel="noopener">Agile Sync Addon</a></strong> supports several powerful WordPress filters that allow developers to:</p>



<ul class="wp-block-list">
<li>Transform API responses</li>



<li>Modify endpoints and headers</li>



<li>Handle pagination</li>



<li>Map external data into the Agile Store Locator format</li>
</ul>



<p>Use these filters to customize your synchronization logic when working with platforms like Salesforce, Google Sheets, and REST APIs.</p>



<h2 class="wp-block-heading">Filters</h2>



<h3 class="wp-block-heading">1. asl_sync_data_row_mapping</h3>



<p>Transform each data record before it&#8217;s saved into the store database.</p>



<pre class="wp-block-prismatic-blocks"><code class="language-php" data-line="">add_filter(&#039;asl_sync_data_row_mapping&#039;, function ($store_inst, $data_row) {
    // Convert &quot;yes&quot; to true boolean
    if (isset($store_inst[&#039;is_disabled&#039;])) {
        $store_inst[&#039;is_disabled&#039;] = (strtolower($store_inst[&#039;is_disabled&#039;]) === &#039;yes&#039;) ? 1 : 0;
    }

    // Example: build Facebook URL
    if (isset($data_row[&#039;facebookVanityUrl&#039;])) {
        $store_inst[&#039;custom-facebook_url&#039;] = &quot;https://www.facebook.com/&quot; . esc_attr($data_row[&#039;facebookVanityUrl&#039;]) . &quot;/&quot;;
    }

    return $store_inst;
}, 10, 2);
</code></pre>



<p><strong>Params:</strong></p>



<ul class="wp-block-list">
<li><code class="" data-line="">$store_inst</code>: The processed store data array.</li>



<li><code class="" data-line="">$data_row</code>: The original raw API data row.</li>
</ul>



<p>Set the <code class="" data-line="">marker_id</code> via hook.</p>



<pre class="wp-block-prismatic-blocks"><code class="language-php" data-line="">add_filter(&#039;asl_sync_data_row_mapping&#039;, function ($store_inst, $data_row) {
    
		$store_inst[&#039;marker_id&#039;] = 153;

    return $store_inst;
}, 10, 2);</code></pre>



<h3 class="wp-block-heading">2. asl_sync_prepare_endpoint</h3>



<p>Customize or append query parameters to the API endpoint before the request is sent.</p>



<pre class="wp-block-prismatic-blocks"><code class="language-php" data-line="">add_filter(&#039;asl_sync_prepare_endpoint&#039;, function ($endpoint_url) {
    $endpoint_url .= &#039;&amp;filter={&quot;meta.folderId&quot;:{&quot;$eq&quot;:&quot;112810&quot;}}&#039;;
    return $endpoint_url;
});</code></pre>



<h3 class="wp-block-heading">3. asl_sync_logo_url</h3>



<p>Update or override the logo URL used during the sync process.</p>



<pre class="wp-block-prismatic-blocks"><code class="" data-line="">add_filter(&#039;asl_sync_logo_url&#039;, function ($logo_url, $handler) {
    return str_replace(&#039;http://&#039;, &#039;https://&#039;, $logo_url);
}, 10, 2);</code></pre>



<h3 class="wp-block-heading">4. asl_sync_endpoint</h3>



<p>Modify the final API endpoint using full sync config context.</p>



<pre class="wp-block-prismatic-blocks"><code class="language-php" data-line="">add_filter(&#039;asl_sync_endpoint&#039;, function ($endpoint, $config) {
    return $endpoint . &#039;?apikey=&#039; . $config[&#039;sync_key&#039;];
}, 10, 2);</code></pre>



<h3 class="wp-block-heading">5. asl_sync_request_data</h3>



<p>Alter the request payload (body) before it is sent to the API.</p>



<pre class="wp-block-prismatic-blocks"><code class="language-php" data-line="">add_filter(&#039;asl_sync_request_data&#039;, function ($data, $config) {
    $data[&#039;region&#039;] = &#039;Middle East&#039;;
    return $data;
}, 10, 2);</code></pre>



<h3 class="wp-block-heading">6. asl_sync_request_headers</h3>



<p>Customize or add headers to the outgoing API request.</p>



<pre class="wp-block-prismatic-blocks"><code class="language-php" data-line="">add_filter(&#039;asl_sync_request_headers&#039;, function ($headers, $config) {
    $headers[&#039;Authorization&#039;] = &#039;Bearer &#039; . $config[&#039;bearer_token&#039;];
    return $headers;
}, 10, 2);</code></pre>



<h3 class="wp-block-heading">7. asl_sync_api_request_params</h3>



<p>Modify the full set of parameters used in the request.</p>



<pre class="wp-block-prismatic-blocks"><code class="language-php" data-line="">add_filter(&#039;asl_sync_api_request_params&#039;, function ($params) {
    $params[&#039;timeout&#039;] = 30;
    return $params;
});</code></pre>



<h3 class="wp-block-heading">8. asl_sync_raw_response</h3>



<p>Filter or log the raw response before it&#8217;s parsed or mapped.</p>



<pre class="wp-block-prismatic-blocks"><code class="language-php" data-line="">add_filter(&#039;asl_sync_raw_response&#039;, function ($response, $params) {
    error_log(print_r($response, true));
    return $response;
}, 10, 2);</code></pre>



<h3 class="wp-block-heading">9. asl_sync_request_pagination</h3>



<p>Add logic to recursively fetch all pages from a paginated API.</p>



<pre class="wp-block-prismatic-blocks"><code class="language-php" data-line="">add_filter(&#039;asl_sync_request_pagination&#039;, function ($responseData, $apiClient, $params) {
    $all = $responseData[&#039;response&#039;][&#039;entities&#039;];
    $max = 10;

    while (isset($responseData[&#039;response&#039;][&#039;pageToken&#039;]) &amp;&amp; $max-- &gt; 0) {
        $params[&#039;endpoint&#039;] .= &#039;&amp;pageToken=&#039; . $responseData[&#039;response&#039;][&#039;pageToken&#039;];
        $responseData = $apiClient-&gt;makeApiRequest($params);

        if (isset($responseData[&#039;response&#039;][&#039;entities&#039;])) {
            $all = array_merge($all, $responseData[&#039;response&#039;][&#039;entities&#039;]);
        }
    }

    $responseData[&#039;response&#039;][&#039;entities&#039;] = $all;
    return $responseData;
}, 10, 3);</code></pre>



<h3 class="wp-block-heading">10. asl_sync_completed_event <em>(Action)</em></h3>



<p>Run custom logic after a sync completes.</p>



<pre class="wp-block-prismatic-blocks"><code class="language-php" data-line="">add_action(&#039;asl_sync_completed_event&#039;, function ($sync_key, $settings) {
    // Send admin notification or log sync summary
});</code></pre>



<h3 class="wp-block-heading">11. asl_sync_skip_data_row</h3>



<p>To create a criteria to skip certain rows from import based on condition.</p>



<pre class="wp-block-prismatic-blocks"><code class="language-php" data-line="">add_filter(&#039;asl_sync_skip_data_row&#039;, function ($should_skip, $row, $sync_id) {

	// Skip if the Sync_To_Store_Listing__c flag is missing or not true
	if (!isset($row[&#039;Sync_To_Store_Listing__c&#039;]) || strtolower($row[&#039;Sync_To_Store_Listing__c&#039;]) !== &#039;true&#039;) {
			return true; // Skip this record
	}

	return false; // Sync this record
}, 10, 3);
</code></pre>



<h3 class="wp-block-heading">12. asl_sync_validate_timestamp <em>(New in v1.0.6)</em></h3>



<p>Control whether a data row should be <strong>blocked by timestamp validation</strong> during sync. Returning <code class="" data-line="">false</code> from this filter <strong>bypasses</strong> the “updated_on vs last_exec_time_stamp” check so the row will be processed even if its timestamp is not newer.</p>



<h4 class="wp-block-heading">Example: One-time backfill (bypass only once)</h4>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Use a static flag to ensure the bypass happens <strong>once per run</strong> (recommended to avoid reprocessing every row repeatedly).</p>
</blockquote>



<pre class="wp-block-prismatic-blocks"><code class="language-php" data-line="">/**
 * One-time bypass to force a backfill on the first row only.
 * Version: v1.0.6+
 */
function asl_force_sync_timestamp_bypass_once( $validate, $row, $sync_id, $row_ts, $last_ts ) {
 
    return false; // bypass timestamp validation ONCE
}
add_filter( &#039;asl_sync_validate_timestamp&#039;, &#039;asl_force_sync_timestamp_bypass_once&#039;, 10, 5 );</code></pre>



<h2 class="wp-block-heading">Developer Notes</h2>



<ul class="wp-block-list">
<li>Use filters inside a custom plugin or your theme’s <code class="" data-line="">functions.php</code>.</li>



<li>Always validate and sanitize external data before saving.</li>



<li>Test filters with a manual sync run using the “Run Sync Now” button.</li>
</ul>



<h2 class="wp-block-heading">Need Help?</h2>



<p>For custom integration support or additional hooks, reach out at<strong> support@agilelogix.com</strong></p>
]]></content:encoded>
					
					<wfw:commentRss>https://agilestorelocator.com/wiki/agile-sync-addon-developer-hooks-actions/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
