For the complete documentation index, see llms.txt. This page is also available as Markdown.

Customers

Project customer records, nested outreach history, and lifecycle changes for integrations that sync people or dashboards.

List Customers

get

Retrieve project customers with optional search, tag, sort, facet filters, and calendar bounds on a chosen datetime column.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Query parameters
date_fromstring · date · nullableOptional

Inclusive lower calendar date (YYYY-MM-DD) for the column chosen by date_key, defaulting to created_at when date_key is omitted.

date_keystring · enum · nullableOptional

Customer datetime column paired with date_from and date_to (defaults to created_at when omitted).

Possible values:
date_tostring · date · nullableOptional

Inclusive upper calendar date (YYYY-MM-DD) for the column chosen by date_key; must be on or after date_from when both bounds are provided.

emailstring · nullableOptional

Email address for the person or customer.

filterstring · enum · nullableOptional

Customer list facet aligned with console filters (excluding archived unless requested).

Possible values:
limitinteger · nullableOptional

Maximum number of records to return.

qstring · nullableOptional

Search query used to filter results.

sort_dirstring · enum · nullableOptional

Sort direction: asc or desc.

Possible values:
sort_keystring · enum · nullableOptional

Customer field to sort by.

Possible values:
tag_slugstring · nullableOptional

URL-friendly identifier for the customer tag.

Responses
200

Success

application/json

Object containing response data for this resource.

successbooleanOptional

Indicates whether the request completed successfully.

codeintegerOptional

Short code or application-level status code for this resource.

get/customers
GET /project/customers HTTP/1.1
Host: api.moregoodreviews.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

Success

{
  "success": true,
  "code": 200,
  "data": [
    {
      "id": 101,
      "uuid": "c53958ca-dfa3-4804-b711-0b7e61e7d8de",
      "location_id": 12,
      "project_id": 42,
      "color": "#4F46E5",
      "name": "Alex Johnson",
      "first_name": "Alex",
      "last_name": "Johnson",
      "email": "alex.johnson@example.com",
      "phone": "+15551234567",
      "phone_formatted": "(555) 123-4567",
      "phone_e164": "+15551234567",
      "company": "Acme Dental",
      "gravatar": "https://www.gravatar.com/avatar/7c6a180b36896a0a8c02787eeafb0e4c",
      "lang": "en",
      "notes": "Prefers email follow-up after appointments.",
      "charges_count": 3,
      "charges_sum": 45000,
      "charges_avg": 15000,
      "review_link": "https://app.example.com/r/acme-dental/alex-johnson",
      "unsubscribe_link": "https://api.example.com/list-unsubscribe/c53958ca-dfa3-4804-b711-0b7e61e7d8de",
      "platform_url": "https://app.example.com/projects/42/customers/101",
      "validation": {
        "result": "deliverable",
        "risk": "low"
      },
      "is_validated": true,
      "address1": "456 Oak Ave",
      "address2": "Apt 2B",
      "city": "Chicago",
      "state": "IL",
      "postal_code": "60601",
      "signed_up_at": 1714410000,
      "first_charged_at": 1714413600,
      "last_charged_at": 1714500000,
      "first_asked_at": 1714507200,
      "last_asked_at": 1714507200,
      "first_messaged_at": 1714509000,
      "last_messaged_at": 1714509000,
      "first_reviewed_at": 1714593600,
      "last_reviewed_at": 1714593600,
      "unsubscribed_at": null,
      "archived_at": null,
      "created_at": 1714410000,
      "updated_at": 1714593600,
      "photo": {
        "id": 881204,
        "link": "https://cdn.example.com/images/customers/alex-thumb.webp",
        "uuid": "6deefc42-2c81-4f9b-9c10-3ad88f1e22aa"
      }
    }
  ],
  "pagination": {
    "current_page": 1,
    "from": 1,
    "last_page": 1,
    "path": "https://api.example.com/project/customers",
    "per_page": 50,
    "to": 1,
    "total": 1
  }
}

Create Customer

post

Create a customer record with contact, location, and tag details.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Body

Object containing response data for this resource.

first_namestringRequired

Customer first name.

last_namestringOptional

Customer last name.

emailstringOptional

Email address for the person or customer.

phonestringOptional

Phone number for the person or customer.

photo_urlstring · uri · max: 500Optional

