Google Sheets to WordPress Plugin – LIFETIME LICENSE
Automatically sync content from Google Sheets to WordPress posts with powerful field mapping and real-time synchronization.
Description
Google Sheets to WordPress is a powerful automation plugin that bridges the gap between Google Sheets and WordPress content management. Create, update, and manage WordPress posts directly from Google Sheets with flexible field mapping, automatic synchronization, and comprehensive admin controls.
Perfect for content teams, bloggers, and businesses who want to streamline their content workflow by leveraging the collaborative power of Google Sheets while maintaining the publishing capabilities of WordPress.
Key Features
- Automatic Synchronization: Real-time sync from Google Sheets to WordPress posts
- Flexible Field Mapping: Map any Google Sheets column to WordPress post fields (title, content, excerpt, etc.)
- Public & Private Sheet Support: Works with both public Google Sheets (API key) and private sheets (OAuth authentication)
- Multiple Configuration Support: Manage multiple Google Sheets with different settings
- Post Type Support: Create posts, pages, or custom post types
- Category Management: Automatically assign categories based on sheet data
- Featured Image Handling: Set featured images from URLs in your sheets
- Custom Fields Support: Map sheet columns to custom post meta fields
- Draft/Published Control: Set post status (draft, published, private, etc.)
- Duplicate Prevention: Intelligent duplicate detection and update handling
- Comprehensive Logging: Detailed sync history and error logging
- Admin Dashboard: Complete WordPress admin interface with sync controls
- Security Features: Nonce verification, capability checks, and input sanitization
How It Works
- Connect Your Google Sheet: Add your Google Sheets ID and configure API access
- Map Your Fields: Define which columns map to WordPress post fields
- Configure Settings: Set post type, status, author, and other options
- Sync Content: Manual sync or automatic synchronization
- Manage Posts: View sync history and manage created content
Server Requirements
- PHP 7.4 or higher
- WordPress 5.0 or higher
- cURL extension enabled
- Google Sheets API access (API key or OAuth)
Google Sheets Setup
For Public Sheets (Recommended for beginners):
-
Create a Google Cloud Project:
- Go to Google Cloud Console
- Create a new project or select existing one
- Enable the Google Sheets API
-
Get an API Key:
- Go to APIs & Services → Credentials
- Click “Create Credentials” → “API Key”
- Copy the API key for use in the plugin
-
Make Your Sheet Public:
- Open your Google Sheet
- Click “Share” → “Change to anyone with the link”
- Set permission to “Viewer”
For Private Sheets (Advanced users):
-
Create OAuth 2.0 Credentials:
- In Google Cloud Console → Credentials
- Create OAuth 2.0 Client ID
- Add your WordPress site URL as authorized redirect URI
- Download the credentials JSON file
-
Configure OAuth in Plugin:
- Upload credentials in plugin settings
- Complete the authentication flow
- Grant necessary permissions
Installation
Manual Installation
- Download the plugin files
- Upload to
/wp-content/plugins/google-sheets-to-wordpress/ - Activate the plugin through the Plugins menu
- Navigate to Sheets to WP in your WordPress admin
Configuration
-
Add Configuration:
- Go to Sheets to WP → Configurations
- Click “Add New Configuration”
- Enter your Google Sheets ID and range
-
Set Up Authentication:
- For public sheets: Add your Google Sheets API key
- For private sheets: Configure OAuth authentication
-
Map Fields:
- Define which columns map to post title, content, etc.
- Configure post settings (type, status, author)
-
Test Sync:
- Click “Sync” to test the connection
- Verify posts are created correctly
Google Sheets Structure
Recommended Column Layout
For optimal results, structure your Google Sheet as follows:
| Column A | Column B | Column C | Column D | Column E |
|---|---|---|---|---|
| My First Post | This is the content of my first post | Technology | https://example.com/image.jpg | tech,wordpress |
| Second Post | Content for the second post | News | https://example.com/image2.jpg | news,update |
Best Practices
- Use Clear Headers: While not required, clear column headers help with organization
- Consistent Data Format: Maintain consistent formatting across all rows
- URL Format for Images: Use complete URLs for featured images
- Category Names: Use exact category names as they appear in WordPress
- Tag Separation: Separate multiple tags with commas
- Empty Rows: Empty rows will be automatically skipped
Supported Data Types
- Text: Post titles, content, excerpts
- HTML: Rich content with HTML formatting
- URLs: Featured images, custom field URLs
- Comma-separated Values: Categories, tags
- Numbers: Custom field numeric values
- Dates: Custom field date values (YYYY-MM-DD format)
Field Mapping Options
- Post Title (post_title)
- Post Content (post_content)
- Post Excerpt (post_excerpt)
- Featured Image URL (featured_image)
- Categories (categories)
- Tags (tags)
- Custom Fields (any meta key)
Use Cases
- Content Teams: Collaborative content creation and publishing workflow
- Bloggers: Bulk content import and management
- News Sites: Rapid content publishing from editorial sheets
- E-commerce: Product data synchronization
- Event Management: Event listings from planning spreadsheets
- Directory Sites: Location or business data import
Frequently Asked Questions
How do I get my Google Sheets ID?
The Google Sheets ID is found in the URL of your sheet:https://docs.google.com/spreadsheets/d/SHEET_ID_HERE/edit
Can I sync multiple sheets?
Yes! You can create multiple configurations, each pointing to different Google Sheets with their own field mappings and settings.
Will this overwrite existing posts?
The plugin includes duplicate detection. You can configure whether to update existing posts or skip them.
What happens if my sheet has empty rows?
Empty rows (where both title and content columns are empty) are automatically skipped during synchronization.
Can I schedule automatic syncs?
Currently, the plugin supports manual synchronization. Automatic scheduling features are planned for future releases.
Is my data secure?
Yes! The plugin uses WordPress security best practices including nonce verification, capability checks, and secure API communication.
What if I exceed Google API limits?
The plugin includes rate limiting and will pause synchronization if API limits are reached. You can adjust sync frequency in settings.
Advanced Features
Batch Processing
- Process multiple rows efficiently with built-in rate limiting
- Automatic retry mechanism for failed synchronizations
- Progress tracking for large datasets
Data Validation
- Automatic data type validation and sanitization
- Required field checking before post creation
- Error reporting with detailed feedback
Performance Optimization
- Intelligent caching system to reduce API calls
- Optimized database queries for large datasets
- Memory-efficient processing for bulk operations
Developer Features
- Action and filter hooks for customization
- Extensible architecture for custom field types
- REST API endpoints for external integrations
Troubleshooting
Common Issues
“Failed to read Google Sheets data”
- Verify your Google Sheets ID is correct
- Check that your API key has proper permissions
- Ensure the sheet is publicly accessible (for public sheets)
“Google authentication required”
- Complete the OAuth setup process in Settings
- Verify your OAuth credentials are properly configured
- Check that redirect URIs match your WordPress site URL
“No data found in the specified sheet range”
- Verify your sheet range (e.g., “A:Z” or “Sheet1!A1:C100”)
- Check that your sheet contains data in the specified columns
- Ensure column headers are in the first row
Posts not being created
- Check field mappings are correctly configured
- Verify post type and status settings
- Review sync logs for detailed error messages
Debug Mode
Enable debug logging in WordPress to get detailed information:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
Check /wp-content/debug.log for detailed error messages.