Most of my ideas are born from necessity or curiosity. I had a client that needed better review management for their WordPress site, so the creative problem-solving began…
- I needed a good existing plugin that supports reviews as a custom post type, with schema. I like, use, and already recommend Site Reviews.
- I was surprised to learn that they don’t support importing Google reviews natively and there’s no add-ons out there that handle it either. So I made one, Business Reviews Importer.
- It has a Simple Mode, which is useful for new Google Business Profiles or ones that otherwise only need to import new reviews as they come. It works, it’s easy to set up, but because Google aggressively caches reviews through this API, it’s very SLOW. It can only import a review roughly 7 days after it’s been posted.
- It also has an Advanced Mode, which will handle more reviews (including old reviews), more quickly, but is more difficult to set up as you must be approved by Google before you can use this API. If you’re able to get approved, you’ll likely still stay within the free limits, and never have to pay.
- I don’t like to wait though, so I manually copied all the reviews from the source code of the client’s GBP and fed them into a custom script to import them immediately.
Here’s an example of the optional import script (you can just skip to using the plugin if you’re not comfortable messing around with code):
<?php
/**
* Site Reviews Import Script
*
* Instructions:
* 1. Place this file (reviews.php) in your WordPress root directory
* 2. Access via browser: example.com/reviews.php
* 3. Delete this file after import completes
*
* Total Reviews: 100 (4-5 star reviews only)
* 5-star: 90
* 4-star: 10
*/
define( 'WP_USE_THEMES', false );
require_once( './wp-load.php' );
if ( !function_exists( 'glsr_create_review' ) ) {
die( 'Site Reviews plugin is not active!' );
}
set_time_limit( 300 );
$reviews = [
[
'name' => 'Sam',
'rating' => 5,
'content' => 'Great work!',
'date' => '2025-01-01',
],
[
'name' => 'Samantha',
'rating' => 4,
'content' => 'Thanks, everything looks great.',
'date' => '2025-10-03',
]
];
$imported = 0;
$failed = 0;
echo '<h2>Importing Reviews...</h2>';
echo '<div style="font-family:monospace;line-height:1.8">';
foreach ( $reviews as $review_data ) {
$result = glsr_create_review( [
'rating' => $review_data['rating'],
'content' => $review_data['content'],
'name' => $review_data['name'],
'title' => $review_data['name'],
'date' => $review_data['date'],
'email' => 'imported@reviews-importer.local',
'ip_address' => '0.0.0.0',
'is_approved' => true,
'is_pinned' => false,
'is_verified' => false,
] );
if ( $result ) {
$imported++;
echo "✓ Imported: {$review_data['name']} ({$review_data['rating']} stars)<br>";
} else {
$failed++;
echo "✗ Failed: {$review_data['name']}<br>";
}
flush();
}
echo '</div>';
echo "<br><strong>Import Complete!</strong><br>";
echo "Imported: {$imported}<br>";
echo "Failed: {$failed}<br>";
echo "<br><a href='" . admin_url( 'edit.php?post_type=site-review' ) . "'>View Reviews</a>";
?>
What’s the point of importing your Google reviews into WordPress?
I was surprised to learn that there’s no conflict with copying your reviews from your GBP to your website. It doesn’t create duplicate content, it’s not frowned upon by Google or seen as spammy, and can actually have SEO benefits.
Note that importing should not be confused with displaying using a widget that shows your Google reviews on your website by embedding an iframe into it. There are many widgets that accomplish this, but it has no value beyond visibly showing the reviews; it doesn’t actually bring the content into your website’s content.