Public image URL downloaded and stored as the customer photo before the record is created. Returns 400 if the URL cannot be fetched or is not a valid image.

companystringOptional

Company or organization name associated with the customer.

location_slugstringOptional

Slug of an existing project location. Returns 404 if the slug is not found.

signed_up_atone of · nullableOptional

Optional instant for request bodies: Unix timestamp as integer (seconds), or a date/time string of at most 50 characters that PHP Carbon can parse. For strings, ISO-8601 / RFC 3339 (for example 2026-04-28T15:30:00Z) is the recommended format in examples and client integrations. Invalid values fail validation. When the field is omitted or null, the API uses the current server time where that behavior is documented on the operation.

integerOptional

Unix timestamp in seconds since the Unix epoch.

or
string · max: 50Optional

Date/time string parseable by Carbon; prefer ISO-8601 / RFC 3339; maximum 50 characters.

notesstringOptional

Internal notes about the customer.

address1stringOptional

Primary street address line.

address2stringOptional

Secondary street address line, such as suite or apartment.

citystringOptional

City for the address.

statestringOptional

State, province, or region for the address.

postal_codestringOptional

Postal or ZIP code for the address.

tag_slugsstring[]Optional

Tag slugs to attach to the customer.

Responses
200

Success

application/json

Object containing response data for this resource.

successbooleanOptional

Indicates whether the request completed successfully.

codeintegerOptional

Short code or application-level status code for this resource.

post/customers
POST /project/customers HTTP/1.1
Host: api.moregoodreviews.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 423

{
  "first_name": "Alex",
  "last_name": "Johnson",
  "email": "alex.johnson@example.com",
  "phone": "+15551234567",
  "photo_url": "https://cdn.example.com/photos/alex-johnson.jpg",
  "company": "Acme Dental",
  "location_slug": "downtown",
  "signed_up_at": "2026-04-26T12:00:00Z",
  "notes": "Prefers email follow-up after appointments.",
  "address1": "456 Oak Ave",
  "address2": "Apt 2B",
  "city": "Chicago",
  "state": "IL",
  "postal_code": "60601",
  "tag_slugs": [
    "vip"
  ]
}
200

Success

{
  "success": true,
  "code": 200,
  "data": {
    "id": 101,
    "uuid": "c53958ca-dfa3-4804-b711-0b7e61e7d8de",
    "location_id": 12,
    "project_id": 42,
    "color": "#4F46E5",
    "name": "Alex Johnson",
    "first_name": "Alex",
    "last_name": "Johnson",
    "email": "alex.johnson@example.com",
    "phone": "+15551234567",
    "phone_formatted": "(555) 123-4567",
    "phone_e164": "+15551234567",
    "company": "Acme Dental",
    "gravatar": "https://www.gravatar.com/avatar/7c6a180b36896a0a8c02787eeafb0e4c",
    "lang": "en",
    "notes": "Prefers email follow-up after appointments.",
    "charges_count": 3,
    "charges_sum": 45000,
    "charges_avg": 15000,
    "review_link": "https://app.example.com/r/acme-dental/alex-johnson",
    "unsubscribe_link": "https://api.example.com/list-unsubscribe/c53958ca-dfa3-4804-b711-0b7e61e7d8de",
    "platform_url": "https://app.example.com/projects/42/customers/101",
    "validation": {
      "result": "deliverable",
      "risk": "low"
    },
    "is_validated": true,
    "address1": "456 Oak Ave",
    "address2": "Apt 2B",
    "city": "Chicago",
    "state": "IL",
    "postal_code": "60601",
    "signed_up_at": 1714410000,
    "first_charged_at": 1714413600,
    "last_charged_at": 1714500000,
    "first_asked_at": 1714507200,
    "last_asked_at": 1714507200,
    "first_messaged_at": 1714509000,
    "last_messaged_at": 1714509000,
    "first_reviewed_at": 1714593600,
    "last_reviewed_at": 1714593600,
    "unsubscribed_at": null,
    "archived_at": null,
    "created_at": 1714410000,
    "updated_at": 1714593600,
    "photo": {
      "id": 881204,
      "link": "https://cdn.example.com/images/customers/alex-thumb.webp",
      "uuid": "6deefc42-2c81-4f9b-9c10-3ad88f1e22aa"
    },
    "location": {
      "id": 12,
      "project_id": 42,
      "uuid": "51987517-6a48-4e4d-87d5-934147e46234",
      "name": "Downtown",
      "display_name": "Acme Dental Downtown",
      "slug": "downtown",
      "store_code": "CHI-DTN",
      "title": "Downtown Office",
      "address": "123 Main St, Chicago, IL 60601",
      "address1": "123 Main St",
      "address2": "Suite 400",
      "city": "Chicago",
      "state": "IL",
      "postal_code": "60601"
    },
    "tags": [
      {
        "id": 9,
        "uuid": "719c34f3-30fd-4d9e-82dd-172ce6d554af",
        "name": "VIP",
        "slug": "vip",
        "color": "#F59E0B"
      }
    ]
  }
}

