Getting Started

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.

ℹ️
Current versions

LocalPins v25.13 · DataPins Social v1.0.0 · LocalPins GBP Connect v1.1.3

Getting Started

Requirements

RequirementMinimumNotes
WordPress6.0Tested up to 7.0
PHP8.08.1 recommended
MySQL5.7MariaDB 10.3+ also supported
SSL certificateRequiredField app API requires HTTPS
LocalPins license keyRequiredObtained from localpins.co
Yoast SEOOptionalSchema integration is built in — no conflicts
Getting Started

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.

⚠️
After installation

If pin pages are not displaying after installation, go to Settings → Permalinks and save again to flush rewrite rules.

Getting Started

Initial Setup Checklist

Complete these steps before sending techs into the field.

StepLocationWhat to enter
Business nameSettings → Business InfoFull business name
Phone numberSettings → Business InfoPrimary contact number
Cities servedSettings → Cities & ServicesOne city per line
Services offeredSettings → Cities & ServicesOne service per line
Base URL slugSettings → Advancede.g. projects or jobs
Contact page URLSettings → Call to ActionURL of the site's contact page
API passwordSettings → API KeysPassword for field app access
Google Maps keySettings → API KeysRequired for map display on pin pages
Core Workflow

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.

💡
Tip

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

service_type
Selected from the list in Settings → Cities & Services
Required
street
Street name of the job location. City auto-detected from GPS or selected manually
Required
city
Selected from the configured cities list
Required
photos
Up to 10 photos. First photo used as featured image and for social posts
Optional
customer_type
e.g. Homeowner, Architect, Property Manager
Optional
job_notes
Free text description of the work done — used in content generation
Optional
tech_name
Entered at login, attached to submission for admin reference
Auto
Core Workflow

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.

⚠️
Social distribution

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.

Core Workflow

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

#SectionContents
1Map + Job DetailsGPS map, service, location, customer type, season, date, star rating
2TestimonialCustomer review, star rating, review links — shown only if entered
3Job PhotosGallery of submitted photos
4Job NotesAdmin-editable notes field
5Related LinksPortfolio or reference buttons — optional
6Written ContentGenerated job description
7Call to ActionConfigurable CTA with button to contact page
8Internal LinksLinks to related city and service pages
9Related JobsOther pins in the same city or service
10FAQsFAQ accordion — shown if FAQs assigned for this service + city
Settings

Business Info

Go to Local Pins → Settings → Business Info. These fields appear throughout pin pages, schema markup, and social post captions.

FieldUsed in
Business nameSchema provider name, social captions, CTA section, page titles
Phone numberGBP Call Now CTA, social captions, pin page footer
Logo URLSchema publisher logo
StatePin page titles, social captions, schema areaServed
Settings

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.

💡
City names must match exactly

The city name entered here must match exactly what appears on pin pages, social captions, and schema markup — same capitalization and spelling throughout.

Settings

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.

Settings

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.

Canonical URLs managed automatically — base slug changes handled with 301 redirects
Yoast @graph merges correctly — no duplicate nodes or ID conflicts
Tiered indexability control — set pins to indexed, noindexed, or canonical per page
Auto-generated XML sitemap for all published pin pages
Social Distribution

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.

ℹ️
Dependency

DataPins Social requires LocalPins v25.10 or higher. Install the main plugin first.

Social Distribution

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.

⚠️
API access required

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 Distribution

Social Queue

Go to Local Pins → Social Queue. The queue shows every post entry across all platforms — status, platform, scheduled time, and available actions.

StatusMeaningNext action
On HoldManual mode — waiting for admin to click Post NowClick Post Now in queue
PendingScheduled — will process on next cron runWait or cancel
ScheduledHybrid mode — posts after configured delayWait or cancel during window
PostedSuccessfully posted to platformNo action needed
FailedFailed after 3 retry attemptsCheck error, fix, retry
CancelledCancelled by adminRe-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.

Social Distribution

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.

Auto
Posts immediately when the pin is approved. No additional steps required.
Best for: High-volume businesses with consistent job quality who want zero manual involvement after approval.
⏱️
Hybrid
Posts automatically after a configured delay of 1–72 hours. Can be cancelled during the window.
Best for: Businesses who want automation but a window to cancel before anything posts publicly.
Manual
Pin enters queue as On Hold. Nothing posts until an admin clicks Post Now for that specific entry.
Best for: Businesses who want to curate which jobs appear on social or write custom captions per post.
Pin Page Content

Testimonials

Testimonials are added per pin in the pin edit screen (Local Pins → All Pins → edit a pin → scroll to the Testimonial section).

review_quote
The customer's words — up to 1,000 characters. Displayed in the testimonial card on the pin page.
Optional
customer_name
e.g. Jennifer M. — displayed on the page and in Review schema
Optional
star_rating
1–5 stars. Shown in job details panel and testimonial card
Optional
review_date
Date the review was written — used in Review schema datePublished
Optional
review_links
Up to 3 label + URL pairs — e.g. Google Review, Houzz Project, Facebook Review
Optional

If the Review Quote field is left blank, the testimonial section does not appear on the pin page. All other sections are unaffected.

Pin Page Content

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.

⚠️
Pool reuse warning

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.

Pin Page Content

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.

Job notes from the field submission feed directly into content generation
Content is generated before admin review — ready to read and approve or edit
CTA blurb is configurable per service type and city
Link / portfolio buttons allow linking to related external references per job
Content review dashboard for bulk review and editing
Admin Tools

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.

Admin Tools

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.

⚠️
After changing the base slug

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.

Admin Tools

Analytics

Go to Local Pins → Analytics. The dashboard tracks views and referrers for published pin pages. No external analytics service required for basic tracking.

Top pages by views
Traffic by city and by service type
Referrer breakdown
Data stored in site database — exportable
ℹ️
Scope

Analytics tracks views of published pin pages only. Field app submissions and admin pages are not tracked.

Admin Tools

Advanced Settings

Go to Local Pins → Settings → Advanced.

SettingDefaultDescription
Base URL SluglocalpinsFirst URL segment for all pin pages
Sitemap Filenamejob-pins-sitemapFilename for the pin page XML sitemap
Rate Limit AllowlistEmptyIPs or CIDR ranges exempt from field app rate limiting
Fix Database TableRepairs 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.