LocalPins Documentation
LocalPins is a WordPress plugin for local service businesses. It creates a structured system for logging completed jobs from the field, publishing them as SEO-optimized pages, and distributing them to connected social and business profile accounts — with human review at every step.
How the system works
The core workflow is linear. A field technician submits a completed job through the mobile field app. The submission enters a review queue. An admin reviews, edits if needed, and approves. On approval a pin page is published — and if social distribution is configured, the job is queued for posting to connected platforms.
Tech submits from field app
Service type, location, photos, customer type, and job notes captured at the job site.
Submission enters review queue
Nothing is publicly visible. Written content is generated and attached for admin review.
Admin reviews and approves
Admin can edit any field, replace generated content, or reject the submission.
Pin page goes live
A dedicated page is created at a structured URL with map, photos, details, testimonial, and schema markup.
Social distribution triggers
If configured, the job is queued for GBP, Facebook, or Instagram based on location settings and posting mode.
LocalPins v25.13 · DataPins Social v1.0.0 · LocalPins GBP Connect v1.1.3
Requirements
| Requirement | Minimum | Notes |
|---|---|---|
| WordPress | 6.0 | Tested up to 7.0 |
| PHP | 8.0 | 8.1 recommended |
| MySQL | 5.7 | MariaDB 10.3+ also supported |
| SSL certificate | Required | Field app API requires HTTPS |
| LocalPins license key | Required | Obtained from localpins.co |
| Yoast SEO | Optional | Schema integration is built in — no conflicts |
Installation
Upload the plugin zip
In WordPress admin, go to Plugins → Add New → Upload Plugin. Upload localpins-v1.zip and click Install Now.
Activate the plugin
Click Activate Plugin. The Local Pins menu will appear in the WordPress admin sidebar.
Enter your license key
Go to Local Pins → License. Enter your license key and click Activate. The key is verified with localpins.co.
Run database setup
Go to Local Pins → Settings → Advanced and click Fix Database Table if prompted. This creates required tables on first install.
Flush permalinks
Go to Settings → Permalinks and click Save Changes to register the pin page URL structure.
If pin pages are not displaying after installation, go to Settings → Permalinks and save again to flush rewrite rules.
Initial Setup Checklist
Complete these steps before sending techs into the field.
| Step | Location | What to enter |
|---|---|---|
| Business name | Settings → Business Info | Full business name |
| Phone number | Settings → Business Info | Primary contact number |
| Cities served | Settings → Cities & Services | One city per line |
| Services offered | Settings → Cities & Services | One service per line |
| Base URL slug | Settings → Advanced | e.g. projects or jobs |
| Contact page URL | Settings → Call to Action | URL of the site's contact page |
| API password | Settings → API Keys | Password for field app access |
| Google Maps key | Settings → API Keys | Required for map display on pin pages |
Field App
The field app is a mobile-optimized web page that technicians use to submit completed jobs. It runs in any mobile browser — no installation required.
Accessing the field app
The field app URL is:
https://[your-site]/[base-slug]/submit/
Share this URL with technicians. They will be prompted for their name and the API password set in Settings → API Keys.
Have technicians add the field app URL to their phone's home screen (Add to Home Screen in Safari/Chrome) for quick access from the job site.
Submission fields
Review Queue
All field submissions go into the review queue (Local Pins → Review Queue) and remain private until approved. The queue shows all pending submissions with photos, location, and generated content.
Approving a single pin
Click any pending submission to open the edit screen. Review all fields, make edits as needed, and click Approve. The pin page is created immediately.
Bulk approving
Select multiple submissions using the checkboxes. Use Bulk Actions → Approve. All selected pins publish in one action.
Editing before approval
Any field can be edited before approval — service type, street address, customer type, job notes, and generated written content. Edits are reflected in the published pin page.
If social distribution is configured, approving a pin adds it to the social queue immediately. In Auto mode the GBP post may go out within minutes of approval.
Pin Pages
A pin page is created automatically when a submission is approved. Pages follow this URL structure:
https://[site]/[base-slug]/[city]/[service]/[street]/
// Example
https://peakconstruction.biz/projects/hudson/new-construction/union-street/
Page section order
| # | Section | Contents |
|---|---|---|
| 1 | Map + Job Details | GPS map, service, location, customer type, season, date, star rating |
| 2 | Testimonial | Customer review, star rating, review links — shown only if entered |
| 3 | Job Photos | Gallery of submitted photos |
| 4 | Job Notes | Admin-editable notes field |
| 5 | Related Links | Portfolio or reference buttons — optional |
| 6 | Written Content | Generated job description |
| 7 | Call to Action | Configurable CTA with button to contact page |
| 8 | Internal Links | Links to related city and service pages |
| 9 | Related Jobs | Other pins in the same city or service |
| 10 | FAQs | FAQ accordion — shown if FAQs assigned for this service + city |
Business Info
Go to Local Pins → Settings → Business Info. These fields appear throughout pin pages, schema markup, and social post captions.
| Field | Used in |
|---|---|
| Business name | Schema provider name, social captions, CTA section, page titles |
| Phone number | GBP Call Now CTA, social captions, pin page footer |
| Logo URL | Schema publisher logo |
| State | Pin page titles, social captions, schema areaServed |
Cities & Services
Go to Local Pins → Settings → Cities & Services. Enter one city per line and one service per line. These lists populate the dropdowns in the field app.
The city name entered here must match exactly what appears on pin pages, social captions, and schema markup — same capitalization and spelling throughout.
City URLs
Go to Local Pins → Settings → City URLs. This tab has three sections.
City Page URLs
Map each city to its service area page on the website. Used in breadcrumb links and the "View all [city] jobs" link on pin pages.
City + Service URLs
Map specific service + city combinations to dedicated landing pages. Used in the "Learn more: [Service] in [City]" link on pin pages.
Sitewide Service URLs
Map services to their main service category pages. Falls back to this when no city-specific URL is set.
Importing via Excel
All three types can be imported in one Excel file using four columns: city, service, url, label. Leave city blank for sitewide service URLs. Leave service blank for city-only URLs.
SEO Settings
LocalPins outputs a JSON-LD @graph block on every pin page containing Service, BreadcrumbList, and optionally Review schema nodes. These are compatible with Yoast SEO and do not conflict with existing site schema.
Setting Up Google Business Profile
GBP posting is handled through a relay on localpins.co. Google credentials are stored on localpins.co — they are never stored on the client site. The client authorizes with one click.
Install DataPins Social plugin
Upload and activate the DataPins Social plugin zip on the client site.
Go to Social → Settings → Connections
The Connections tab shows the Google Business Profile connection status.
Click Connect with Google
A popup opens to localpins.co. Log in with the Google account that has access to the GBP listing. Click Allow on the permissions screen.
Status shows Connected
The popup closes and the connected Google account email is displayed.
Go to Locations tab — select GBP listing
Click Refresh listings. Select the correct GBP listing from the dropdown. Set posting mode, daily limit, and CTA type. Save Settings.
The My Business Account Management API requires Google to manually grant quota before listings will appear in the dropdown. If no listings appear, a quota request must be submitted via the GBP API contact form. Google review time is approximately 7–10 business days.
Social Queue
Go to Local Pins → Social Queue. The queue shows every post entry across all platforms — status, platform, scheduled time, and available actions.
| Status | Meaning | Next action |
|---|---|---|
| On Hold | Manual mode — waiting for admin to click Post Now | Click Post Now in queue |
| Pending | Scheduled — will process on next cron run | Wait or cancel |
| Scheduled | Hybrid mode — posts after configured delay | Wait or cancel during window |
| Posted | Successfully posted to platform | No action needed |
| Failed | Failed after 3 retry attempts | Check error, fix, retry |
| Cancelled | Cancelled by admin | Re-queue if needed |
Queue maintenance
At the bottom of the Social Queue page, the Queue Maintenance section provides two cleanup tools: Clear cancelled & failed entries removes all non-active rows. Clear stale entries removes rows for pins that have been deleted from the main plugin.
Posting Modes
Each location in Social Settings can be set to one of three posting modes. The mode can be overridden per pin in the pin edit screen.
Testimonials
Testimonials are added per pin in the pin edit screen (Local Pins → All Pins → edit a pin → scroll to the Testimonial section).
If the Review Quote field is left blank, the testimonial section does not appear on the pin page. All other sections are unaffected.
FAQ Manager
Go to Local Pins → FAQ Manager. FAQs are organized into pools by service type and city combination. Each pool is a set of questions and answers that will appear on matching pin pages.
Creating a FAQ pool
Select service and city
Choose the service type and city this pool applies to.
Add questions and answers
Enter each question and its answer. No limit on FAQs per pool.
Save the pool
FAQs are automatically assigned to new pin pages for that service + city on next approval.
The FAQ Manager flags when the same pool is used across 8 or more pins. Identical FAQ content across many pages can trigger duplicate content signals in search. The warning is advisory — admins decide whether to create a new pool.
Written Content
Each pin page includes a written description of the job, generated from the job notes, location data, service type, and customer context submitted through the field app. Content goes through the review queue before publishing. Admins can edit, replace, or supplement it before approval.
Excel Import
Go to Local Pins → Import Jobs. Bulk job submissions can be imported from an Excel file. Imported pins go into the review queue and are not published until approved.
Excel file format
Download the template from the Import Jobs page. Columns:
service_type // Must match a service in Settings exactly
city // Must match a city in Settings exactly
street // Street name of the job location
customer_type // Optional
job_notes // Optional — description of the work
job_date // Optional — YYYY-MM-DD format
City URL import
City URLs can be imported via Settings → City URLs → Import. Use columns: city, service, url, label. Leave city blank for sitewide service URLs.
URL Management
Changing the base slug
The base slug is the first segment of every pin page URL (e.g. /projects/). Set in Settings → Advanced → Base URL Slug. Changing it automatically creates 301 redirects from the old slug to the new one.
Go to Settings → Permalinks and click Save Changes to flush rewrite rules. Verify existing pin pages still load before making other changes.
Old slug redirects
Settings → Advanced → Old Slug Redirect Tool lets you manually add legacy URL patterns that redirect to the current slug. Useful when migrating from another URL structure.
Slug repair
Settings → Tools → slug repair identifies and corrects pin pages with malformed or duplicate slugs. Run this after bulk imports or service renames.
Analytics
Go to Local Pins → Analytics. The dashboard tracks views and referrers for published pin pages. No external analytics service required for basic tracking.
Analytics tracks views of published pin pages only. Field app submissions and admin pages are not tracked.
Advanced Settings
Go to Local Pins → Settings → Advanced.
| Setting | Default | Description |
|---|---|---|
| Base URL Slug | localpins | First URL segment for all pin pages |
| Sitemap Filename | job-pins-sitemap | Filename for the pin page XML sitemap |
| Rate Limit Allowlist | Empty | IPs or CIDR ranges exempt from field app rate limiting |
| Fix Database Table | — | Repairs plugin DB table — run if columns are missing after an update |
Rate limit allowlist
The field app enforces a rate limit on submissions per IP address per hour. Add office IP addresses to the allowlist to exempt them. Supports exact IPs and CIDR notation. One entry per line.
Social Distribution Overview
Social distribution requires the DataPins Social plugin installed separately. Once active, a Social menu appears under Local Pins with Settings and Social Queue submenus.
Each platform is configured as a Location in Social Settings → Locations tab. A location defines which platform to post to, which posting mode to use, and which caption template to apply.
DataPins Social requires LocalPins v25.10 or higher. Install the main plugin first.