ReviewRover

Review Rover for AI Agents

Machine-readable setup guide — fetch this page as text/plain for plain markdown.

What Review Rover Does

Review Rover automates Google review collection for local businesses. You enroll customers into campaigns, which send SMS/email sequences requesting reviews. Once a review is posted, the enrollment is marked complete. You can also monitor incoming reviews and post AI-generated replies.

Human-in-the-Loop Steps (Required Once)

These steps require a human with a browser. An agent cannot complete them.

  1. Create an account at admin.reviewrover.co
  2. Connect Google Business Profile via Settings → Integrations (OAuth — browser required)
  3. Generate an API token at Settings → API Tokens and hand it to the agent

Once those three steps are done, the agent handles everything else.

API Basics

Base URL:  https://api.reviewrover.co/api/v1
Auth:      Authorization: Bearer <token>
Format:    JSON (Content-Type: application/json)

CLI Quickstart

Install the CLI (works with any AI that can run shell commands):

npm install -g review-rover
# or use without installing:
npx review-rover <command>
# Save your API token
review-rover auth

# Set a default account
review-rover accounts list

Canonical Agent Workflow

After the human setup above, an agent automates the full review loop:

Step 1: Find or create a contact

# CLI
review-rover contacts upsert --email="john@example.com" --name="John Smith" --phone="555-1234"

# HTTP
GET /api/v1/contacts?email=john@example.com
POST /api/v1/contacts
  { "email": "john@example.com", "first_name": "John", "last_name": "Smith" }

Step 2: List available campaigns

# CLI
review-rover campaigns list

# HTTP
GET /api/v1/campaigns

Step 3: Enroll the contact

# CLI
review-rover enroll --contact=cont_xxx --campaign=camp_xxx

# HTTP
POST /api/v1/enrollments
  { "contact_id": "cont_xxx", "campaign_id": "camp_xxx" }

Step 4: Monitor the review queue

# CLI
review-rover reviews list --unreplied --json

# HTTP
GET /api/v1/metrics/unreplied_reviews
# Returns: { count, reviews[], locations[] }

Step 5: Draft and post a reply

# CLI — draft (AI-generated, not posted)
review-rover reviews draft --id=rev_xxx --tone=professional

# CLI — post a reply
review-rover reviews reply --id=rev_xxx --message="Thank you for the kind words!"

# HTTP — generate draft
POST /api/v1/reviews/rev_xxx/reply/generate

# HTTP — save reply
POST /api/v1/reviews/rev_xxx/reply
  { "body": "Thank you for the kind words!" }

Step 6: (Optional) Register a webhook to avoid polling

# CLI
review-rover webhooks create --url="https://myagent.com/hook" --events=review.created

# HTTP
POST /api/v1/webhook_subscriptions
  { "url": "https://myagent.com/hook", "event_types": ["review.created"] }

Webhook payloads are signed with X-ReviewRover-Signature: sha256=<hmac>

Useful Metrics Endpoints

# Unreplied reviews summary
GET /api/v1/metrics/unreplied_reviews

# Review velocity (last 7 / 30 days)
GET /api/v1/metrics/review_velocity

Full API Reference

Complete endpoint docs with request/response schemas: docs.reviewrover.co