# Formule documentation > The complete user documentation for Formule, the CRM real-estate agencies run their listings, leads and agents on. Source: https://docs.formule.io --- # Formule docs URL: https://docs.formule.io/ > Guides, tutorials and reference for Formule — the CRM real-estate agencies run their listings, leads and real estate agents on. **New to Formule?** Start with [your first hour](https://docs.formule.io/start/first-hour/) — sign in, find your way around, and get a real listing and a real lead into the system. **You're a real estate agent** [Working your leads](https://docs.formule.io/agents/leads/) is the page you'll live in. Then learn to [share a listing](https://docs.formule.io/agents/sharing/) so the link looks good wherever you paste it, and to [ask Really](https://docs.formule.io/agents/really/), Formule's AI, what needs doing today. **You run the agency** [Set the agency up](https://docs.formule.io/managers/setup/), [invite your real estate agents](https://docs.formule.io/managers/agents/), and decide [how leads get routed](https://docs.formule.io/managers/lead-routing/). **You're a developer** Formule speaks [MCP](https://docs.formule.io/developers/mcp/), so [ChatGPT](https://docs.formule.io/developers/connect-chatgpt/), [Claude](https://docs.formule.io/developers/connect-claude/) and other assistants can read and write your agency's data under the same permissions you have in the app. ## Jump to the common questions - [How do I add a listing?](https://docs.formule.io/agents/listings/) - [How do I invite a real estate agent?](https://docs.formule.io/managers/agents/) - [Why can't my real estate agent see a lead?](https://docs.formule.io/reference/troubleshooting/) - [What do the roles actually mean?](https://docs.formule.io/start/roles/) - [What can Really do for me?](https://docs.formule.io/agents/really/) - [Is there an iPhone app?](https://docs.formule.io/start/iphone-app/) --- # What Formule is URL: https://docs.formule.io/start/what-formule-is/ > A short, honest description of what Formule does for a real-estate agency, and what it deliberately does not do. Formule is the system a real-estate agency runs its **leads, listings and agents** on. One agency, one workspace: every enquiry that arrives from an advert or your website lands in the same place, gets assigned to a real estate agent, and is worked until it converts or dies. It is built around a single idea — **an enquiry is worthless until somebody owns it**. Most of the product exists to shorten the gap between a lead arriving and a real estate agent picking up the phone. ## What you actually do with it - [Work leads](https://docs.formule.io/agents/leads/) — Every enquiry in one list. Assign it, call it, set its status, leave a comment, book the viewing. - [Keep listings](https://docs.formule.io/agents/listings/) — Your properties, with photos, price and description. Each one gets a public page you can send to anyone. - [Run campaigns](https://docs.formule.io/managers/marketing/) — Put a property in front of buyers, then see which advert produced which lead. - [Manage a team](https://docs.formule.io/managers/agents/) — Invite real estate agents, approve them, watch who is responding and who is sitting on enquiries. ## How a lead moves through it 1. Somebody fills in a form — on one of your adverts, or on a listing page. 2. The lead appears in the **Leads** workspace within seconds. Nobody owns it yet. 3. A manager assigns it to a real estate agent, or the agent picks it up. The agent can be given it outright, or *asked* to take it — in which case the contact details stay hidden until they accept. 4. The real estate agent calls, then sets a **status** and writes a **comment** saying what happened. 5. The manager sees the comment. If a real estate agent has gone quiet on a lead, that shows up too. That loop is the whole product. Everything else — campaigns, the marketing tools, the assistant, the reporting — exists to feed it or to measure it. ## What Formule is not **Caution: Set expectations honestly.** Formule is not a property portal, and it is not an accounting system. It does not list your properties on third-party sites for you, it does not handle contracts or commissions, and it does not replace your phone. ## How you get an account Anyone can start on their own. Sign up at **[app.formule.io/signup](https://app.formule.io/signup)** and you get your own workspace with a **7-day free trial** of the Really plan. No card is needed. When the trial ends, the account moves to the free plan unless you choose a plan. Agencies with branches, or that want Formule to run their adverts, are still set up with the Formule team: [book a call](https://calendly.com/giovannimule/intro) and the team sets the agency up with you. Real estate agents then join that agency through its join link. ## Who this documentation is for - **Agents** — start with [Working your leads](https://docs.formule.io/agents/leads/). If you signed up on your own, start with [Really in the app](https://docs.formule.io/agents/really/). - **Agency managers** — start with [Setting up your agency](https://docs.formule.io/managers/setup/). - **Developers** — Formule speaks [MCP](https://docs.formule.io/developers/mcp/), so an assistant such as [ChatGPT](https://docs.formule.io/developers/connect-chatgpt/) or [Claude](https://docs.formule.io/developers/connect-claude/) can read and write your agency's data under exactly your permissions. **Note: About the screenshots.** Every screenshot on this site is captured automatically from a running copy of Formule, using an invented agency called **Nova Property Group**. The names, properties and numbers you see are synthetic. No customer data ever appears here. --- # Your first hour URL: https://docs.formule.io/start/first-hour/ > Sign up or sign in, find your way around, and get a real listing and a real lead into Formule. By the end of this page you will have signed up or signed in, created a property, and created a lead against it. That is the whole loop in miniature — everything else is detail. ## Before you start There are two ways in: - **On your own.** Anyone can sign up, with no invitation. You get your own workspace and a 7-day free trial of the Really plan, with no card needed. - **Through your agency.** If your agency already uses Formule, your agency manager sends you its join link. It looks like `app.formule.io/join/your-agency`. **Tip: Setting up a whole agency?.** Agencies with branches, or that want Formule to run their adverts, are set up with the Formule team. [Book a call](https://calendly.com/giovannimule/intro) and the team sets the agency up with you. ## Sign up on your own 1. Go to **[app.formule.io/signup](https://app.formule.io/signup)**. 2. Type your email and press **Email me a code**, then type the 6-digit code from the email. You can press **Sign up with Google** instead, except inside the Instagram and Facebook browsers, where Google refuses to sign anyone in. 3. Two short screens follow. **About you** asks your name and, if you like, a link to one of your properties. **What should Really take off your plate?** can be skipped. 4. Press **Start my free trial**. Formule sets up your workspace and opens [Really](https://docs.formule.io/agents/really/). If you gave a link, Really turns that property into a listing draft and a social post while you watch. Your trial and your plan are under your name at the top right, in **Plan & billing**. When the trial ends, the account moves to the free plan unless you choose a plan. ## Sign in 1. Go to **[app.formule.io](https://app.formule.io)**. 2. Press **Continue with Google**, or press **Email me a sign-in code** and type the code from the email. **Sign in with a password instead** is one tap away if your account has a password. Inside the Instagram and Facebook browsers, Google is not offered. 3. You land wherever makes sense for you: real estate agents and managers in an agency go straight to their agency's **Leads** workspace, and an account you signed up for on your own opens in Really. If you belong to more than one agency you get a **Select a Company** card first. **Caution: If you land on a 'Verify your email' screen.** Your email address has not been confirmed yet. Check your inbox, confirm, then reload. If nothing arrives, see [Troubleshooting](https://docs.formule.io/reference/troubleshooting/). ## Look around In an agency you arrive in the **leads workspace**; on your own account, the **Leads** icon in the left rail takes you there. In the **List**, the enquiries are on the left, and whichever one you open fills the panel on the right. Branch managers start on the **Table** instead: the full leads dashboard, with assigning, comment and feedback requests, and your custom dashboards. The **List | Table** switch at the top moves between the two, and Formule remembers the one you pick. (Screenshot: The Formule leads workspace, with the lead list on the left and an open lead on the right) The narrow strip of icons down the far left is the whole menu. It is deliberately small — [Finding your way around](https://docs.formule.io/start/navigation/) names every icon. ## Add your first property 1. Click the **Listings** icon in the left rail. 2. Press **New listing** at the top right. 3. Fill in the four things that are genuinely required: **Property Title**, **Price**, **Location** and **Description**. Pick a **Property Type** and a **Status** ("For Sale" or "For Rent"). (Screenshot: The New listing form) 4. Drag in some photos under **Property Media**. The first image becomes the header image on the property's public page, so choose it deliberately. 5. Turn on **Publish immediately** if you want the public page live now. Leave it off and the listing is saved as a **Draft**, visible only inside Formule. 6. Press **Create listing**. Your property now has a public page of its own. [Sharing a listing](https://docs.formule.io/agents/sharing/) covers what that link looks like and where to paste it. ## Add your first lead Most leads arrive on their own, from adverts and from your website. You can also enter one by hand — useful for a walk-in or a phone call. 1. Go back to **Leads**. 2. Press the **Create lead** button — the person-with-a-plus icon at the top of the list. 3. Fill in **First name**, **Surname** and **Phone**. Those three are required; everything else can wait. 4. Under **Listing or source**, pick the property you just created. This is what ties the enquiry to the listing, and it is what makes the campaign reporting work later. (Screenshot: The New lead form) 5. If you are a manager, set **Assign to an agent**. If you leave it as *Unassigned* the lead sits in the pool for someone to pick up. 6. Press **Create lead**. ## Work it Open the lead you just made. On the right you get the contact details, what they enquired about, who owns it, and the history. (Screenshot: A lead open in the detail pane) Two things matter more than anything else on this screen: - **Status** — where the lead actually is. Move it off *Unclear* as soon as you know anything. - **Comment** — what happened when you called. This is what your manager reads, and it is the single biggest difference between an agency that closes leads and one that loses them. ## What next - Agents: [Working your leads](https://docs.formule.io/agents/leads/) is the real version of this page. - Managers: [Setting up your agency](https://docs.formule.io/managers/setup/), then [inviting your real estate agents](https://docs.formule.io/managers/agents/). - Agents and managers: press **Ask Really** at the bottom right and ask [Really](https://docs.formule.io/agents/really/) who to call today. Then connect [the Telegram assistant](https://docs.formule.io/agents/assistant/) so you can ask about your leads without opening the app. --- # Roles and what each one sees URL: https://docs.formule.io/start/roles/ > Who can see which leads, who can assign them, and who can change the agency's settings. Almost every "why can't I see that?" question in Formule has the same answer: your role. Formule never shows you data and then refuses the action — if you cannot do something, you usually cannot see it either. ## The four roles you will meet | Role | Shown in your profile as | Sees | Can do | | --- | --- | --- | --- | | Agent | **Agent** | Their own leads. All of the agency's listings. | Work their leads, create listings, edit their own profile. | | Branch manager | **Branch manager** | Every lead and listing in the agency. | Everything a real estate agent can, plus assign leads, approve agents, delete leads, and open Office Performance. | | Super admin | **Super admin** | Every agency on the platform. | Formule staff only. Platform settings and feature flags. | | User | **User** | Depends on what they have been given. | A member of the agency without an agent record yet. | Two more roles exist for specific jobs: - **Advertiser** — works campaigns across agencies. Sees Campaigns, Listings and Agents; cannot open the leads workspace. - **Finance admin** — sees only the real estate agent roster and advertising budgets. An account that holds only one of these two roles does not get [Really](https://docs.formule.io/agents/really/) either: it is a leads assistant, and they have no leads to ask about. ## What that means day to day ### If you are a real estate agent - You see leads assigned to you, plus anything still unassigned that your manager has put in front of you. - You **cannot** see another real estate agent's leads. This is not a display filter; the data is not sent to your browser. - You can create and edit listings. New listings are assigned to you automatically. - You cannot delete a lead. Ask your manager. ### If you are a branch manager - You see everything in your agency, and you are the only one who can assign a lead to somebody else. - You get **Office Performance** — reporting on the whole team. It is not in the menu; you reach it from your profile. - You can approve or decline real estate agents who apply through your join link. **Note: Managers need an agent record too.** A branch manager is not automatically a real estate agent. If your profile shows a card saying **Set up your agent profile**, press it — you need an agent record before you can hold leads yourself or connect WhatsApp. ## Two exceptions worth knowing ### Private leads A real estate agent can be given a **private** lead area. Leads marked private are invisible to branch managers and to every other real estate agent, and they are left out of campaign counts. If your agency uses this, a real estate agent's dashboard grows an extra **Private Leads** section. ### Hidden leads Anyone can hide a lead from their own view — a time-waster, a duplicate. Hiding is personal: the lead stays visible to managers. Agents can switch on a **Hidden Leads** dashboard from their profile to get them back. **Caution: Hidden is not deleted.** Hiding a lead removes it from your list, nothing more. Only a branch manager can actually delete one, and deletion cannot be undone. ## Changing somebody's role Roles are set by Formule, not from inside the app. Ask your Formule contact. What a manager *can* do without help is approve real estate agents, assign leads, and turn a real estate agent's private-leads area on or off. --- # Finding your way around URL: https://docs.formule.io/start/navigation/ > What every icon in the left rail does, and where the screens live that are not in the menu. Formule's menu is a narrow strip of icons down the left edge. It is small on purpose — the lead list deserves the width — but it does mean the icons are worth learning once. The first time you sign in, a one-minute guided tour points at each part of the screen in turn. You can replay it whenever you like: open the menu under your name at the top right and choose **Take the tour**. On a phone, the button is on your **Profile**. (Screenshot: The leads workspace, with the icon rail on the far left) ## The icon rail, top to bottom | Icon | Where it goes | What lives there | | --- | --- | --- | | Four squares | **Leads** | Every enquiry. The screen you will spend your day in. | | Building | **Campaigns** | Adverts you are running, and leads grouped by which campaign produced them. Not shown on a personal agency. | | Document | **Listings** | Your properties. Create, edit, publish, share. | | People | **Agents** | The team roster. Managers only, and never for a solo agency. | | Sparkle | **Marketing** | AI video and AI images. | | Speech bubble | **Really** | Your chats with Really, Formule's AI. See [Really in the app](https://docs.formule.io/agents/really/). | | Shield | **Admin** | Formule staff only. | At the top right is your name and avatar. That menu holds **Profile & settings**, **Plan & billing**, **Take the tour** and **Sign out**. At the bottom right of most screens is **Ask Really**, which opens Really beside whatever you are looking at. **⌘J** on a Mac, or **Ctrl J**, does the same. ## Keyboard On a computer, three shortcuts cover most of the day: - **⌘K** on a Mac, or **Ctrl K**, opens the command palette. Type a section to go there (**Listings**, **Agents**), **New lead** to add one, or a name, phone or email to search your leads: press Enter and the leads list opens with that search. - **/** puts the cursor in the leads list's search box. - **⌘J**, or **Ctrl J**, opens and closes Really. ## The screens that are not in the menu A few important places are reached from elsewhere: - **Office Performance** — from your profile, the **Office performance** button. Branch managers and super admins only. - **Your mini-site** — from your profile, **My public mini-site**. Your personal public page, separate from your agency profile. - **Your agent profile** — from your profile, **Edit my profile**. This is what clients see, and where WhatsApp gets connected. - **A lead's full record** — click any lead in the list. **Tip: Performance is hiding in your profile.** Managers regularly miss this. Reporting for the whole office is one click from your own profile page, not in the menu. ## On a phone The rail becomes a row of tabs along the bottom: **Leads**, **Campaigns**, **Listings**, **Agents**, **Marketing**, and then **Profile** — or **Admin** if you are staff. (Screenshot: The leads workspace on a phone) The lead list and the lead itself are two separate screens on a phone: tap a lead to open it, and use back to return to the list. Really is not one of the tabs. Its **Ask Really** button sits just above them and opens Really full screen. ## If an icon is missing You are not meant to have it. **Agents** is hidden from real estate agents and from solo agencies. **Admin** only appears for Formule staff. Finance admins and advertisers see a reduced rail, without **Really**. [Roles](https://docs.formule.io/start/roles/) explains who gets what. --- # The iPhone app URL: https://docs.formule.io/start/iphone-app/ > Formule for iPhone is coming soon to the App Store. What it is for, who can use it, and what to use until then. **Note: Coming soon.** **Formule** for iPhone is coming soon to the App Store. It is not available to download yet. The iPhone app is a companion to the Formule you already use: the same account, the same agency, the same leads and listings. ## What it is for - **Following your leads** — note what was said on a call, move a lead to its next stage, and keep the property they asked about to hand. - **Listings** — browse your agency's properties while you are out. - **Campaigns and marketing** — prepare creative briefs and follow advertising submissions through your agency's workflow. It is laid out in the **Leads**, **Campaigns**, **Listings**, **Marketing** and **Profile** sections you already know from the browser, so there is little new to learn. ## Who can use it Anyone whose Formule account signs in with an email address and a password. The iPhone app has no **Continue with Google**, so if that is how you sign in to Formule, keep using Formule in Safari, as described below. What you see depends on your agency and your role, exactly as in the browser. There is no way to create an account in the app, and nothing to buy. Before signing in, **Preview demo workspace** opens a sample agency with invented data, so you can look around first. In the iPhone app, Really connects you to [Really on Telegram](https://docs.formule.io/agents/assistant/). The chat described in [Really in the app](https://docs.formule.io/agents/really/) is in the browser version of Formule. ## Until it is out Formule already works on your iPhone, in Safari. To open it like an app: 1. Open [app.formule.io](https://app.formule.io) in Safari and sign in. 2. Press **Share**, then **Add to Home Screen**, then **Add**. 3. Open **Formule** from its icon on your Home Screen. Really is there too: **Ask Really** sits just above the tabs. Questions about the iPhone app go to [support](https://docs.formule.io/support/). --- # Working your leads URL: https://docs.formule.io/agents/leads/ > The screen you live in — finding a lead, taking it, calling it, and recording what happened. This is the screen you will have open all day. The list of enquiries is on the left; whichever one you open fills the panel on the right. (Screenshot: The leads workspace as a real estate agent sees it) ## Finding the lead you want **Search** matches across everything — name, surname, property, email — and a phone number is matched exactly, so pasting a number straight from your call log works. Searching starts from two characters. **Filters** sit under the search box: - **All leads** narrows to a source, such as advert leads or web-only leads. - **All statuses** filters by where the lead has got to. Unassigned leads are always pinned to the top of the list, whatever you have sorted by. That is deliberate — an unowned enquiry is the most expensive thing on the screen. ## Taking a lead A lead reaches you one of two ways. **Assigned directly.** It simply appears in your list with everything visible. Start working it. **Requested.** Your manager has asked you to take it. The row is amber, marked **Pending your approval**, and the surname, phone and email are masked until you answer. 1. Open the lead. Read what they enquired about and their budget — that is visible before you accept. 2. Press **Accept** to take it. The contact details unmask immediately and the lead is yours. 3. Or press **Decline**, and it returns to the unassigned pool for somebody else. **Caution: Declining is not free.** A declined lead goes back to the pool and your manager can see it happened. Decline when it genuinely is not yours — wrong area, wrong price bracket — not because you are busy. ## The seven statuses Set the status the moment you know something. It is the fastest signal you give your manager. | Status | Use it when | | --- | --- | | **Unclear** | Nobody has worked it yet. The starting state. | | **No Response** | You have tried and not reached them. | | **Engaged** | You have spoken. There is a real conversation. | | **Appointment** | A viewing is booked. | | **Converted** | They bought or rented. The goal. | | **Disqualified** | Not a real buyer — wrong budget, wrong country, a mistake. | | **Nurture** | Real, but not now. Come back in a few months. | Change it from the status dropdown on the row, or from the open lead. **Tip: Unclear is a countdown, not a status.** A lead sitting on *Unclear* is a lead nobody has called. Managers watch this number. Move it off Unclear even if the answer is *No Response*. ## Writing the comment The comment is the most valuable thing you type into Formule. It is what your manager reads instead of interrupting you, and it is what reminds you what happened when you come back in three weeks. Write what actually happened and what happens next: > Spoke Tuesday. Wants 3 beds not 2, budget stretches to €620k for the right > thing. Viewing the riverside loft Saturday 11am. Call Friday to confirm. Not: > Called. Your manager can **request a comment** on a lead that has none, and **request feedback** once there is one. Both appear on your row until you answer. ## Opening a lead (Screenshot: A lead open in the detail pane) The open lead gives you, in order: - **Contact details** — the email and phone are clickable. - **Property Interest** — what they enquired about, their budget, their timeline, and how and when they want to be contacted. - **Agent Assignment** — who owns it now, since when, and who had it before. - **Timeline** — created, assigned, last comment. - **Lead Qualification** — appears only once somebody has filled it in. - **Related Leads** — the same person enquiring about other properties. Worth reading before you call; they may be further along than you think. ## Creating a lead by hand Most leads arrive on their own. Enter one by hand for a walk-in or a phone call. Press **Create lead** — the person-with-a-plus icon above the list. (Screenshot: The New lead form) **First name**, **Surname**, **Phone** and **Listing or source** are required. What they want (budget, timeline, area) folds under **More about what they want** and can wait. **Tip: Import from a screenshot.** The form has an **Import from a screenshot** button. Paste a screenshot of an enquiry — a portal notification, a WhatsApp message — and Formule fills in what it can read. Check it before you save. ## Importing a batch Got a spreadsheet of enquiries? Press the **Import leads** icon next to the create button. (Screenshot: The Import Leads wizard) 1. **Upload** a CSV, TSV or TXT file — the first row must be headers — or switch to **Paste Data** and paste straight from a spreadsheet. **Download Template CSV** gives you the right shape. 2. **Map Fields.** Match your columns to Formule's. **Name** and **Telephone** are mandatory; the step will not let you past without them. 3. **Review & Import.** Check the preview, then import. As a real estate agent, imported leads are assigned to you automatically. ## Hiding a lead you do not want Open the lead, press the pencil, and choose **Hide from my dashboard**. It leaves your list but stays visible to your manager. To get hidden leads back, switch on **Show my Hidden Leads dashboard** in your agent profile. ## Where to go next - [Adding and editing listings](https://docs.formule.io/agents/listings/) — the properties your leads ask about. - [The Telegram assistant](https://docs.formule.io/agents/assistant/) — ask about your leads without opening the app. --- # Adding and editing listings URL: https://docs.formule.io/agents/listings/ > Create a property, get the photos right, publish it, and understand drafts. A listing is a property plus everything you need to sell it: photos, price, description, and a public page you can send to anyone. (Screenshot: The listings register) Across the top you get **Listings**, **Published**, and — if your agency has it switched on — **Views**. Below that, search and a status filter, then the properties themselves as cards. ## Creating a listing Press **New listing** at the top right. (Screenshot: The New listing form) 1. **Start from a URL if you can.** The **Import from Online Listing** shortcut at the top right takes a listing address from elsewhere and pulls in the details and photos. Always check what it imported. 2. **Fill in the required fields.** **Property Title**, **Property Type**, **Status**, **Price**, **Location** and **Description** are required. Everything else is optional. 3. **Add the numbers buyers filter on** — bedrooms, bathrooms, size in square metres. A listing without them looks unfinished on its public page. 4. **Upload the photos.** The **first image becomes the header image** on the public page. Put your best exterior or main living space first. 5. **Choose whether to publish.** **Publish immediately** makes the public page live. Leave it off and the listing is saved as a **Draft**, visible only inside Formule. 6. Press **Create listing**. ### Two fields worth understanding **Property Reference** is your own internal code. It is for you. **Property Code (Lead Mapping)** is different and matters more: it ties incoming leads to this listing. If your adverts label a property one way and your listing is titled another, put the advert's name here so the enquiries connect to the right property. ## Drafts versus published A **Draft** carries a yellow flag on its card. It exists in Formule, you can edit it and assign it, but its public page is not live and the link will not work. Publish when the photos and the description are ready — a half-finished public page is worse than none. ## Editing and deleting **Edit** reopens the same form, pre-filled. If you close it with unsaved changes Formule asks before discarding them. **Delete** asks for confirmation and cannot be undone. Agents can delete listings they own or are assigned to; managers can delete any. **Caution: Deleting takes the public page with it.** Any link to that property stops working immediately — including links you have already sent to clients and anything pasted into an advert. ## Videos on a listing Each card has a collapsible **Videos** strip. **Generate Listing Reel** turns the gallery into a short video for social media. It stays disabled until the listing has images — the hint reads *Add images to generate a listing reel*. AI video and AI image tools live in [Marketing](https://docs.formule.io/managers/marketing/), and on a solo agency they need a paid plan. ## Who sees which listings Managers and advertisers see every listing in the agency. Agents see listings they created or are assigned to. On a solo agency every listing is assigned to you automatically and the real estate agent field is locked. If your agency gives you a private area, the form also offers **Hide from branch manager (private listing)**. ## Next - [Sharing a listing](https://docs.formule.io/agents/sharing/) — where that public link goes and what it looks like when pasted. --- # Sharing a listing URL: https://docs.formule.io/agents/sharing/ > Every published listing has a public page. Here is how to send it, and what it looks like when you paste it. Every **published** listing gets a public page of its own. No login, no Formule branding in the way — a page you can send to a buyer, paste into a portal, or put in an advert. ## Getting the link 1. Go to **Listings**. 2. Find the property and press the **share** icon on its card. 3. On a phone your normal share sheet opens — WhatsApp, Messages, wherever. On a desktop the link is copied and you get a **Link copied!** confirmation. You can also click the listing's title, which opens the public page in a new tab. Whatever is in the address bar is the link. **Caution: Drafts have no public page.** If the share icon gives you a link that shows nothing, the listing is still a **Draft**. Edit it, turn on **Publish immediately**, save, and try again. ## What it looks like when you paste it Formule generates a preview card for the link — the header image, the title, the price and the location — so pasting into WhatsApp, Messenger, Slack or a Facebook post shows the property rather than a bare address. This is why the **first photo matters so much**. It is the picture everyone sees before they decide whether to tap. **Tip: Preview showing the wrong image?.** Chat apps cache previews hard. If you have just changed the header photo, the old one can persist for a while. Test with a fresh link in a private chat with yourself before sending it to a client. ## Downloading the photos The **download** icon on a card gives you every image on the listing in one go — useful for a portal upload or a print advert. It appears only when there is something to download. ## Your own page, across every listing A single property link is one thing; a page that represents *you* is another. Your **mini-site** is your personal public page — who you are, the areas you cover, your track record and your client reviews. One link that works for every conversation. (Screenshot: The mini-site editor) Set it up from your profile: **My public mini-site**. See [Your public profile](https://docs.formule.io/agents/profile/). ## Sending a listing to many leads at once Emailing a listing to many leads from the Marketing Center is switched off for now. With WhatsApp connected, Really can send a published listing to the leads it fits, once you approve the message. See [Campaigns and marketing](https://docs.formule.io/managers/marketing/#send-a-listing-to-your-leads). --- # Your public profile URL: https://docs.formule.io/agents/profile/ > What clients see when they look you up, and the settings that live on your profile page. Your profile page is two things at once: the settings for your own account, and the source of what clients see when they look you up. (Screenshot: Your profile page) Reach it from your name at the top right, then **Profile**. ## What is on it - **Edit my profile** — your agent profile: photo, bio, contact details, and the switch that makes you public. - **My public mini-site** — your personal page, covered below. - **Office performance** — agency-wide reporting. Branch managers and super admins only. - **Your public profile** — appears once your profile is public, with buttons to copy and share the link. - **Really on Telegram** — linking Telegram. See [The Telegram assistant](https://docs.formule.io/agents/assistant/). - **WhatsApp** — connecting your number, if your agency has it enabled. ## Going public 1. Press **Edit my profile**. 2. Fill in the parts a client will actually read: your photo, **Bio**, **Location**, **Phone**, and your social links. 3. Turn on **Public Profile** — *"Enable to allow clients to view your profile and contact you."* 4. Press **Save Changes**. A **Your Public Profile** card then appears with your address and a button to open it. **Caution: Public means public.** Anything in your bio, your phone number and your photo are visible to anyone with the link, and to search engines. Put your work number there, not your personal one. ## Your mini-site The mini-site is separate from your agency profile: one link that represents you across every conversation, whoever you work for. (Screenshot: The mini-site editor) Open it from **My public mini-site**. It has six sections: 1. **Web address** — pick the link clients see, under `app.formule.io/`. Then the **Public mini-site** switch. Some names are reserved by the platform and will be refused. 2. **About you** — name, a one-line tagline, bio, where you are based, years of experience. 3. **Contact** — phone, WhatsApp, website. 4. **Expertise** — specialisations, areas covered and languages, each a comma-separated list. Plus **Show sold prices**, which decides whether your track record shows numbers. 5. **Awards & credentials** — title, who issued it, year. 6. **Client reviews** — reviews arrive here and stay private until you **Approve** them. You can also unpublish or delete one. Press **Save** when you are done. **Tip: The tagline does the work.** The tagline is the line under your name, and for most visitors it is the only sentence they read. *"Helping families find homes in the quieter suburbs"* beats *"Real estate professional"*. ## Hidden leads **Show my Hidden Leads dashboard** lives on your agent profile. Off — the default — leads you hide disappear quietly. On, you get a **Hidden Leads** dashboard to review and restore them. ## Connecting WhatsApp If your agency has WhatsApp enabled, your profile carries a **WhatsApp** card. Connecting lets you send and receive messages from inside Formule, and lets your assistant follow up on leads with you. On an account you signed up for on your own, connect from the **WhatsApp** icon in the left rail instead. WhatsApp on your own number comes with the Pro plan, or as the WhatsApp add-on on any plan; without it, that screen shows how to add it. 1. Tick the consent box — *"I understand and I agree to my assistant reading my lead conversations."* 2. On your phone, open WhatsApp → **Settings** → **Linked Devices** → **Link a Device**. 3. Scan the QR code on screen. You will see **WhatsApp connected successfully!**. To undo it, press **Disconnect**. If a setup is interrupted, the card offers **Resume Connection** or **Reset & Start Over**. **Caution: Read the consent line properly.** Connecting WhatsApp lets your assistant read the lead conversations on that account so it can follow up. If you use the same number for personal messages, think about that before you scan. ## No agent profile yet? If you are a branch manager, your profile shows **Set up your agent profile** — press it and Formule creates your agent record. If you are a plain user, you will see *"We couldn't find your agent record"*. Ask your branch manager to link your account. --- # Really in the app URL: https://docs.formule.io/agents/really/ > Chat with Really, Formule's AI, about your leads, follow-ups and listings, without leaving Formule. Really is Formule's AI. In the app it is a chat: ask about your leads, your follow-ups and your listings in plain language, and Really looks them up for you. It can also make changes — add a note, move a lead on, set a reminder — but only after you approve each one. It is the same assistant you can reach on [Telegram](https://docs.formule.io/agents/assistant/), with the same tools and the same rules about what it can see. (Screenshot: Really beside the leads workspace, ready while no lead is open) *The screenshots on this site come from a demo agency, where Really cannot answer, so its message box is switched off. In your own Formule you type there, or speak with the microphone.* ## Opening Really There are four ways in: - **On the leads page**, while no lead is open, Really is already there on the right: type or speak in its box. Open a lead and it steps aside; close the lead and the same chat is back. **⌘J** on a Mac or **Ctrl J** elsewhere puts the cursor in its box. - **Ask Really**, the round button at the bottom right of other screens, opens Really beside whatever you are doing. On a computer, **⌘J** or **Ctrl J** opens and closes it. - **Really** in the menu — the speech bubble in the icon rail — opens the full page, with your chats down the left. - **Ask Really** on a lead's page starts a new chat about that lead. See [asking about one lead](#asking-about-one-lead). On a phone, **Ask Really** sits just above the tabs and opens Really full screen. If you signed up for Formule on your own, Really is your home: Formule opens on the full Really page. ## Asking a question Type in the box that reads **Ask Really…** and press Enter. Shift+Enter starts a new line. A message can be up to 4,000 characters. A new chat offers four questions to start from: - *Who should I call today?* - *Which leads have gone quiet this week?* - *What's due today?* - *How am I doing this month?* While it works, Really shows what it is doing — *Looking through your leads*, for example — and the answer appears as it is written. To cut an answer short, press the square **Stop the answer** button where **Send** was. Useful things to type: > *What's the number for the couple asking about the riverside loft?* > > *Which of my leads match the new two-bed in the centre?* > > *Show me everything on Rania Novak and tell me what I promised her.* > > *Set Adrian Keller to Appointment and remind me Friday morning.* ### Asking about one lead On a lead's own page — on a phone, the screen you get when you tap a lead — press **Ask Really**, next to the lead's status. Really opens on a new chat, and the message box is labelled **About** and the lead's name. Your next message is about that lead, so *"When did we last speak?"* is enough. Press the **×** on the label to ask about something else instead. In the desktop workspace, where a lead opens beside the list, simply name the lead in your question. ## Really asks before it changes anything Looking things up needs no approval. Anything that changes your data waits for you: Really shows a card saying exactly what it will do — which lead, the new status, the text of the note or the message — and two buttons. - **Approve** carries it out once, exactly as the card shows. - **Cancel** drops it. The card then says how it went: **Done**, **Cancelled** or **Didn't go through**. A card you leave unanswered expires when you send another message, or after 30 minutes, and then reads **Expired**, so an old request can never run later by surprise. If a card reads **Didn't go through**, check the lead in Formule before you ask again. Usually nothing changed, but if the connection dropped while the change was running it may have gone through — for a WhatsApp message, look at the chat first so the client does not get it twice. This is what Really can change, always through a card: - add a note to a lead, or change its status; - schedule a follow-up, or mark one done; - mark a matched property as shown, sent or dismissed; - dismiss or snooze a suggestion; - send a WhatsApp message to a lead from your own number, once you have [connected WhatsApp](https://docs.formule.io/agents/profile/#connecting-whatsapp). The card shows the exact text and the follow-up reminder it will set — in three days, unless you ask for another — and nothing is sent until you approve it. **Note: It only sees what you see.** Really runs as you. A real estate agent asking about leads gets their own; a branch manager gets the agency's. A new chat works in the agency you have open in the app, and a saved chat stays in the agency it was started in. It cannot show you anything you could not see by signing in yourself. ## Your chats Every conversation is saved, and your chats are visible only to you: nobody else in your agency, your manager included, can open them. A chat is named after its first message. - **New chat** starts afresh. In the side panel it is the pencil at the top. - **Recent chats** lists your 50 most recent chats, newest first. On the full page they run down the left; in the side panel, and on a phone, press the clock — **Your chats** — to see them. - To rename or delete a chat, press **…** beside it and choose **Rename** or **Delete**. Deleting asks first, and removes the chat and every message in it for good. The side panel and the full page show the same chat. **Really** in the menu opens the one you were last in, and on a computer the arrows in the panel's header move the chat you are in onto the full page. ## How much you can ask How much you can ask depends on your plan: a number of messages a day, and a monthly Formule AI budget. - If you reach the day's limit, Really tells you; the allowance resets at midnight in your agency's time zone. - If this month's AI budget runs out, Really says so; it resets at the start of next month. **Plan & billing**, under your name at the top right, shows the plans with more. - Speaking to Really comes with the Really and Pro plans, the free trial and agency plans. On the free plan you type. Sending many messages in a few seconds also makes Really ask you to wait a minute. ## Who has Really Everyone signed in to an agency, except accounts that are only a finance admin or only an advertiser. Those roles do not get the leads workspace either, and Really is a leads assistant. See [Roles](https://docs.formule.io/start/roles/). ## Really in the app and on Telegram They are the same assistant, but for now each keeps its own history: a conversation on Telegram does not appear in the app, and the other way round. To talk to Really from your phone without opening Formule, link [the Telegram assistant](https://docs.formule.io/agents/assistant/). ## When it does not answer - **"Really is taking a short break."** Really has been paused for a moment. Try again a little later. - **"Really can only work in agencies you belong to."** The agency on screen, or the agency this chat was started in, is not one you belong to — a chat from an agency you have since left, for example. Switch to one of your own agencies and start a new chat. - **"I'm still working on your last message in this chat."** The chat is still answering, perhaps in another tab or window. Wait a moment, then send again. - **Your question reappears in the message box.** Really could not take it: you sent several messages within a minute, the chat was still busy, Really was paused, the connection dropped, or you reached the day's limit. Nothing is lost. The note in the chat says what happened, and when you can ask again if there is a wait. - **"Couldn't load your chats."** Press **Try again**. - **"This chat isn't available"** — it was deleted, or the link is not one of your chats. Press **Start a new chat**. - **There is no Ask Really button.** It is not offered on public pages, or on the Really page itself, which already is the chat. If it is missing everywhere, check your role above. More in [Troubleshooting](https://docs.formule.io/reference/troubleshooting/#really-in-the-app). ## Other ways to use Formule's AI - [The Telegram assistant](https://docs.formule.io/agents/assistant/) — Really in your pocket, without opening the app. - [Connecting ChatGPT](https://docs.formule.io/developers/connect-chatgpt/) and [Connecting Claude](https://docs.formule.io/developers/connect-claude/) — use your own AI assistant with your Formule data, under the same permissions. --- # The Telegram assistant URL: https://docs.formule.io/agents/assistant/ > Link your Telegram chat and ask about your leads without opening the app. Really, Formule's AI, also lives in Telegram. Once your chat is linked it answers questions about *your* work — your leads, your follow-ups, your numbers — and can make small changes for you while you are between viewings. You can chat with Really inside Formule too, without linking anything — see [Really in the app](https://docs.formule.io/agents/really/). ## What it can actually do Ask it in plain language. Behind the scenes it can: - **Find leads** — by name, by phone number, by status, or just the unassigned ones. - **Open a lead** — contact details, what they enquired about, the full history. - **Tell you what needs attention** — leads that have gone quiet, follow-ups due today, nudges waiting for you. - **Search listings** and find which of your leads match a property — or which properties match a lead. - **Report your numbers** — how your pipeline is doing. - **Write things down** — add a note to a lead, change a lead's status, schedule a follow-up, mark one done. Useful things to type: > *Who hasn't been called this week?* > *What's the number for the couple asking about the riverside loft?* > *Set Adrian Keller to Appointment and remind me Friday morning.* > *Any leads that match the new two-bed in the centre?* **Note: It only sees what you see.** The assistant runs as you. A real estate agent asking about leads gets their own; a branch manager gets the agency's. It cannot show you anything you could not see by signing in yourself — the same rules apply, enforced in the same place. ## Linking your chat You do this once, from your profile. 1. Open **Profile** from your name at the top right, and find the **Your assistant** card. 2. Press **Open in Telegram**. Telegram opens on the Formule bot. 3. Press **Start** in Telegram. 4. Come back to Formule, copy the one-time code from the card, and send it to the bot as a message. The card then reads **Linked to Telegram as** *your name*, and you are done. **Caution: The code expires.** It works once, and only for a few minutes — the card shows the exact time. If it has lapsed, reload your profile for a fresh one. ## Unlinking Press **Unlink** on the same card. The assistant immediately stops treating that chat as you — *"The assistant no longer knows that chat is you."* Do this if you change phones or lose the device. ## One bot, every agency There is a single Formule bot for every agency. It is the link between your Telegram chat and your Formule account that decides who you are, which is why the code matters and why you should not forward it. ## When it does not answer - **It says it doesn't know who you are.** The link has been broken or never completed. Redo the steps above. - **It cannot find a lead you can see in the app.** Try the phone number — it is matched exactly and is the most reliable handle. - **Nothing happens at all.** Check you pressed **Start**; a bot cannot message you first. More in [Troubleshooting](https://docs.formule.io/reference/troubleshooting/). ## For developers The assistant is one client of Formule's MCP server. You can point your own — [ChatGPT](https://docs.formule.io/developers/connect-chatgpt/) or [Claude](https://docs.formule.io/developers/connect-claude/), for example — at the same tools. See [The MCP server](https://docs.formule.io/developers/mcp/). --- # Setting up your agency URL: https://docs.formule.io/managers/setup/ > What Formule sets up for you, what you configure yourself, and the order to do it in. An agency with branches, or one where Formule runs the adverts, is created by the Formule team: [book a call](https://calendly.com/giovannimule/intro) and the team sets it up with you. What follows is everything that is yours to do once it exists. If you sell on your own, you can sign up yourself; see [If you are a solo real estate agent](#if-you-are-a-solo-real-estate-agent). ## The order that works 1. **Set up your own agent profile.** As a branch manager you are not automatically a real estate agent. Open **Profile**; if you see a card saying **Set up your agent profile**, press it. Without an agent record you cannot hold leads yourself or connect WhatsApp. 2. **Put a few real listings in.** Agents joining an empty system have nothing to work with, and leads need a property to attach to. See [Adding and editing listings](https://docs.formule.io/agents/listings/). 3. **Invite your agents** and approve them as they apply. See [Inviting and managing real estate agents](https://docs.formule.io/managers/agents/). 4. **Decide how leads get routed** before the first advert runs, not after. See [Assigning and routing leads](https://docs.formule.io/managers/lead-routing/). 5. **Connect the assistant.** Link your own Telegram first so you know what your real estate agents are being asked to do. See [The Telegram assistant](https://docs.formule.io/agents/assistant/). ## Things only Formule can switch on Some capabilities are turned on per agency by the Formule team. If you want one, ask your Formule contact — there is no toggle in the app: | Capability | What it gives you | | --- | --- | | **WhatsApp** | Connecting real estate agents' WhatsApp numbers, chat history on a lead, bulk messaging. | | **Listing views** | The **Views** figure and per-listing view counts. | | **Advertising budgets** | A monthly ad budget on each real estate agent's profile, with history. | | **AI lead handling** | Automatic classification and preference extraction from lead comments. | Roles are the same story: who is a branch manager and who is a real estate agent is set by Formule, not from inside the app. What you *can* do yourself is approve real estate agents, assign leads, and switch a real estate agent's private-leads area on or off. ## If you are a solo real estate agent An independent real estate agent gets a **personal agency** of their own. Sign up at **[app.formule.io/signup](https://app.formule.io/signup)** with a code sent to your email, or with Google. Two short screens follow: - **About you**: your name, and optionally a link to one of your properties. Where you sell is worked out from your device, shown in one line, and you can press **Change**. - **What should Really take off your plate?**: following up your leads, your marketing, or both, and whether you work alone or with a team. You can skip it. Press **Start my free trial**. Formule creates your personal agency, starts a 7-day free trial of the Really plan (no card needed) and opens Really. When the trial ends, the account moves to the free plan unless you choose a plan in **Plan & billing**, under your name at the top right. **Note: Solo agencies work slightly differently.** A personal agency has no **Agents** screen, because there is no team to manage, and no **Campaigns**: Formule-run advertising is for agencies set up with the Formule team. AI video and AI images need a paid plan, where an agency tenant is never gated. Everything else is identical. ## Making sure it is actually working Before you point advertising spend at it: - Create a test lead against a real listing and check it appears in **Leads**. - Assign it to a real estate agent and confirm they can see it — and that a *different* agent cannot. - Ask that real estate agent to set a status and write a comment, and check you can read it. - Open **Office performance** from your profile and confirm the numbers move. If any of those fail, fix it now. Every one of them is a thing that silently loses leads later. --- # Inviting and managing real estate agents URL: https://docs.formule.io/managers/agents/ > The join link, approving applications, and what to do when a real estate agent leaves. (Screenshot: The real estate agent roster) The **Agents** screen is your team roster: who is active, how many leads each holds, and who is waiting to be let in. ## Inviting a real estate agent Every agency has a public join link: ``` app.formule.io/join/your-agency-slug ``` Replace `your-agency-slug` with your agency's name as it appears in your own address bar when you are signed in. Anyone with the link can apply — no login needed. Send it by WhatsApp, put it in a job advert, hand it out at an interview. The applicant fills in a form covering their experience, the price ranges and areas they work, how they prefer to be contacted, and their social links. When they submit, they see **Application Submitted!** and the application lands with you. **Caution: The link is public.** Anyone who has it can apply. It does not let them *in* — nothing happens until you approve — but do not expect it to stay private once it is out. ## Approving applications A **Waiting for approval** section appears at the top of the Agents screen whenever somebody is waiting, with a count. 1. Read the application — name, email, and what they filled in. 2. Press **Approve**. They can now sign in and start receiving leads. 3. Or press **Decline**. Approved real estate agents move into the main grid immediately. ## Reading the roster The stats across the top give you **Agents**, **Leads**, **Ad leads**, **Added by the team**, **Leads per agent** and **Commented** as a percentage. **Commented** is the number to watch. It is the share of leads with a comment on them — in other words, the share your team has actually worked rather than merely received. A high lead count with a low comment percentage is an agency losing money. Each real estate agent card shows their photo, name, a **Public** badge if their profile is live, and their lead count. From it you can: - **View leads** — everything assigned to that real estate agent. - **Edit their profile** — the pencil icon. - **Open their public profile** — the external-link icon. ## When a real estate agent leaves 1. Open **View leads** for that real estate agent. 2. Press **Remove all leads** at the bottom. Confirm. Every lead they held returns to the **Unassigned** pool — it does not delete anything. 3. Redistribute from the unassigned pool. See [Assigning and routing leads](https://docs.formule.io/managers/lead-routing/). 4. Ask your Formule contact to revoke their access. **Caution: Do the reassignment the same day.** Leads sitting in an ex-agent's list are invisible to everyone else and nobody is calling them. This is the single most common way an agency quietly loses a month of pipeline. ## Advertising budgets If your agency has advertising budgets enabled, each real estate agent's profile carries a **Advertising budget** card with their ad counts and a history of changes. The figure itself is editable only by super admins, advertisers and finance admins — managers see it read-only. --- # Assigning and routing leads URL: https://docs.formule.io/managers/lead-routing/ > Getting every enquiry owned by somebody, fast — and knowing when it has not been. An unassigned lead is the most expensive thing in Formule. Everything on this page is about shortening the time between an enquiry arriving and a real estate agent owning it. ## The unassigned pool Leads with no real estate agent are pinned to the top of the list, whatever anyone has sorted by. That is not a preference you can turn off — it is the point. You can also open the pool directly from **Agents** → **View leads** on the **Unassigned** entry. ## Two ways to assign Pick a real estate agent from the dropdown on a lead's row and Formule asks *how* you want to assign it. ### Assign Directly > *Agent gets immediate access to all lead details.* The lead is theirs. Use this when you know whose it is — their area, their price bracket, their client. ### Request Assignment > *Agent must accept before seeing contact info.* The real estate agent sees the property and the budget, but the surname, phone and email stay masked until they press **Accept**. If they **Decline**, it goes back to the pool. Use this when you are offering a lead rather than handing one over — a new area, a real estate agent you are testing, or a lead two people want. **Note: Not available for web-only leads.** Requests only work for advert leads. Enquiries from your website must be assigned directly. ## Bulk moves To clear a real estate agent's list — they are leaving, or going on holiday — open **View Leads** for them and press **Remove All Leads**. Everything returns to the unassigned pool, unassigned but otherwise untouched. ## Making sure leads get worked Assignment is half the job. The other half is knowing what happened afterwards. ### Request a comment On a lead with no comment yet, use the comment-request control in the comment column. The real estate agent sees the request on their row until they answer. Use it when a lead has been assigned for a day and nothing has been written. ### Request feedback Once a comment exists, you can ask a follow-up question about it. Both requests keep a history, so you can see what was asked and when. **Tip: Use the comment percentage, not your memory.** The **Commented** figure on the Agents screen is the share of leads that have been written up. Watch it per real estate agent. It finds the agent who takes leads and does not work them far faster than reading rows will. ## Custom dashboards Saved views of your leads, on the leads screen under **Custom Dashboards**. Press **New Dashboard** and you get presets — **Unassigned**, **Hot Leads**, **Follow-up**, **Converted** — or build your own from: - **Unassigned Only** - **Filter by CRM Status**, **Agent Name**, or **Property** - **Budget Range** and **Date Range** - **Manual Only** — an empty list you tag leads into by hand Give it a name and press **Create Dashboard**. It becomes a collapsible section you can edit or delete. Two worth having from day one: 1. **Unassigned Only** — your morning check. 2. **Status: Unclear**, older than a few days — leads nobody has touched. ## Private leads A real estate agent can be given a private area. Leads they mark private are invisible to you and to every other real estate agent, and are left out of campaign counts. **Caution: Private means private from you too.** If you enable this for a real estate agent, you are choosing not to see those leads. That is a real trade — useful for a senior real estate agent with their own book, painful if you are trying to measure the team. ## Hidden and deleted **Hidden** is personal housekeeping: a lead a real estate agent has pushed out of their own view. It stays visible to you. **Deleted** is permanent and managers only. It cannot be undone. Blacklisting or setting **Disqualified** is almost always the better answer, because it keeps the record. ## A routine that works - **Every morning:** open the unassigned pool and clear it. - **Twice a week:** check the **Commented** percentage per real estate agent; request comments where it is low. - **Weekly:** open [Office Performance](https://docs.formule.io/managers/performance/) and look at response times, not just lead counts. --- # Campaigns and marketing URL: https://docs.formule.io/managers/marketing/ > Running adverts, seeing which one produced which lead, and the AI tools in the Marketing Center. Two screens do the work here. **Campaigns** is where adverts live and where you see what they produced. **Marketing** is the toolbox for making the creative. ## Campaigns (Screenshot: The campaigns dashboard) The top half is the **Advertising queue** — every property submitted for advertising, counted by **Draft or in progress**, **Scheduled**, **Running** and **Completed**, filterable by status, platform and real estate agent. ### Submitting a property to advertise 1. Press **Advertise a listing**. 2. **Property** — choose a listing. If you have none, the wizard sends you to Listings first. 3. **Options** — choose **Use my photos** ("exactly what's on the listing") or **Enhance my photos** (AI upscale and colour correction, with a note that it adds review time). 4. **Preview** — see it as a Facebook or Instagram post. 5. **Submit** — add notes for whoever runs the advert, and send it. **Note: The ad copy is not yours to write here.** Final ad copy is written by the team at publish time. What you are submitting is the property, the photos and any notes. Who can do what: anyone signed in can view and submit. Changing status, budget or order needs an admin or advertiser. Deleting needs an admin. Pushing to Meta needs a super admin or advertiser. ### Leads by campaign The bottom half groups your leads by the campaign that produced them, sortable by **Lead Count** or **Recent Activity**. Each card shows the lead count, the last activity and the top agent, and its menu offers **View leads**. If a campaign is not yet tied to a property, use **Link to Landing Page** to connect it to a listing. Do this — it is what makes cost-per-lead answerable. **Tip: Campaigns are matched by name.** A campaign card exists for every distinct property name on your leads. If your adverts name a property differently from your listing, you get two cards for one property. Fix it with **Property Code (Lead Mapping)** on the listing. ## The Marketing Center (Screenshot: The Marketing Center) Across the top: your **Listings** count and your **Credits** balance, with the monthly allowance. AI video costs 5 credits; an AI image costs 1. ### Landing Page Landing pages come from listings — there is no separate builder. The card tells you how many listings you have and sends you to **Manage Listings**. Publish a listing and its page exists. ### AI Video **Create Talking-Head Video**, **Create Listing Reel**, or a free-form **Generate Video**. The generator offers a source image or video, style presets or a custom prompt, an aspect ratio (16:9, 9:16 for reels, 1:1, 4:5) and a duration of 4, 6 or 8 seconds. ### AI Images Three tools: - **Photo Transformer** — virtual staging, day-to-night, renovations. - **Floor Plan Furnisher** — puts furniture on an architectural floor plan in a chosen style. - **Listing Poster** — a branded advert poster with your photo, contact details and agency logo. A generated image can be handed straight to the video tool. Everything you make lands in **Your creations**, under **Videos** and **Images**. **Caution: Paid plan, solo real estate agents only.** On a personal agency, AI video and AI images need a paid plan. Agency tenants are never gated. Submitting a property to advertise is for agencies set up with the Formule team, so a personal agency has no **Campaigns** screen. ## Send a listing to your leads Emailing a published listing to a list of leads from the Marketing Center is switched off for now, until agents can send from their own mailbox. With WhatsApp connected, you can ask [Really](https://docs.formule.io/agents/really/) to send a published listing to the leads it fits. Really shows the message and the recipients on a card, and nothing is sent until you approve it. --- # Reading your performance numbers URL: https://docs.formule.io/managers/performance/ > Office Performance — where it is, what each number means, and which ones actually predict revenue. (Screenshot: Office Performance reporting) **Tip: It is not in the menu.** Open **Profile** from your name at the top right, then press **Office performance**. Branch managers and super admins only — everyone else gets *"The Office Performance dashboard is only available to branch managers."* ## Choose a period first Presets are **7d**, **30d**, **90d** (the default), **1y** and **All time**, or set **From** and **To** by hand. Every number below moves with it, so decide the period before you read anything. ## Office overview Six numbers, in two groups. The first three are volume and ownership: | Number | What it means | | --- | --- | | **Leads** | Enquiries received in the period. Underneath: how many found an owner and how many are still waiting. The info button gives the share that found one. | | **Time to assign** | How long an enquiry waited, on average, before somebody owned it. | | **Commented** | How many were actually written up. Underneath: how many produced a follow-up exchange (feedback). | The other three are quality: | Number | What it means | | --- | --- | | **Qualification rate** | The share worth pursuing. Underneath: how many were qualified and how many were not. The info button says how many unclear leads are left out. | | **Conversion rate** | The share that became business. Underneath: how many converted. | | **Appointments** | Viewings booked. | Then three charts: **Leads over time**, **Status breakdown**, and **Top properties**. **Note: Every KPI has a tooltip.** Hover any figure for its exact definition. Where this page and the tooltip disagree, trust the tooltip — it is generated from the calculation itself. ## The two numbers that predict revenue Most managers read **Leads** first. It is the least useful number on the page — it measures your advertising, not your agency. **Time to assign** is the one that matters. It is the gap between an enquiry arriving and somebody owning it, and it is the clearest predictor of whether that enquiry turns into anything. If it is measured in hours, fix that before you spend another euro on adverts. **Commented** is the second. A lead with no comment has not been worked, whatever its status says. If assignment is fast but comments are thin, your problem is follow-through, not routing. ## The real estate agent leaderboard Sortable by **Leads**, **Assigned**, **Qualified**, **Qual. rate**, **Appt.**, **Conv.**, **% Comments**, **Avg Response** and **Last Activity**. Click any row to drill into that real estate agent — their leads over time, their status breakdown, their top properties and their recent leads. Read it in this order: 1. **Avg Response** — who is slow. 2. **% Comments** — who takes leads without working them. 3. **Conv.** — who closes. A real estate agent with a high lead count and a low comment percentage is not busy. They are sitting on your pipeline. **Caution: Small numbers lie.** Over a week, one good month for one real estate agent looks like a trend. Use 90 days for judging people and 7 days for spotting problems. ## Exporting The **Export** menu downloads CSVs of **Office KPIs**, **Status breakdown**, **Time series**, **Agent leaderboard** and **Raw leads**. Filenames carry the agency and the date range, so they stay identifiable in a downloads folder. Use **Raw leads** when you want to do your own analysis — it is the underlying data, not the summary. --- # Formule support URL: https://docs.formule.io/support/ > Get help with the Formule iPhone app and your agency workspace. The fastest way to get help is the **Help** chat inside Formule. On a computer, **Help** is in the bar at the top of every screen; on a phone, open **Profile** and tap **Help & support**. The assistant answers straight away from these docs, and anything it can't answer goes to the Formule team, who reply in the same chat (and by email if you have left). If you can't sign in, or you need help signing in, opening your agency workspace, managing leads or listings, or receiving iPhone notifications, email [giovanni@formule.io](mailto:giovanni@formule.io). Tell us what you were trying to do, what happened, and which iPhone and iOS version you use. Please do not include your password, a sign-in code, or a customer's personal information in your message. You can also check the [troubleshooting guide](https://docs.formule.io/reference/troubleshooting/) for common account and workspace questions, and [The iPhone app](https://docs.formule.io/start/iphone-app/) for what the app does and who can use it. Our [privacy policy](https://app.formule.io/privacy) explains how Formule handles app and notification data. --- # Glossary URL: https://docs.formule.io/reference/glossary/ > The words Formule uses, and what each one actually means. ## Ad lead An enquiry that arrived from an advertising campaign. The default kind. Can be offered to a real estate agent with [Request Assignment](#request-assignment). ## Advertiser A role that works campaigns, possibly across several agencies. Sees Campaigns, Listings and Agents; cannot open the leads workspace. ## Agency Your company in Formule — your real estate agents, listings and leads. Also called a *tenant*. Created by the Formule team, or as a [personal agency](#personal-agency) when you sign up on your own. ## Assign Directly Handing a lead to a real estate agent outright. They get the contact details immediately. Contrast [Request Assignment](#request-assignment). ## Blacklist Marking a lead as one nobody should pursue, with an optional reason. Keeps the record, unlike deleting. ## Branch manager The role that runs an agency: sees every lead and listing, assigns leads, approves real estate agents, and is the only role that can delete a lead or open Office Performance. ## Campaign A named advertising effort. In practice, a campaign card exists for each distinct property name across your leads — which is why [Property Code](#property-code-lead-mapping) matters. ## Comment What a real estate agent writes after working a lead. The most valuable text in the system: it is what managers read, and what the real estate agent needs when they return to the lead weeks later. ## Commented The share of leads that have a comment on them. The clearest measure of whether your team is working leads or merely receiving them. ## Converted The lead status meaning they bought or rented. ## Credits The balance the Marketing Center spends on AI generation. A video costs 5; an image costs 1. Refreshed monthly with your plan; agencies can also top up. ## CRM status Where a lead has got to: *Unclear*, *No Response*, *Engaged*, *Appointment*, *Converted*, *Disqualified*, *Nurture*. ## Custom dashboard A saved, filtered view of your leads. Presets exist for Unassigned, Hot Leads, Follow-up and Converted. ## Draft A listing that exists in Formule but whose public page is not live. Carries a yellow flag on its card. ## Feature flag A capability switched on per agency by the Formule team — WhatsApp, listing views, advertising budgets, AI lead handling. Not toggleable from inside the app. ## Finance admin A role that sees only the real estate agent roster and advertising budgets. ## Hidden lead A lead someone has removed from their own view. Personal, not global: it stays visible to managers. Agents can switch on a Hidden Leads dashboard to get them back. ## Join link Your agency's public application address, `app.formule.io/join/your-agency`. Anyone can apply through it; nobody gets in until a manager approves. ## Lead An enquiry from a person interested in a property. The unit of work. ## Mini-site A real estate agent's personal public page — bio, areas, track record, reviews — at a web address they choose. Separate from their agency profile. ## Personal agency The single-person agency you get when you sign up on your own. No Agents or Campaigns screen, and some capabilities need a paid plan. ## Private lead A lead visible only to the real estate agent who owns it — invisible to managers and other real estate agents, and excluded from campaign counts. Requires a private area on that agent. ## Property Code (Lead Mapping) The field on a listing that ties incoming leads to it. Set it to whatever your adverts call the property, so enquiries land against the right listing. ## Property Reference Your own internal code for a property. Purely for your reference; it does not affect matching. ## Really Formule's AI. A chat in the app and on Telegram that answers questions about your leads, follow-ups and listings, and makes the changes you approve. See [Really in the app](https://docs.formule.io/agents/really/). ## Request Assignment Offering a lead to a real estate agent rather than handing it over. Surname, phone and email stay masked until they **Accept**; **Decline** returns it to the pool. Not available for web-only leads. ## Super admin Formule staff. Sees every agency, and sets the things agencies cannot set themselves. ## Tenant The internal word for an agency. You will see it in platform screens and in developer documentation. ## Unassigned pool Leads with no real estate agent. Always pinned to the top of the list. ## Web-only lead An enquiry captured by your website rather than an advert. Kept separately, shown in its own section, and cannot be offered with Request Assignment. --- # Troubleshooting URL: https://docs.formule.io/reference/troubleshooting/ > The problems that actually come up, and what to do about each one. ## Signing in ### I get bounced to "Verify your email" Your email address has not been confirmed. Check your inbox — including spam — for the confirmation, then reload Formule. If nothing arrives, ask your branch manager to check the address on your account is the one you are using. ### "Continue with Google" does nothing Your browser is blocking the popup. Allow popups for `app.formule.io` and try again. If you are on a work device with a managed browser, try a different one. Inside the Instagram and Facebook browsers there is no Google button at all, because Google refuses to sign anyone in there. Use the code sent to your email, or open the page in Safari or Chrome. ### The sign-up or sign-in code does not arrive Check your spam or promotions folder. The code works for about an hour; after a minute you can ask for a new one. If the address was mistyped, press **Use a different email**. ### I signed in but there is nothing here You have no agency access yet. If you signed up on your own, finish the two short setup screens: your workspace is created when you press **Start my free trial**. If you applied through a join link, your manager has not approved you. If you are a manager whose agency is new, contact Formule. ### I get a "Select a Company" card every time You belong to more than one agency. That is expected — pick one; you can switch later from the menu. ## Leads ### A real estate agent cannot see a lead I assigned Work through these in order: 1. **Was it a request, not a direct assignment?** A requested lead shows as amber with masked details until the real estate agent presses **Accept**. Until then it is not really theirs. 2. **Are they looking at the right agency?** If they belong to several, they may be in the wrong one. 3. **Is the lead private?** A private lead belongs to one real estate agent and is invisible to everyone else, including you. 4. **Did they hide it?** Hiding is personal. They can get it back by switching on **Show my Hidden Leads dashboard** in their agent profile. ### A lead vanished from my list Most likely you hid it, or it was reassigned. Hidden leads come back via the Hidden Leads dashboard. If it was reassigned, the lead's **Agent Assignment** section shows previous real estate agents. **Caution: Deleted leads are gone.** Deletion is permanent and managers-only. There is no undo and no bin. ### New leads are not appearing The list updates live, so new leads normally appear without a refresh. If they are not: 1. Reload the page — a laptop waking from sleep often drops the live connection. 2. Check your filters. A saved status filter or an active search hides everything else. 3. Check the right section. Web-only leads sit apart from advert leads. ### Two cards for the same property in Campaigns Your adverts and your listing use different names. Open the listing, set **Property Code (Lead Mapping)** to the name your adverts use, and future leads will land on one card. ## Listings ### The share link shows nothing The listing is a **Draft**. Edit it, turn on **Publish immediately**, save, and share again. ### The preview shows the old photo Chat apps cache link previews aggressively. The page itself is correct. Test a fresh link in a chat with yourself; give it time before assuming it is broken. ### I cannot delete a listing Agents can only delete listings they own or are assigned to. Advertisers cannot delete at all. Ask a manager. ### No "Views" figure View counts are switched on per agency. Ask your Formule contact. ## Really in the app ### There is no Ask Really button It is not offered on public pages, or on the Really page itself, which is already the chat. If it is missing on every screen, your account is a finance admin or advertiser only; those roles do not get Really. See [Roles](https://docs.formule.io/start/roles/). ### It says it can only work in agencies I belong to The agency on screen, or the agency the chat was started in, is not one you belong to — a chat from an agency you have since left, for example. Switch to one of your own agencies and start a new chat. ### My question came back into the message box Really could not take it: you sent several messages within a minute, the chat was still busy, Really was paused, the connection dropped, or you reached your plan's daily limit, which resets at midnight in your agency's time zone. Nothing is lost. The note in the chat says what happened, and when you can ask again if there is a wait. ### It says I've used this month's Formule AI budget Your plan includes a monthly AI budget, and this month's is spent. It resets at the start of next month. For more, choose a bigger plan in **Plan & billing**, under your name at the top right. See [How much you can ask](https://docs.formule.io/agents/really/#how-much-you-can-ask). ### A change did not happen Changes only run after you press **Approve** on Really's card. A card you did not answer expires when you send your next message, or after 30 minutes; ask again and approve the new one. If the card reads **Didn't go through**, check the lead in Formule before you try again. Usually nothing changed, but if the connection dropped while the change was running it may have gone through. For a WhatsApp message, check the chat before sending again. More in [Really in the app](https://docs.formule.io/agents/really/#when-it-does-not-answer). ## The assistant ### It says it does not know who I am The chat link is broken or was never finished. Open **Profile** → **Your assistant**, get a fresh code and send it to the bot again. ### The code does not work It works once and expires within minutes. Reload your profile for a new one, and send it as a message rather than forwarding it. ### It cannot find a lead I can see Search by **phone number** — it is matched exactly and is the most reliable handle. Remember the assistant only sees what you see: as a real estate agent, it will not find another real estate agent's leads. ### Nothing happens when I message it Confirm you pressed **Start** in Telegram. A bot cannot open a conversation with you first. ## WhatsApp ### The QR code will not scan The code refreshes. Reload the profile page for a new one, and scan from WhatsApp → **Settings** → **Linked Devices** → **Link a Device** — not your camera app. ### It says "Resume Connection" A previous attempt was interrupted. **Resume Connection** picks up where it stopped; **Reset & Start Over** begins again. ### No WhatsApp card on my profile In an agency, WhatsApp is enabled per agency. Ask your Formule contact. On an account you signed up for on your own, connect WhatsApp from the **WhatsApp** icon in the left rail. It comes with the Pro plan, or as the WhatsApp add-on on any plan, both in **Plan & billing**. The free trial does not include it. ## Still stuck Tell your branch manager, or your Formule contact, three things: **what you did**, **what you expected**, and **what happened instead** — with a screenshot. It is worth more than a paragraph of description. If you signed up on your own, send the same to [Support](https://docs.formule.io/support/). --- # Frequently asked questions URL: https://docs.formule.io/reference/faq/ > Short answers to the questions that come up most. ## Access and accounts ### How do I get help? Tap **Help**. On a computer it is in the bar at the top of every screen; on a phone, open **Profile** and tap **Help & support**. A chat opens: the assistant answers straight away from these docs, and when it can't, it passes your question to the Formule team, who reply in the same chat. If you have left by then, the reply also reaches you by email. See [Support](https://docs.formule.io/support/). ### Can I sign up for Formule myself? Yes. Go to [app.formule.io/signup](https://app.formule.io/signup) and sign up with a code sent to your email, or with Google outside the Instagram and Facebook browsers. Every new account gets a 7-day free trial of the Really plan, with no card needed. See [Your first hour](https://docs.formule.io/start/first-hour/). Agencies with branches, or that want Formule to run their adverts, are set up with the Formule team: [book a call](https://calendly.com/giovannimule/intro). Real estate agents join an existing agency through its join link. ### What does Formule cost? - **Free**: your leads and Really, with a small monthly AI budget. - **Really**: €19.99 a month, or €199 a year. - **Pro**: €49 a month, with WhatsApp on your own number included. - **WhatsApp add-on**: €19 a month, on any plan. Agency plans are agreed with the Formule team. You see your plan, and change it, under your name at the top right, in **Plan & billing**. ### What happens when my trial ends? The account moves to the free plan, unless you chose a plan. Nothing is charged without you choosing one, and your leads and listings stay where they are. ### Can I belong to more than one agency? Yes. You will get a **Select a Company** card when you sign in. ### Who can change my role? Only Formule. Managers can approve real estate agents and assign leads, but who is a manager and who is a real estate agent is set for them. ### Can I sign in with a password instead of Google? Yes, if your account has one. The sign-in screen leads with **Email me a sign-in code**, which works for every account, and **Sign in with a password instead** is one tap away. ### Is there an iPhone app? Coming soon to the App Store. Until then Formule works in Safari, and you can add it to your Home Screen. See [The iPhone app](https://docs.formule.io/start/iphone-app/). ## Leads ### Why can't I see another real estate agent's leads? Because you are a real estate agent. It is not a filter — the data is never sent to your browser. ### What is the difference between hiding and deleting? Hiding removes a lead from **your** view; managers still see it and you can get it back. Deleting is permanent, managers-only, and has no undo. ### What happens if I decline a requested lead? It returns to the unassigned pool for someone else. Your manager can see it happened. ### Can I undo assigning a lead to the wrong real estate agent? Yes — assign it to the right one. The lead's **Agent Assignment** section keeps the history. ### How do I get a lead back from a real estate agent who left? Open **View leads** for them and press **Remove all leads**. Everything returns to the unassigned pool. ### Why is a lead's ID prefixed `web-`? It came from your website rather than an advert. Web-only leads are kept separately and cannot be offered with Request Assignment. ## Listings ### Why is my listing not public? It is a **Draft**. Edit it and turn on **Publish immediately**. ### Which photo becomes the header image? The first one. It is also the picture used in link previews, so choose it deliberately. ### Can I import a listing from another site? Yes — **Import from Online Listing** in the create dialog. Check what it pulls in. ### What is the difference between Property Reference and Property Code? **Property Reference** is your own internal code and affects nothing. **Property Code (Lead Mapping)** ties incoming leads to the listing — set it to whatever your adverts call the property. ## Really and the assistant ### What is Really? Formule's AI. You can chat with it in the app — press **Ask Really** — or on Telegram. See [Really in the app](https://docs.formule.io/agents/really/). ### What can it see? Exactly what you can. It runs as you, under the same rules as the app. ### Does Really change things without asking? In the app, no. Anything that changes your data appears as a card first, and nothing happens until you press **Approve**. On Telegram there are no cards, so say exactly what you want changed. ### Can anyone else read my chats with Really? No one in your agency can. Your chats with Really in the app are visible only to you; your manager cannot open them. ### Is there a limit to how much I can ask Really? Yes, and it depends on your plan: a number of messages a day, which resets at midnight in your agency's time zone, and a monthly AI budget. See [Really in the app](https://docs.formule.io/agents/really/#how-much-you-can-ask). The Telegram assistant keeps its own limits. ### Is there a separate bot for my agency? No — one Formule bot serves every agency. The link between your Telegram chat and your Formule account is what identifies you. ### What happened to the WhatsApp assistant number? It was never built and is not planned. WhatsApp is for talking to your *clients* from inside Formule; Really lives in the app and in Telegram. ### Can I use Formule from ChatGPT or Claude? Yes. Both connect to Formule's MCP server and work under your permissions. ChatGPT needs a plan with developer mode, and works on the web only. See [Connecting ChatGPT](https://docs.formule.io/developers/connect-chatgpt/) and [Connecting Claude](https://docs.formule.io/developers/connect-claude/). ## Marketing and billing ### What do credits cost? An AI video costs 5 credits, an AI image 1. Your plan gives you a monthly allowance: 40 credits on Really, 150 on Pro, none on the free plan. Agencies can also top up. ### Why can't I use AI video? On a personal agency it needs a paid plan. Agency tenants are never gated. ### Can I email a listing to my leads from Formule? Not at the moment. Emailing a listing to a list of leads is switched off until you can send from your own mailbox. With WhatsApp connected, you can ask Really to send a published listing to the leads it fits, after you approve the message and the recipients. ## Reporting ### Where is the reporting? **Profile** → **Office performance**. It is not in the menu. Branch managers and super admins only. ### Which number should I actually watch? **Time to assign** and **Commented**. Lead volume measures your advertising; those two measure your agency. ### Can I get the raw data out? Yes — the **Export** menu gives CSVs, including **Raw leads**. ## Data ### Is my agency's data separate from other agencies'? Yes. Separation is enforced in the database itself, not in the interface. ### Are the screenshots in this documentation real customer data? No. Every screenshot is captured from an invented agency, **Nova Property Group**, with synthetic names, properties and numbers. --- # The MCP server URL: https://docs.formule.io/developers/mcp/ > Formule speaks the Model Context Protocol, so an assistant can read and write your agency's data under exactly your permissions. Formule exposes a [Model Context Protocol](https://modelcontextprotocol.io) server, so an AI assistant can work with your agency's data directly — finding leads, reading a lead's history, updating a status, scheduling a follow-up. ``` https://mcp.formule.io ``` ## The one thing to understand **Every tool call runs as you.** The server does not hold a privileged key that reads whatever it likes. It resolves who you are, then queries the database as that person, under the same row-level security the app uses. A real estate agent's assistant sees that agent's leads. A manager's sees the agency's. There is no configuration that widens this, and no service-role fallback for a user-shaped request: no user, no call. **Note: Why this matters.** It means connecting an assistant does not create a new way to leak data. The blast radius of a connected client is exactly the blast radius of that person's own login. ## Who can connect | Client | Status | | --- | --- | | **Claude.ai** | Supported, via OAuth. | | **Claude Desktop** | Supported, via OAuth. | | **MCP Inspector** | Supported, for development. | | **ChatGPT** | Supported, via OAuth, as a developer-mode app at `https://mcp.formule.io/mcp`. What each ChatGPT plan allows is on [Connecting ChatGPT](https://docs.formule.io/developers/connect-chatgpt/). | | **Claude Code** | Not yet. It redirects to a loopback address on a changing port, and the authorization server matches redirect URIs exactly. | [Connecting Claude](https://docs.formule.io/developers/connect-claude/) and [Connecting ChatGPT](https://docs.formule.io/developers/connect-chatgpt/) walk through the setup. ## How identity works There are two ways in, and both end in the same place: a database query made as a real Formule user. [Really in the app](https://docs.formule.io/agents/really/) needs neither: it runs the same tools inside Formule with the signed-in person's own session, under the same rules. ### OAuth, for interactive clients Standard OAuth 2.1 with PKCE. Your client discovers the authorization server from the protected-resource metadata, sends you to Formule to approve the connection, and receives a token. - **Discovery** — `GET https://mcp.formule.io/.well-known/oauth-protected-resource` returns RFC 9728 metadata naming the authorization server. - **Consent** — you approve the connection on `app.formule.io`, signed in as yourself. - **Scope** — `email`. Read versus write is decided by your role and by tool annotations, not by scopes. There is no "read-only token"; there is a read-only *you*. - **Unauthenticated requests** get a `401` carrying a `WWW-Authenticate` header pointing at the metadata, so a well-behaved client can start the flow on its own. ### Platform key plus signed chat identity The Telegram assistant is a trusted server. It holds a platform key and, with each call, a signed identity for the chat it is serving. The server verifies the signature, resolves it to the linked Formule user, and proceeds as that user. This is how [the Telegram assistant](https://docs.formule.io/agents/assistant/) answers about your leads without you ever handing it a password. **Caution: Treat the linking code as a credential.** The one-time code that links your Telegram chat to your Formule account is what proves the chat is you. Do not forward it. It expires within minutes and works once. ## What the tools do The catalogue covers finding and reading leads, listings, matches and real estate agents; reporting your pipeline; and writing notes, statuses, follow-ups and nudges. Tools are annotated read-only where they are, so a client can tell which calls are safe to make without asking you first. `search` and `fetch` are there for ChatGPT: its company knowledge only includes apps with tools of exactly those names. `search` finds leads and catalogue listings, and `fetch` returns one whole record. Claude does not need them, and they see nothing the other tools do not. The full list, generated from the server source, is in [Tools reference](https://docs.formule.io/developers/tools/). ## Where it runs `mcp.formule.io` is a Cloudflare worker in front of the server. It is the connector's public identity and the address you should configure. The underlying function also answers on its own platform URL, but that address is not the contract. ## Limits worth knowing - **Scopes are not permissions.** Do not design around them. Design around roles. - **Claude Code is not supported yet** — see the table above. - **List results are capped** per call. Ask a narrower question rather than paging for everything. --- # Connecting Claude URL: https://docs.formule.io/developers/connect-claude/ > Add Formule to Claude.ai or Claude Desktop and start asking about your leads. You will need a Formule account. The connection runs as you, so whatever you can see in the app is what Claude will be able to see — no more. Using ChatGPT instead? See [Connecting ChatGPT](https://docs.formule.io/developers/connect-chatgpt/). **Claude.ai** 1. Open **Settings** → **Connectors** in Claude. 2. Choose to add a custom connector and give it the Formule server address: ``` https://mcp.formule.io ``` 3. Claude sends you to Formule to approve the connection. Sign in as yourself if you are not already. 4. Approve it. You are returned to Claude with the connector live. 5. Ask something that proves it works: > *Who am I in Formule?* You should get your own name, your role and your agency back. **Claude Desktop** 1. Open **Settings** → **Connectors**. 2. Add a custom connector pointing at: ``` https://mcp.formule.io ``` 3. Approve the connection in the browser window that opens. 4. Back in Claude, confirm with *"Who am I in Formule?"*. **MCP Inspector** For development: ```bash npx @modelcontextprotocol/inspector ``` Point it at `https://mcp.formule.io` and use the OAuth flow. The Inspector is the fastest way to see the raw tool list, the exact schemas, and what a call returns. **Caution: Claude Code is not supported yet.** Claude Code redirects to a loopback address on a port that changes each run, and the authorization server matches redirect URIs exactly. It will be added once that flow works end to end. Use Claude.ai or Claude Desktop for now. ## Things worth asking Once connected: > *What leads came in this week that nobody has called?* > > *Show me everything on the seafront penthouse enquiry and tell me what I promised.* > > *Which of my leads match the new two-bed in the centre?* > > *Set Adrian Keller to Appointment and remind me to call Friday morning.* > > *How is my pipeline doing compared with last month?* ## If it will not connect **The approval screen never appears.** Check you are signed into Formule in the same browser, and that popups are allowed. **You get 401s after approving.** The token expired or was issued to a client that is not permitted. Remove the connector and add it again. **Claude sees no tools.** Confirm the address is exactly `https://mcp.formule.io`. `https://mcp.formule.io/mcp` also works; no other path does. **A tool returns nothing where the app shows data.** That is usually correct behaviour, not a bug — the tool runs as you. As a real estate agent, you will not find another real estate agent's leads. ## Disconnecting Remove the connector in Claude. Formule has no page listing connected apps, so that is where you disconnect it. --- # Connecting ChatGPT URL: https://docs.formule.io/developers/connect-chatgpt/ > Add Formule to ChatGPT as a developer-mode app, then ask about your leads and listings. ChatGPT connects to the same [MCP server](https://docs.formule.io/developers/mcp/) as Claude. You will need a Formule account. The connection runs as you, so whatever you can see in the app is what ChatGPT will be able to see — no more. Give ChatGPT this address. It must end in `/mcp`: ``` https://mcp.formule.io/mcp ``` ## What your ChatGPT plan allows ChatGPT adds apps like this one through **developer mode**, which OpenAI is still rolling out: | ChatGPT plan | What works | | --- | --- | | **Business**, **Enterprise**, **Edu** | Everything, including changes such as adding a note (OpenAI still calls this a beta). On Business only admins and owners can add the app; on Enterprise and Edu an admin allows developer mode first. | | **Pro** | Reading only: finding leads, opening a lead, searching listings. | OpenAI's help article does not cover **Plus**; its developer guide lists developer mode for Plus accounts too, so check there. Developer-mode apps work only in ChatGPT on the web, not in ChatGPT's phone or desktop apps. **Caution: ChatGPT's menus move.** The steps below use the names in OpenAI's own guide at the time of writing. If a menu does not match what you see, OpenAI keeps the current path in [Developer mode and MCP apps in ChatGPT](https://help.openai.com/en/articles/12584461-developer-mode-and-mcp-apps-in-chatgpt). ## Adding Formule **Business** On ChatGPT Business only admins and owners can add an app, and each of them turns developer mode on for themselves. 1. In ChatGPT on the web, open **Workspace settings** → **Apps** → **Create**, and enable developer mode there if it is not on yet. 2. Name the app **Formule** and enter the server address: ``` https://mcp.formule.io/mcp ``` 3. Choose **OAuth** for authentication and press **Scan Tools**. 4. ChatGPT sends you to Formule. Sign in as yourself if you are not already, check the email address shown is yours, and press **Approve**. 5. When the scan has finished, press **Create**. The app is saved as a draft. 6. To give it to the rest of the workspace, open **Workspace settings** → **Apps** → **Drafts** and press **Publish**. Each colleague then connects with their own Formule sign-in, so everyone sees only their own data. **Enterprise or Edu** 1. A workspace admin grants developer mode, in **Workspace settings** → **Permissions & Roles** → **Connected Data**. 2. Turn it on for yourself in **Settings** → **Apps** → **Advanced settings**. 3. Open **Settings** → **Apps** → **Create**. Name the app **Formule**, enter `https://mcp.formule.io/mcp`, choose **OAuth**, and press **Scan Tools**. 4. ChatGPT sends you to Formule. Check the email address shown is yours and press **Approve**. 5. When the scan has finished, press **Create**. An admin can then publish it for the workspace from **Workspace settings** → **Apps** → **Drafts**, and choose which of its actions it may take. **Pro** 1. Turn developer mode on in your ChatGPT settings. 2. Create an app named **Formule** with the server address `https://mcp.formule.io/mcp` and **OAuth** authentication. 3. ChatGPT sends you to Formule. Check the email address shown is yours and press **Approve**. On Pro, ChatGPT only lets the app read. It can find leads and listings and open a record, but a request to change something will not go through. ## Using it In a new chat, press **+** in the message box and choose Formule — if **Developer mode** is listed there, choose that first — or mention Formule in your message. The choice applies to that message; you do not need to pick it again to talk about what it has already found, only when a follow-up needs fresh data. Ask something that proves it works: > *Who am I in Formule?* You should get your own name, your role and your agency back. Then try: > *What leads came in this week that nobody has called?* > > *Which of my leads match the new two-bed in the centre?* > > *Add a note to Adrian Keller: the viewing has moved to Saturday.* Before ChatGPT changes anything in Formule, it asks you to confirm and shows what it is about to send. Read it before you confirm. You can let ChatGPT remember your answer for that action for the rest of the chat. ### Company knowledge and deep research ChatGPT's company knowledge only includes apps with tools named `search` and `fetch`, and Formule has both: they search your leads and your listing catalogue, and open a whole record. Deep research can use the app too, for reading only. Neither sees anything the rest of the tools do not. **Note: When Formule adds a tool.** A published workspace app keeps a snapshot of the tools it had when it was published. When Formule adds or changes a tool, an admin refreshes the app in **Workspace settings** → **Apps** to pick it up. ## If it will not connect **ChatGPT shows no tools.** Check the address ends in `/mcp`, exactly `https://mcp.formule.io/mcp`. It is the most common mistake. **You cannot find developer mode.** On Business, only admins and owners have it. On Enterprise and Edu, an admin has to grant it to you first. **The approval screen never appears.** Check you are signed into Formule in the same browser, and that pop-ups are allowed. **It worked, then stopped.** ChatGPT's permission has lapsed. Reconnect Formule from ChatGPT's app settings and approve it again. **A tool returns nothing where the app shows data.** That is usually correct behaviour, not a bug — the tool runs as you. As a real estate agent, you will not find another real estate agent's leads. ## Disconnecting Remove the Formule app in ChatGPT's app settings. Formule has no page listing connected apps, so that is where you disconnect it. **Tip: Prefer to stay in Formule?.** [Really](https://docs.formule.io/agents/really/), Formule's own AI, does the same things inside the app, and asks before every change. --- # Tools reference URL: https://docs.formule.io/developers/tools/ > Every tool the Formule MCP server exposes, what it does, and what it takes. {/* GENERATED FILE — do not edit by hand. Written by docs-site/scripts/generate-tools-reference.mjs from supabase/functions/mcp/server.ts. Change the server, then re-run the script. */} The Formule MCP server exposes **30 tools**. Every one of them runs as *you*: the server resolves your identity first and then queries the database under row-level security, so a tool can only ever return what you could see by signing into the app yourself. A real estate agent asking `search_leads` gets their own leads; a manager asking the same question gets the agency's. **Note: Reading this page.** Tools marked read-only never change your data. The rest write, and a well-behaved client will ask you before calling them. ## Read-only tools These answer questions. They never modify anything. ### `whoami` Who this call acts for: the person, their agency (or agencies), their agent profile if any, whether you can write (can_write) and whether this chat is linked. Call it first. If user is null, explain the linking steps in scoping and do nothing else (on WhatsApp, scoping also says how someone new signs up with start_signup). Takes no parameters. ### `list_companies` The agencies this person belongs to (all agencies for a super admin), with how they belong (via) and which one is active. Use the slugs with select_company or company_slug. Takes no parameters. ### `search_leads` Find leads by free text (name, surname, property, email, phone), by what an agent wrote in the lead's notes, by status or by assignment. Returns the most recent first. Only leads this person may see in Formule. | Parameter | Type | What it does | | --- | --- | --- | | `query` | string | Text to match against name, surname, property, email and the lead's notes; a phone number is matched exactly. A lead matched on its notes carries matched_note, the part of the note that matched. | | `status` | string | Filter by crm_status. | | `unassigned_only` | boolean | — | | `limit` | integer | Max results (default 20, max 100). | ### `get_lead` Full details for one lead, including comments, its open property matches (from the agency's external listing catalogue, when connected) and open reminders. A lead with awaiting_your_acceptance: true was offered to this agent by a manager and is not accepted yet: its contact details come back masked and its notes are left out until they accept it in Formule. | Parameter | Type | What it does | | --- | --- | --- | | `lead_key` *(required)* | string | — | ### `list_stale_leads` Leads that still need attention (UNCLEAR / ATTEMPTED_NO_RESPONSE / NURTURE) with no comment in the last N days. The raw material for a follow-up digest. | Parameter | Type | What it does | | --- | --- | --- | | `days` | integer | Default 7. | | `limit` | integer | — | ### `list_matches` Saved property matches between this person's leads and the agency's external listing catalogue, best score first. Default: 'new' matches only; matches found on a person's request (find_matches_for_lead) are saved as 'shown'. A catalogue: "none" answer means no catalogue is connected: relay that, never 'no matches'. A matching: "not_available" answer means this person is not on the matching list: say so, then search the catalogue with search_listings instead. | Parameter | Type | What it does | | --- | --- | --- | | `status` | string | — | | `since` | string | ISO timestamp; only matches created after this. | | `limit` | integer | — | ### `search_listings` Search the agency's external listing catalogue (active listings, newest first). With a locality, listings in that locality itself come first and the rest of its wider region after them; in_locality says how many are in the locality itself, so say when the others are nearby rather than in it. Pass ref to look up one listing by its reference (the code at the end of its link). A catalogue: "none" answer means this agency has no catalogue connected: say so. | Parameter | Type | What it does | | --- | --- | --- | | `ref` | string | Listing reference, e.g. SAPT670357. The other filters are ignored when it is given. | | `locality` | string | Locality or region name (case-insensitive). | | `min_price` | number | Lowest asking price (or monthly rent). | | `max_price` | number | Highest asking price (or monthly rent). | | `min_bedrooms` | integer | Fewest bedrooms. | | `property_type` | string | e.g. Apartment, Penthouse, Villa | | `sale_or_rent` | string | For sale or for rent. | | `limit` | integer | Max results (default 20, max 100). | ### `list_agents` Active agents of the agency (names and contact details, as shown in the app). Takes no parameters. ### `my_stats` This person's numbers over the leads they may see: leads by status, new in the last 7 and 30 days, leads with no note yet, leads still open but quiet for 7+ days, last activity, open reminders. Admins see their agency-wide view. Takes no parameters. ### `find_leads_for_listing` Which of this person's leads would want a given property, e.g. "which clients fit a 2-bed in the centre?". Pass listing_key for one of the agency's own listings, a listing reference from the agency's external listing catalogue, or describe the property (locality, price, bedrooms, property_type, sale_or_rent) with whatever the person said. Reads every lead's stated preferences, the wishes typed on the lead, and what agents wrote in its notes; place names match whatever the case, accents, a known short form or a typo. Returns the best few with the reason each fits; a fit read from the notes carries matched_note, the note it came from. | Parameter | Type | What it does | | --- | --- | --- | | `listing_key` | string | One of the agency's own listings, as list_my_listings or get_listing returned it. | | `ref` | string | Listing reference in the agency's external catalogue. | | `locality` | string | Town or area, as the person wrote it (misspellings are fine). | | `price` | number | — | | `bedrooms` | integer | — | | `property_type` | string | e.g. Apartment, Penthouse, Villa | | `sale_or_rent` | string | — | | `limit` | integer | Default 10. | ### `list_due_followups` Open reminders due up to a point in time (default: end of today on the agency's clock) plus any overdue ones, soonest first. Your own reminders; admins also see their agency's. | Parameter | Type | What it does | | --- | --- | --- | | `until` | string | ISO 8601 timestamp; default the end of the current day in the agency's time zone. | | `include_future` | boolean | Also list reminders due after `until`. | | `limit` | integer | — | ### `get_lead_timeline` What the assistant remembers about one lead's WhatsApp conversation: last contact, counts, listings already shared, warmth, and the latest messages (text kept 30 days). Only for leads whose agent enabled WhatsApp reading in Formule. | Parameter | Type | What it does | | --- | --- | --- | | `lead_key` *(required)* | string | — | | `limit` | integer | Messages to return, default 20. | ### `list_nudges` What the assistant should tell this person now: follow-ups due, leads gone quiet, new property matches, next steps after a conversation. Each has a ready-to-send draft. Pure read: call acknowledge_nudges after showing them. | Parameter | Type | What it does | | --- | --- | --- | | `include_delivered` | boolean | Also return nudges already shown (default true). | | `limit` | integer | — | ### `search` Free-text search across this agency's leads and its external listing catalogue. Returns lightweight {id, title, url} hits; pass an id to `fetch` for the whole record. Scoped by Formule's own permissions, so it returns only what this person can already see. (ChatGPT deep research and company knowledge require a tool named exactly `search`.) | Parameter | Type | What it does | | --- | --- | --- | | `query` *(required)* | string | Free text, matched against lead name, surname, property and email, and against listing title, locality and region. | | `limit` | integer | Max results (default 10, max 50). | ### `fetch` Return one whole record as readable text, given an id from a `search` result. Ids look like `lead:` or `listing:`. (ChatGPT deep research and company knowledge require a tool named exactly `fetch`.) | Parameter | Type | What it does | | --- | --- | --- | | `id` *(required)* | string | An id exactly as returned by `search`. | ## Tools that change data These write. Expect your client to confirm before running one. ### `create_lead` Add a new lead (a client) to the agency, as the app's New lead form does: assigned to this person when they are an agent. Needs the first name and a phone number; pass the surname, email, what they came for (property) and a note only when the person said them, never invented. A national phone number gets the agency's calling code. If one of this person's leads already has that phone or email, nothing is added and that lead comes back with duplicate: true. | Parameter | Type | What it does | | --- | --- | --- | | `name` *(required)* | string | First name. | | `surname` | string | — | | `telephone` *(required)* | string | As the person gave it. | | `email` | string | — | | `property` | string | The listing or source they came from, e.g. "seafront penthouse" or "walk-in". | | `note` | string | Anything else the person said about them; saved as the lead's notes. | ### `create_leads` Add up to ${MAX_BULK_LEADS} leads at once from a list the person pasted, each exactly as create_lead adds one, after one approval. Every person needs a first name and a phone number from the list itself, never invented; leave out anyone without a phone and say so. The result gives each row: created, already_a_lead (same phone or email as one of this person's leads), or skipped with the reason. | Parameter | Type | What it does | | --- | --- | --- | | `leads` | array | First name. | ### `add_lead_note` Append a dated note to a lead's comments (the same log agents write in the CRM). | Parameter | Type | What it does | | --- | --- | --- | | `lead_key` *(required)* | string | — | | `note` *(required)* | string | — | ### `schedule_followup` Remind this person about a lead at a given time ('remind me to call Maria on Friday'). Reminders belong to the person asking; they can only be set in an agency they are a member of. | Parameter | Type | What it does | | --- | --- | --- | | `lead_key` *(required)* | string | — | | `due_at` *(required)* | string | ISO 8601 timestamp with the agency's UTC offset (whoami gives its time_zone and local_time), e.g. 2026-09-11T09:00:00+02:00. | | `note` | string | What to do, in the person's words. | ### `link_channel` Finish the one-time account link: the person got a code from Formule and sent it in this chat (Telegram: 6 characters, from Profile → Link your assistant; WhatsApp: 8 characters, in the message `LINK CODE` that Profile → Really on WhatsApp and by phone, or the page that finishes signing up on WhatsApp, writes for them). Pass the code; the chat identity comes from the assistant runtime. From then on this chat acts as that person. | Parameter | Type | What it does | | --- | --- | --- | | `code` *(required)* | string | — | | `chat_id` | string | The chat the code was sent from. Set by the assistant runtime; do not fill in by hand. | | `platform` | string | Default telegram. | ### `start_signup` For an estate agent who is new to Formule, messages you on WhatsApp and wants to start: emails them a link that creates their Formule account. Only in a WhatsApp chat that is not linked yet (whoami: user null); never on Telegram and never for a linked chat. | Parameter | Type | What it does | | --- | --- | --- | | `full_name` *(required)* | string | Their first and last name, as they gave it. | | `agency_name` | string | The agency they work for; leave it out when they work independently. | | `email` *(required)* | string | Their email address, exactly as they confirmed it. | | `language` | string | The language you are chatting in, as a code such as it or de. The email is written in it when Formule speaks it (en, de, fr, es, it, pl), else in English. | ### `select_company` Switch the active agency for a person who belongs to several (see whoami). Pass the agency's slug: map the agency name the person used to a slug yourself, never ask them for a slug. In a chat the choice sticks for later calls. | Parameter | Type | What it does | | --- | --- | --- | | `company_slug` *(required)* | string | — | ### `update_lead_status` Set a lead's crm_status. | Parameter | Type | What it does | | --- | --- | --- | | `lead_key` *(required)* | string | — | | `status` *(required)* | string | — | ### `set_match_status` Mark a property match as shown, sent (the listing was sent to the client) or dismissed. | Parameter | Type | What it does | | --- | --- | --- | | `match_id` *(required)* | string | — | | `status` *(required)* | string | — | ### `find_matches_for_lead` When the person asks for it: read this lead's notes, work out what the client wants (area, budget, bedrooms, type, buy or rent) and match that against the agency's external listing catalogue. Saves those wishes and the matches on the lead (as 'shown') and returns the best matches with the reasons. Every call is one AI read of the notes, so only call it when the person asks. A matching: "not_available" answer means this person is not on the property matching list: say so. A reason: "no_wishes" answer means the notes do not say what the client wants yet: say what is missing. | Parameter | Type | What it does | | --- | --- | --- | | `lead_key` *(required)* | string | — | ### `complete_followup` Mark a reminder as done (optionally logging what happened as a note on the lead). | Parameter | Type | What it does | | --- | --- | --- | | `followup_id` *(required)* | string | — | | `outcome_note` | string | If given, appended to the lead's comments. | ### `acknowledge_nudges` Mark nudges as delivered after showing them to the person (list_nudges is a pure read). Only pending nudges change. | Parameter | Type | What it does | | --- | --- | --- | | `nudge_ids` *(required)* | array | nudge_id values from list_nudges (max 100). | ### `dismiss_nudge` The person does not want this nudge (e.g. already handled it elsewhere). | Parameter | Type | What it does | | --- | --- | --- | | `nudge_id` *(required)* | string | — | ### `snooze_nudge` Bring this nudge back later (default 24 hours). | Parameter | Type | What it does | | --- | --- | --- | | `nudge_id` *(required)* | string | — | | `hours` | number | — | ### `send_whatsapp_message` Send ONE message to a lead from the agent's own WhatsApp number, only after the agent explicitly approved this exact text in this conversation. Logs it on the lead in the CRM, closes the nudge it answers, and sets the next reminder (default 3 days; 0 for none). Repeating a call with the same idempotency_key within 24 hours returns the first result and sends nothing. Never claim a message was sent unless sent is true. | Parameter | Type | What it does | | --- | --- | --- | | `lead_key` *(required)* | string | — | | `text` *(required)* | string | The exact text the agent approved. | | `idempotency_key` *(required)* | string | A value unique to this approval (e.g. the chat message id of the approval). Reuse it if you retry. | | `nudge_id` | string | The nudge this send answers, if any. | | `next_follow_up_days` | integer | Default 3. 0 = no reminder. | --- *This page is generated from the server source. If a tool here looks wrong, the source is the truth — see `supabase/functions/mcp/server.ts`.*