# Buy Me a Coffee controls

Buy Me a Coffee provisions 7 controls when you connect it. They are filled in automatically and stay up to date; you read them, Overlabels writes them.

Reference them anywhere a tag works, using the `c:bmac:` prefix.

## The shared donation schema

| Tag | Type | Default | Holds |
|---|---|---|---|
| `[[[c:bmac:donations_received]]]` | counter | `0` | BMAC Donations Received |
| `[[[c:bmac:latest_donor_name]]]` | text | empty | Latest Donor Name |
| `[[[c:bmac:latest_donation_amount]]]` | number | `0` | Latest Donation Amount |
| `[[[c:bmac:latest_donation_message]]]` | text | empty | Latest Donation Message |
| `[[[c:bmac:latest_donation_currency]]]` | text | empty | Latest Currency |
| `[[[c:bmac:total_received]]]` | number | `0` | Total BMAC Amount (session) |

## Specific to Buy Me a Coffee

| Tag | Type | Default | Holds |
|---|---|---|---|
| `[[[c:bmac:latest_support_type]]]` | text | empty | Latest Support Type |

## Events that update them

`donation`, `commission`, `extra`, `membership`, `recurring`, `wishlist`

## Notes

- These are **service-managed** controls. Setting one by hand through the dashboard or the API returns a 403 - the integration owns the value.
- Referencing one in a template declares that dependency. Someone who copies the template without Buy Me a Coffee connected is warned, not blocked, and it starts working the moment they connect.
- The shared keys above are identical across every donation integration, so swapping the prefix ports a template between services. See [[all-integration-controls]].

---

*Generated from the Buy Me a Coffee driver by `php artisan help:build-integration-controls`. Do not edit by hand - your changes will be overwritten.*
