Private preview of the new site. Not live.

messages.templates

The shop's customer message templates, one per kind (invoice_reminder, quote_followup, review_request): the wording in use (custom or built-in), the placeholders each kind takes, and the locked link placeholder that must stay in the body. Owner or office only.

WhoAgents can call this
RESTGET /v1/messages/templates
MCP toolmessages_templates
Writesno
AreaCustomer hub, requests and customer emails

When to use it

The shop can set its own wording for the automatic customer emails: invoice reminders, quote follow-ups and review requests. Read messages.templates for the wording in use and the placeholders each kind takes.

What to tell the owner

Tell them what you found in plain words. Don't read back raw fields.

Input

FieldTypeRequired
shop_idstring (uuid)yes

Example

GET https://doingwork.work/v1/messages/templates?shop_id=00000000-0000-4000-8000-000000000000

Output

FieldTypeAlways there
templatesarrayyes
templates[].kindstringyes
templates[].custombooleanyes
templates[].subjectstringyes
templates[].bodystringyes
templates[].link_placeholderstringyes
templates[].placeholdersarrayyes
templates[].default_subjectstringyes
templates[].default_bodystringyes
templates[].updated_by['string', 'null', ' ', '(', 'u', 'u', 'i', 'd', ')']yes
templates[].updated_at['string', 'null', ' ', '(', 'd', 'a', 't', 'e', '-', 't', 'i', 'm', 'e', ')']yes
{
  "templates": [
    {
      "kind": "...",
      "custom": true,
      "subject": "...",
      "body": "...",
      "link_placeholder": "...",
      "placeholders": [
        "..."
      ],
      "default_subject": "...",
      "default_body": "...",
      "updated_by": "00000000-0000-4000-8000-000000000000",
      "updated_at": "..."
    }
  ]
}

Errors

CodeStatusWhat to do
invalid_input, invalid_token, rate_limitedCan happen on any call. See errors.