Company
The brand's company details and offices, kept once, for footers, contact pages, ads and connected sites.
Every site ends in the same facts: who the company is, how to reach it, where it sits, its organisation number. Every ad with a legal line needs some of them too. Typed by hand they drift apart; a footer says one phone number and the contact page another.
The company is Braaand's record for those facts. There is one per brand, with a name, a legal name, an organisation number, a VAT number, an email, a phone number, a website and links to LinkedIn, Instagram, Facebook, X and YouTube. Under it sit the company's offices: a name, a street, a postal code, a city, a country, a phone, an email, a map link and opening hours. The first office in order is the main address.
An address is stored as its parts, never as one block of text. Two systems format an address differently, and parts can be changed one at a time. Where a single line is wanted, it is put together from the parts.
Fill it in at /brands/{brandId}/company. Each field saves when you leave it. An office can be archived (hidden and kept) or removed.
On a site
A footer or a contact block that states the company's address, phone and email can be bound to the company record. The fields are then written from the record, and they follow it: change the phone number on the Company page and every bound footer on every site of the brand changes with it. A private field leaves the page when it is marked private.
Three sections carry a company group today: contact-map, contact-split and footer-logo-contact. More footers will follow.
- A site that is being filled for the first time takes the company on its own, for every such section nobody has written in yet. The copy pass never writes a bound field, so a generated site cannot invent an address.
- In the site editor, select the section and open Company in the rail: pick the main office, a named office, or "Not bound". Typing into a bound field unbinds the group, since the words beat the record.
- A section that was filled before the company existed can seed it: Use these details as the company saves the section's email and phone to the company record, makes a first office from its address when the brand has none yet, and binds the section.
The main office is the first active office in order. A section bound to "main" follows that, so reordering the offices moves the footer.
Private fields
Any field except the name can be marked private with the lock beside its label. A private field never leaves Braaand: not on a site, not in an export, not in what a connected site reads. Reads made with a brand token (bt_…) never include private fields.
Revisions
A company record and an office carry revisions the same way a person does: every change bumps the record's revision, remembers which fields moved, and is written to the brand's change history in the same step. That is what lets a connected site keep its own copy and tell when the two have drifted apart.
For agents
| Tool | What it does |
|---|---|
get_company |
The company record and its offices, each office with a one line address. company is null until someone has filled it in. |
update_company |
Save company fields. fields is a patch: a key you leave out is untouched, null or an empty string clears. |
create_office / update_office / delete_office |
The addresses. update_office({ status: "archived" }) hides one and keeps it. |
bind_site_company |
Point a site section's company group at the record: office: "main", an office id, or null to unbind. The fields are written from the record and follow it. |
Read the company before writing a footer, a contact page or a legal line. Never invent an address, a phone number or an organisation number.
CLI: braaand company get | set, braaand company offices | office-add | office-update | office-remove. REST: GET and PUT /api/brands/{brandId}/company, POST …/company/offices, PATCH and DELETE …/company/offices/{officeId}.