> For the complete documentation index, see [llms.txt](https://acoservice.gitbook.io/acoservice-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://acoservice.gitbook.io/acoservice-documentation/reference/glossary.md).

# Glossary

Every term this documentation uses, defined once, with the distinctions that actually cause confusion.

## Terms

| Term                | Definition                                                                                                                                                                                                                                            |
| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Tenant**          | One ACO group on the platform. A tenant owns its site, its branding, its members, its billing configuration, its feature flags and its own Discord application. Everything else hangs off a tenant.                                                   |
| **Slug**            | A tenant's short unique name, used as its subdomain: slug `myaco` gives `myaco.acoservice.app`. Unique across the whole platform and used to identify the tenant when you contact your platform operator.                                             |
| **Guild**           | Discord's internal word for a server, and the word this platform uses too. A tenant links one or more guilds, one of which is primary.                                                                                                                |
| **Member**          | A person who signs in to a tenant's site with Discord. Members see their own checkouts, profiles, accounts, tab and settings.                                                                                                                         |
| **ACO member**      | A record in the admin console (labelled **Customers**) that maps checkout-profile names to a Discord user ID inside one guild, so the bot can work out whose checkout it just read. Made up of a name plus a list of identifiers.                     |
| **Identifier**      | One string registered against an ACO member. The matcher looks for it inside a checkout's profile string. Short identifiers match too much — see [Wrong member charged](/acoservice-documentation/troubleshooting/wrong-member-charged.md).           |
| **Store code**      | A per-guild short code standing for a full store name, such as `TGT` for `Target`. Used when parsing profile strings and when labelling tab entries by store.                                                                                         |
| **Site access**     | A member's grant of access to one store within one guild. Its status is `active`, `revoked` or `expired`; expiry is worked out at read time from an optional end date, and no end date means unlimited. "Site" is the member-facing word for a store. |
| **Checkout feed**   | The per-guild machinery that polls source channels for checkout webhooks, parses them, reposts them to your feed channel, DMs the matched member and adds the charge.                                                                                 |
| **Checkout event**  | The stored record of one checkout embed: its status, the raw status text, product, store, quantity, order number, email, the source Discord message, the raw profile string and the member it matched (if any).                                       |
| **Profile**         | Ambiguous — see [Two kinds of profile](#two-kinds-of-profile) below.                                                                                                                                                                                  |
| **Tab**             | A member's running balance inside one guild: the sum of their unpaid tab entries.                                                                                                                                                                     |
| **Tab entry**       | One line on a tab — product, quantity, unit price, total, status, notes — plus a pointer back to the Discord message it came from when the checkout feed created it. Statuses are `unpaid`, `invoiced`, `paid` and `removed`.                         |
| **Auto-accumulate** | The per-guild setting that decides whether a successful checkout automatically becomes a tab entry. Off means the feed still posts and still DMs, but charges nothing.                                                                                |
| **Free ACO**        | A per-member exemption, either from everything or from named stores. Their checkouts are still recorded, marked paid immediately and noted "Free ACO", so you can see what was given away without it showing as a balance.                            |
| **Invoice**         | A bill that groups tab entries into one payable amount with a due date and a payment method. Marking an invoice paid marks every entry on it paid.                                                                                                    |
| **Zelle claim**     | A member's assertion that they have sent a Zelle payment for an invoice, including the name they paid from. It sits in a review queue until an admin approves or denies it.                                                                           |
| **Target SKU**      | A product in your tenant's catalog, identified by its retailer SKU. Members add target SKUs to their own list so the group knows what to try to check out for them; the member page is titled **Products**, and each card carries its SKU.            |
| **Feature flag**    | A per-tenant switch that turns a whole area of the product on or off — billing, checkout feed, SKU management and so on. A disabled area is hidden from the navigation *and* blocked if you navigate to it directly.                                  |
| **Platform admin**  | Someone who administers the whole platform. See below.                                                                                                                                                                                                |
| **Tenant admin**    | Someone who administers one tenant. See below.                                                                                                                                                                                                        |

## Two kinds of profile

The word means two different things and they meet only by convention.

A **saved profile** is a checkout profile stored on the site: a name, billing and shipping addresses, and a card. The address and card fields are encrypted. Members manage these under **Profiles**, and the shape is AYCD-compatible so they can be imported and exported.

A **profile string** is the text in the `Profile` field of a checkout notification — `Walmart - Ahmed #141`. This is what the bot reads to decide whose checkout it was. It is produced by whichever checkout bot performed the checkout, not by this platform.

Nothing links the two automatically. A profile string resolves to a member because someone registered a matching identifier on an ACO member record, not because a saved profile exists with that name.

## Tenant and guild

A tenant is the group as a business: a site, a brand, a member list, a billing setup. A guild is a Discord server.

The distinction matters because they are scoped differently. Branding, feature flags, domains, the Discord application credentials and the SKU catalog are **per-tenant**. Tabs, invoices, customers, store codes, checkout events, feed configuration and command permissions are **per-guild**.

A tenant with two linked guilds therefore has two separate sets of tabs and two separate customer lists, with one shared site and one shared brand.

## Platform admin and tenant admin

These are two separate lists and there is no overlap unless someone is deliberately on both.

|                                      | Platform admin                | Tenant admin                       |
| ------------------------------------ | ----------------------------- | ---------------------------------- |
| Scope                                | Every tenant on the platform  | One tenant                         |
| Where they work                      | The `/platform` area          | That tenant's admin console        |
| Creates tenants                      | Yes                           | No                                 |
| Holds Discord and Stripe credentials | Yes — enters and rotates them | No — never sees the stored secrets |
| Typical person                       | Whoever runs the platform     | Whoever runs the group             |

If you are a tenant admin and something needs a credential changed, a bot provisioned, a domain verified or a feature flag flipped, that is a platform-admin job. Give them your slug when you ask.

## A tenant's three Discord credentials

A tenant's Discord application supplies three separate values, and all three are needed:

| Credential    | Found on                                                               | What breaks without it                                                                    |
| ------------- | ---------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| Client ID     | The application's OAuth page                                           | Members cannot sign in                                                                    |
| Client Secret | The application's OAuth page                                           | Members cannot sign in                                                                    |
| Bot token     | The application's **Bot** tab — a different tab from the client secret | The site works perfectly and no bot ever comes online: no slash commands, no feed, no DMs |

Supplying only the first two is the most common onboarding mistake on this platform, precisely because everything visible appears to work. See [Your Discord application](/acoservice-documentation/setting-up-your-tenant/discord-application.md).

{% hint style="info" %}
There is no shared bot serving every group. Each tenant runs its own Discord application as both its sign-in app and its bot.
{% endhint %}

## Related

* [Customers](/acoservice-documentation/for-tenant-admins/customers.md)
* [Stores and site access](/acoservice-documentation/for-tenant-admins/stores.md)
* [Tabs](/acoservice-documentation/for-tenant-admins/tabs.md) and [Billing and invoices](/acoservice-documentation/for-tenant-admins/billing.md)
* [Profiles](/acoservice-documentation/for-members/profiles.md)
* [Feature flags](/acoservice-documentation/setting-up-your-tenant/feature-flags.md)
* [Slash commands](/acoservice-documentation/reference/slash-commands.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://acoservice.gitbook.io/acoservice-documentation/reference/glossary.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