Get Customer

get

Retrieve one customer belonging to the authenticated project with nested location and tags where present.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

Unique numeric identifier for the customer.

Responses
200

Success

application/json

Object containing response data for this resource.

successbooleanOptional

Indicates whether the request completed successfully.

codeintegerOptional

Application-level status code returned by this API.

dataobjectOptional

Customer record with optional nested entities.

get/customers/{id}
GET /project/customers/{id} HTTP/1.1
Host: api.moregoodreviews.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

Success

{
  "success": true,
  "code": 200,
  "data": {
    "id": 101,
    "uuid": "c53958ca-dfa3-4804-b711-0b7e61e7d8de",
    "location_id": 12,
    "project_id": 42,
    "color": "#4F46E5",
    "name": "Alex Johnson",
    "first_name": "Alex",
    "last_name": "Johnson",
    "email": "alex.johnson@example.com",
    "phone": "+15551234567",
    "phone_formatted": "(555) 123-4567",
    "phone_e164": "+15551234567",
    "company": "Acme Dental",
    "gravatar": "https://www.gravatar.com/avatar/7c6a180b36896a0a8c02787eeafb0e4c",
    "lang": "en",
    "notes": "Prefers email follow-up after appointments.",
    "charges_count": 3,
    "charges_sum": 45000,
    "charges_avg": 15000,
    "review_link": "https://app.example.com/r/acme-dental/alex-johnson",
    "unsubscribe_link": "https://api.example.com/list-unsubscribe/c53958ca-dfa3-4804-b711-0b7e61e7d8de",
    "platform_url": "https://app.example.com/projects/42/customers/101",
    "validation": {
      "result": "deliverable",
      "risk": "low"
    },
    "is_validated": true,
    "address1": "456 Oak Ave",
    "address2": "Apt 2B",
    "city": "Chicago",
    "state": "IL",
    "postal_code": "60601",
    "signed_up_at": 1714410000,
    "first_charged_at": 1714413600,
    "last_charged_at": 1714500000,
    "first_asked_at": 1714507200,
    "last_asked_at": 1714507200,
    "first_messaged_at": 1714509000,
    "last_messaged_at": 1714509000,
    "first_reviewed_at": 1714593600,
    "last_reviewed_at": 1714593600,
    "unsubscribed_at": null,
    "archived_at": null,
    "created_at": 1714410000,
    "updated_at": 1714593600,
    "photo": {
      "id": 881204,
      "link": "https://cdn.example.com/images/customers/alex-thumb.webp",
      "uuid": "6deefc42-2c81-4f9b-9c10-3ad88f1e22aa"
    },
    "location": {
      "id": 12,
      "project_id": 42,
      "uuid": "51987517-6a48-4e4d-87d5-934147e46234",
      "name": "Downtown",
      "display_name": "Acme Dental Downtown",
      "slug": "downtown",
      "store_code": "CHI-DTN",
      "title": "Downtown Office",
      "address": "123 Main St, Chicago, IL 60601",
      "address1": "123 Main St",
      "address2": "Suite 400",
      "city": "Chicago",
      "state": "IL",
      "postal_code": "60601"
    },
    "tags": [
      {
        "id": 9,
        "uuid": "719c34f3-30fd-4d9e-82dd-172ce6d554af",
        "name": "VIP",
        "slug": "vip",
        "color": "#F59E0B"
      }
    ]
  }
}

Delete Customer

delete

Delete a customer from the authenticated project.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

Unique numeric identifier for the customer.

Responses
200

Success

application/json

Object containing response data for this resource.

successbooleanOptional

Indicates whether the request completed successfully.

codeintegerOptional

Application-level status code returned by this API.

delete/customers/{id}
DELETE /project/customers/{id} HTTP/1.1
Host: api.moregoodreviews.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

Success

{
  "success": true,
  "code": 200
}

Archive Customer

put

Archive a customer and cancel any unsent outreach messages.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

Unique numeric identifier for the customer.

Responses
200

Success

application/json

Object containing response data for this resource.

successbooleanOptional

Indicates whether the request completed successfully.

codeintegerOptional

Application-level status code returned by this API.

put/customers/{id}/archive
PUT /project/customers/{id}/archive HTTP/1.1
Host: api.moregoodreviews.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

Success

{
  "success": true,
  "code": 200
}

Unarchive Customer

put

Restore an archived customer so asks and integrations treat them as active again.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

Unique numeric identifier for the customer.

Responses
200

Success

application/json

Object containing response data for this resource.

successbooleanOptional

Indicates whether the request completed successfully.

codeintegerOptional

Application-level status code returned by this API.

put/customers/{id}/unarchive
PUT /project/customers/{id}/unarchive HTTP/1.1
Host: api.moregoodreviews.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

Success

{
  "success": true,
  "code": 200
}

Update Customer Photo

put

Download a public image URL and store it as the customer photo, or pass null to remove the existing photo. Returns the stored image on set, or an empty success payload when cleared. Returns 400 if a URL cannot be fetched or is not a valid image.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

Unique numeric identifier for the customer.

Body

Request body with a public image URL for the customer photo, or null to clear it.

urlstring · uri · max: 500 · nullableRequired

Public image URL downloaded and stored as the customer photo. Pass null to remove the photo. Returns 400 if a URL cannot be fetched or is not a valid image.

Responses
200

Success

application/json

Object containing response data for this resource.

successbooleanOptional

Indicates whether the request completed successfully.

codeintegerOptional

Application-level status code returned by this API.

put/customers/{id}/photo
PUT /project/customers/{id}/photo HTTP/1.1
Host: api.moregoodreviews.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 57

{
  "url": "https://cdn.example.com/photos/alex-johnson.jpg"
}
200

Success

{
  "success": true,
  "code": 200,
  "data": {
    "id": 881204,
    "uuid": "6deefc42-2c81-4f9b-9c10-3ad88f1e22aa",
    "link": "https://cdn.example.com/images/customers/alex-thumb.webp"
  }
}

Update Customer Notes

put

Replace the internal notes stored on a customer.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

Unique numeric identifier for the customer.

Body

Request body containing customer notes.

notesstring · max: 5000 · nullableOptional

Internal notes about the customer.

Responses
200

Success

application/json

Object containing response data for this resource.

successbooleanOptional

Indicates whether the request completed successfully.

codeintegerOptional

Application-level status code returned by this API.

put/customers/{id}/notes
PUT /project/customers/{id}/notes HTTP/1.1
Host: api.moregoodreviews.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 55

{
  "notes": "Prefers email follow-up after appointments."
}
200

Success

{
  "success": true,
  "code": 200
}

Unsubscribe Customer

put

Unsubscribe a customer from future outreach and cancel unsent messages.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

Unique numeric identifier for the customer.

Responses
200

Success

application/json

Object containing response data for this resource.

successbooleanOptional

Indicates whether the request completed successfully.

codeintegerOptional

Application-level status code returned by this API.

put/customers/{id}/unsubscribe
PUT /project/customers/{id}/unsubscribe HTTP/1.1
Host: api.moregoodreviews.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

Success

{
  "success": true,
  "code": 200
}

Resubscribe Customer

put

Clear message opt-out state so outreach can resume for this customer again.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

Unique numeric identifier for the customer.

Responses
200

Success

application/json

Object containing response data for this resource.

successbooleanOptional

Indicates whether the request completed successfully.

codeintegerOptional

Application-level status code returned by this API.

put/customers/{id}/resubscribe
PUT /project/customers/{id}/resubscribe HTTP/1.1
Host: api.moregoodreviews.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

Success

{
  "success": true,
  "code": 200
}

Cancel Customer Unsent Messages

put

Clear scheduled outreach for this customer without archiving or changing subscription state.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

Unique numeric identifier for the customer.

Responses
200

Success

application/json

Object containing response data for this resource.

successbooleanOptional

Indicates whether the request completed successfully.

codeintegerOptional

Application-level status code returned by this API.

put/customers/{id}/cancel-unsent-messages
PUT /project/customers/{id}/cancel-unsent-messages HTTP/1.1
Host: api.moregoodreviews.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

Success

{
  "success": true,
  "code": 200
}

List Customer Charges

get

Paginated revenue-charge history for one customer after ingest from billing systems.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

Unique numeric identifier for the customer.

Query parameters
limitinteger · nullableOptional

Maximum number of records to return per page.

Responses
200

Success

application/json

Object containing response data for this resource.

successbooleanOptional

Indicates whether the request completed successfully.

codeintegerOptional

Short code or application-level status code for this resource.

get/customers/{id}/charges
GET /project/customers/{id}/charges HTTP/1.1
Host: api.moregoodreviews.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

Success

{
  "success": true,
  "code": 200,
  "data": [
    {
      "amount": 15000,
      "charged_at": "2026-04-28T15:30:00+00:00",
      "currency": "USD",
      "customer_id": 101,
      "id": 501,
      "project_id": 42
    }
  ],
  "pagination": {
    "current_page": 1,
    "from": 1,
    "last_page": 1,
    "path": "https://api.example.com/project/customers/101/charges",
    "per_page": 50,
    "to": 1,
    "total": 1
  }
}

List Customer Messages

get

Retrieve message history for one customer in the project.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

Unique numeric identifier for this resource.

Query parameters
limitinteger · nullableOptional

Maximum number of records to return.

Responses
200

Success

application/json

Object containing response data for this resource.

successbooleanOptional

Indicates whether the request completed successfully.

codeintegerOptional

Short code or application-level status code for this resource.

get/customers/{id}/messages
GET /project/customers/{id}/messages HTTP/1.1
Host: api.moregoodreviews.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

Success

{
  "success": true,
  "code": 200,
  "data": [
    {
      "id": 55,
      "uuid": "74340248-84bb-4ed4-9b85-2f8a6efc9964",
      "ask_id": 32,
      "channel": "email",
      "failed_reason": null,
      "scheduled_at": 1714507200,
      "processed_at": 1714507260,
      "sent_at": 1714507320,
      "delivered_at": 1714507380,
      "opened_at": 1714510800,
      "clicked_at": null,
      "failed_at": null,
      "complained_at": null,
      "canceled_at": null,
      "halted_at": null,
      "created_at": 1714507200,
      "updated_at": 1714510800,
      "customer": {
        "id": 101,
        "uuid": "c53958ca-dfa3-4804-b711-0b7e61e7d8de",
        "name": "Alex Johnson",
        "color": "#4F46E5",
        "gravatar": "https://www.gravatar.com/avatar/7c6a180b36896a0a8c02787eeafb0e4c",
        "platform_url": "https://app.example.com/projects/42/customers/101",
        "unsubscribed_at": null
      },
      "template": {
        "id": 4,
        "uuid": "7f0c19b1-e9cb-48ef-a021-2f6ed0041c39",
        "name": "Review Request",
        "slug": "review-request",
        "channel": "email"
      }
    }
  ],
  "pagination": {
    "current_page": 1,
    "from": 1,
    "last_page": 1,
    "path": "https://api.example.com/project/customers/101/messages",
    "per_page": 50,
    "to": 1,
    "total": 1
  }
}

List Customer Reviews

get

Retrieve review history for one customer in the project.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

Unique numeric identifier for this resource.

Query parameters
limitinteger · nullableOptional

Maximum number of records to return.

Responses
200

Success

application/json

Object containing response data for this resource.

successbooleanOptional

Indicates whether the request completed successfully.

codeintegerOptional

Short code or application-level status code for this resource.

get/customers/{id}/reviews
GET /project/customers/{id}/reviews HTTP/1.1
Host: api.moregoodreviews.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

Success

{
  "success": true,
  "code": 200,
  "data": [
    {
      "id": 77,
      "uuid": "c2928ac9-8c0a-4e8a-b3b0-6dbd12d4d1ce",
      "score": 5,
      "review": "The staff was friendly and the appointment started right on time.",
      "review_html": "<p>The staff was friendly and the appointment started right on time.</p>",
      "reply": "Thank you for sharing your experience, Alex!",
      "is_hidden": false,
      "is_duplicate": false,
      "has_highlights": true,
      "can_reply": true,
      "has_reply": true,
      "external_url": "https://www.google.com/maps/reviews/acme-dental-77",
      "platform_url": "https://app.example.com/projects/42/reviews/77",
      "replied_at": 1714680000,
      "created_at": 1714593600,
      "customer": {
        "id": 101,
        "uuid": "c53958ca-dfa3-4804-b711-0b7e61e7d8de",
        "name": "Alex Johnson",
        "color": "#4F46E5",
        "platform_url": "https://app.example.com/projects/42/customers/101"
      },
      "location": {
        "id": 12,
        "project_id": 42,
        "uuid": "51987517-6a48-4e4d-87d5-934147e46234",
        "name": "Downtown",
        "display_name": "Acme Dental Downtown",
        "slug": "downtown",
        "store_code": "CHI-DTN",
        "title": "Downtown Office",
        "address": "123 Main St, Chicago, IL 60601",
        "address1": "123 Main St",
        "address2": "Suite 400",
        "city": "Chicago",
        "state": "IL",
        "postal_code": "60601"
      },
      "rating": {
        "id": 5,
        "score": 5,
        "label": "Excellent"
      },
      "reviewer": {
        "id": 14,
        "name": "Alex Johnson",
        "photo_url": "https://lh3.googleusercontent.com/a-/alex"
      },
      "source": {
        "id": 5,
        "uuid": "59fd6c84-2955-4ef7-a665-48a87b79f35b",
        "name": "Google",
        "slug": "google",
        "sprite": "fab fa-google",
        "color": "#DB4437",
        "icon": null
      },
      "fields": [
        {
          "name": "service",
          "value": "Cleaning"
        }
      ],
      "tags": [
        {
          "id": 9,
          "uuid": "719c34f3-30fd-4d9e-82dd-172ce6d554af",
          "name": "VIP",
          "slug": "vip"
        }
      ]
    }
  ],
  "pagination": {
    "current_page": 1,
    "from": 1,
    "last_page": 1,
    "path": "https://api.example.com/project/customers/101/reviews",
    "per_page": 50,
    "to": 1,
    "total": 1
  }
}

Update Customer Tags

put

Replace the tag assignments for a customer using the provided slug list.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

Unique numeric identifier for the customer.

Body

Request body listing tag slugs to apply; omitting unrelated tags removes them from the customer.

tag_slugsstring[]Required

Tag slugs to assign; send an empty array to clear all tags from this customer.

Responses
200

Success

application/json

Object containing response data for this resource.

successbooleanOptional

Indicates whether the request completed successfully.

codeintegerOptional

Application-level status code returned by this API.

put/customers/{id}/tags
PUT /project/customers/{id}/tags HTTP/1.1
Host: api.moregoodreviews.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 34

{
  "tag_slugs": [
    "vip",
    "newsletter"
  ]
}
200

Success

{
  "success": true,
  "code": 200,
  "data": {
    "id": 101,
    "uuid": "c53958ca-dfa3-4804-b711-0b7e61e7d8de",
    "project_id": 42,
    "name": "Alex Johnson",
    "first_name": "Alex",
    "last_name": "Johnson",
    "email": "alex.johnson@example.com",
    "phone": "+15551234567",
    "company": "Acme Dental",
    "platform_url": "https://app.example.com/projects/42/customers/101",
    "tags": [
      {
        "id": 701,
        "uuid": "f2b31d31-a793-4f65-8f19-75fb21cb01c3",
        "name": "VIP",
        "slug": "vip",
        "sprite": "fas fa-star",
        "color": "#F59E0B",
        "context": "customer",
        "ai_instructions": null,
        "has_ai_tagging": false
      },
      {
        "id": 702,
        "uuid": "2533b8a8-3920-4c79-8d5e-c38fb760c8e2",
        "name": "Newsletter",
        "slug": "newsletter",
        "sprite": "fas fa-envelope",
        "color": "#2563EB",
        "context": "customer",
        "ai_instructions": null,
        "has_ai_tagging": false
      }
    ]
  }
}

Last updated