Property Manager Guide
Everything you can do in the Owner Portal
A working walkthrough of Return Grid for the people who run the portfolio — underwriting a deal, closing on it, leasing it, maintaining it, reporting on it, and eventually selling it.
Not everything in this guide will be switched on for you. Some features depend on your plan (Search Watch, portfolio dashboards, and custom domains need Team or Enterprise), and some depend on which integrations your organization has connected — invoicing, payments, e-signature, screening, ticketing and SMS are all optional and each can run in a manual mode instead. Where that matters, it's called out in the section.
Getting started
Signing in, finding your way around, and setting up the landing page you'll look at every morning.
Signing in
Sign-in is two steps: you enter your email, Return Grid works out which sign-in methods your organization offers, and then it shows you those options.
- Enter your email. Press Continue.
- Enter your password. A password is always available, on every plan. If your organization has Zoho SSO enabled, a Sign in with Zoho button appears above it — SSO is layered on top of passwords, it never replaces them.
If you've forgotten your password, use Forgot password on the second step. If your account is locked after too many failed attempts, wait 15 minutes or ask an admin to use Unlock account on your user record. If your email was never verified, the sign-in screen offers a Resend verification email button inline rather than leaving you stuck.
Only people on the Users list can sign in. That list is the allowlist for every sign-in method, including SSO. Adding someone to your Zoho account does not give them Return Grid access — an admin has to add them under Settings → Users first.
The main menu
Everything hangs off five dropdowns in the top navigation.
| Menu | What's under it |
|---|---|
| Properties | Analyzing (create a new analysis, view the list) · Owned · Sold |
| Tasks | Task list · Maintenance · Messages |
| Tenants | The tenant directory |
| Reports | Rent Roll · Compare properties · Saved comparisons · Dashboards · Map · Usage and Charges · Repair Duration & Aging · Tenant Directory |
| Settings | Users · Search Watch · Defaults · Contract deadlines · Customize Landing Page · Billing · Credentials · Tenant Portal Branding · Tenant Portal Providers · Custom Domain · Integration Errors · Communications · Rental Listings · Applications · Help & documentation · My Profile · Log out |
Your landing page
The landing page is a stack of widgets, each one answering a question you'd otherwise have to go looking for.
- Today's important dates
- Everything due in the next 3, 30, or 90 days across all four lifecycle phases
- Overdue rent
- Invoices past due, by tenant and property
- Maintenance needing triage
- Tenant requests nobody has picked up yet
- Applications awaiting review
- Submitted rental applications with no decision
- Offers awaiting response
- Offers received on properties you're selling
- Tasks due
- Your assigned to-dos and auto-generated capital-forecast tasks
- Financial snapshot
- Headline portfolio numbers
- Analyze pipeline by status
- How many deals sit at each stage
- Portfolio by lifecycle phase
- Analyze / Own / Sell / Sold mix
- Active dispositions
- Properties currently on the market
- Recent activity
- What your team has been doing
- Search Watch
- New listings the hourly scan found for you
Use Customize my view on the landing page to hide or reorder widgets for yourself. Admins can set the organization-wide default under Settings → Customize Landing Page. A personal layout always wins over the org default, and saving a new org default doesn't disturb anyone who has already personalized theirs.
The property lifecycle
Every property in Return Grid sits in exactly one of four phases. Phase determines what the record can do.
| Phase | What it means | What unlocks |
|---|---|---|
| Analyze | A deal you're underwriting. Pro-forma numbers only. | Calculator, comps, deal score, offers, diligence visits, purchase contract deadlines |
| Own | A building you actually own. | Rent Roll, leases, tenants, actual-vs-projected, CapEx reserve accruals, maintenance, Tenant Portal |
| Sell | A disposition in progress. | Sell Tracker checklist, offers received, 1031 deadlines, sale showings |
| Sold | A completed sale. Terminal. | Realized-return reporting. Figures lock at the sale date and stop feeding live KPIs. |
Moving between phases
- I bought it — Analyze to Own. Captures your actual close terms (see Closing the purchase).
- Move to Sell — Own to Sell. Opens a sell attempt with your default checklist.
- Complete sale — Sell to Sold. Locks the financials.
- Undo purchase and Cancel sale — reverse a transition you made by mistake.
- Re-underwrite — rerun the analysis on a property you already own, against today's numbers.
Already own the building? Use Add a property I already own from the + New analysis chooser, or from the empty state on the Owned list. It skips the purchase analysis entirely and asks only what you know off the top of your head — address, units, current rent, taxes, insurance, what you paid and when, and the loan as it was originated. Return Grid amortizes forward from the closing date to work out today's balance, value and equity. Everything stays editable on the calculator afterwards.
Analyzing a deal
The underwriting calculator, the metrics it produces, and the pipeline that tracks your deals.
Starting an analysis
From Properties → Analyzing → Create new analysis. Purchase price, current rent, rehab cost, property taxes and unit count are deal-specific and required every time. Everything else — closing costs, down payment, interest rate, loan term, vacancy, maintenance, CapEx reserve, management, other expenses, insurance per unit, comp radius and lookback, appreciation, rent growth and projection length — starts from your organization's saved defaults.
Property tabs
Not every tab is available in every phase. Rent Roll and Actual vs. projected only carry real data once a property is Owned; Sell Tracker only has an active checklist once you've moved the property to Sell.
The metrics
| Metric | What it tells you |
|---|---|
| Cap rate on cost | NOI against what you paid. The underwriting view. |
| Cap rate on current value | NOI against what it's worth today. The exit view. |
| Cash-on-cash | Annual cash flow against cash actually invested |
| DSCR | NOI against debt service — the number a lender asks for |
| IRR | Time-weighted return across the projection period |
| GRM | Price against gross rent, for quick screening |
| Breakeven occupancy | How empty it can get before it stops covering itself |
| Price/sqft, rent/sqft, profit per unit | Comparability across differently-sized buildings |
| Deal score | A weighted 0–100 score and letter grade |
Both cap rates are always shown. Neither replaces the other. Cap rate on cost tells you whether you bought well; cap rate on current value tells you what the market would pay you today.
The Deal Score formula
Under Settings → Defaults → Deal Score formula, admins control the weighting. Cap rate, cash-on-cash, DSCR and cash flow each get a weight (they must total 100%), plus a Low value that scores 0 and a High value that scores 100, scaling linearly in between. Raising a High value lets that metric keep earning credit past the old ceiling instead of capping out. Grade thresholds are the minimum score for each letter and must strictly decrease A through D; anything below D is an F. On an all-cash deal with no debt service, DSCR falls back to the cash-on-cash score.
The default weighting is Return Grid's own judgment call (cap rate 25% / CoC 35% / DSCR 20% / cash flow 20%), not an external published standard. Tune it to how your firm actually decides.
The pipeline
Every analysis carries a status: To Review Reviewing Offer submitted Offer accepted Offer lost Not Interested. Statuses drive the landing-page pipeline widgets, the Dashboard and Map default filters, and which deals count toward the average cap rate.
Under Settings → Defaults you control three separate status lists: Average cap rate statuses (which deals feed that one KPI — by default it excludes To Review and Not Interested so unvetted and passed-on deals don't skew it), Portfolio defaults (the pipeline KPI boxes and the starting filter on Dashboard and Map), and Properties list default view (which checkboxes are ticked when someone first opens the saved-analyses list). Anyone can change the filter for their own session; these only set the starting point.
Bulk editing and sharing
- Bulk edit — select several properties and update assumptions across all of them at once. Leave a field blank to leave that value untouched.
- Share with teammates — sends the link by email, text, or both, based on each person's own notification preference in Settings → Users.
- Public share link — a read-only copy anyone can open with no sign-in. They cannot edit or delete anything. A signed-out viewer sees a prompt to sign in and lands back on the same page afterwards.
Data feeds & comps
Where the numbers come from, how long they're cached, and how to force a refresh.
Return Grid pulls property taxes, rent comps, sale comps, and price & sale history from RentCast, plus listing imports from the major portals.
| Data | Cache |
|---|---|
| Property taxes | 14 days |
| Rent and sale comps | 5 days |
| Unit listings | 3 days |
- Pull Remote Data respects the cache — if the data is fresh, it reuses it and doesn't spend an API call.
- Sync data feeds forces a bypass and refetches everything.
When a refetch produces values that differ from what's in your form, Return Grid does not overwrite you. It opens Fresh values that differ from yours — a field-by-field list showing your current value next to the new one, with a Replace current value button per row and a Replace all remaining values shortcut. Blank fields are filled in automatically. Replacing a value only puts it into the form; you still have to Save changes.
Comp radius and lookback
Set organization-wide under Settings → Defaults, and overridable per property on the property edit page. Changing the default updates the starting point for new properties and for any existing property that hasn't set its own override.
Unit Info source of truth
Rent Roll is unconditionally the source of truth for Unit Info — there's no setting to turn this on or off. Any property that has real Rent Roll unit records shows its Unit Info tab as read-only display (with a link through to Rent Roll to edit), and those unit records feed underwriting math, comp lookups, and PDF/Excel exports directly. Properties with no Rent Roll units yet are unaffected.
Comp lookups, AI estimates and web imports are metered. Each has a daily allowance that resets at midnight UTC, and volume above your plan's included amount becomes an overage charge. Reports → Usage and Charges shows today's allowance at the top — that's the number that answers "why did this just stop working" — with the month-to-date and custom-range totals below it.
Search Watch
A recurring scan that finds new for-sale listings matching your buy box and drafts the analysis for you.
Under Settings → Search Watch, create a job with the criteria you actually buy on:
- Job name
- How you'll recognize it in the list
- Turn on this search watch job
- The on/off switch for this job
- Location
- City, zip codes (comma-separated), county, state — up to 15
- Price
- Min and max
- Unit count
- Min and max units
- Property types
- Single family, multi-family
- Check frequency
- How often this job runs, from every hour to once a week. Defaults to every 6 hours
- Email recipients
- Who gets the report, comma or newline separated
On each check, matching new listings are automatically saved as draft analyses and emailed to your recipients. Listings where a unit count isn't published are included anyway and flagged in the email, rather than silently skipped — the alternative loses you deals.
Checking more often costs more data. Each check spends one listing lookup per location per property type, so an hourly job over a wide area uses several times the allowance of the 6-hour default. The frequency picker shows the trade-off as you change it, and your organization's data budget still caps total spend regardless of what you choose here.
Auto-drafted analyses use your saved defaults for every assumption except the deal-specific ones. They land in the pipeline for someone to actually look at, they don't commit you to anything.
Search Watch activity is recorded against a system address built from your organization's email domain (search-watch@your-domain), which you set under Settings → Credentials → Organization. That domain does not restrict who can sign in — the Users list does that.
The Deal Inbox
A private email address for your account. Forward a listing to it and Return Grid reads the listing for you.
Search Watch goes out and finds deals on criteria you set. The Deal Inbox is the other direction: deals that come to you — an agent's MLS alert, a broker's blast, a partner forwarding something they spotted — land in one reviewable queue instead of in your email.
Getting an address
Open Deal Inbox from the main menu and go to the Addresses tab. + Create address mints one, and Copy puts it on your clipboard. Give each one a label you'll recognize — most accounts want one, but a separate address per market or per agent makes the queue easier to read.
Three things you can do to an address after it exists:
- Senders — who this address accepts mail from. Anyone, or an approved list. Mail from outside an approved list is held, not deleted — nothing is bounced back to the sender. Adding someone to the list releases their mail from then on, and Trust this sender on a held message in the Inbox tab also releases whatever of theirs is already waiting.
- Rotate — shuts the current address off and issues a replacement in one step. Use this if the address ends up somewhere public.
- Revoke — switches the address off for good.
Treat the address like a password. Anyone who has it can put deals in your inbox. That is the point — it is what lets an agent Cc it without needing a Return Grid login — but it is also why Rotate exists.
Pointing an MLS auto-notification at it
You don't have to change where your existing alerts go. In Paragon, open the auto-notification you already have on your saved search and add your inbound address as a Cc recipient. You keep getting your own alerts exactly as before, and Return Grid gets a copy it can read. The same trick works for a Zillow saved search, a broker's mailing list, or just forwarding a message by hand.
What we can read
Return Grid reads the listing sites below. The authoritative list for your account is on the Deal Inbox screen itself, under What you can forward — it is generated from what your installation can actually fetch, so it is never out of date the way a page like this one can be.
| Source | What to send |
|---|---|
| LoopNet | A link to the listing page. LoopNet is commercial only. |
| Paragon link from your agent | A collaboration link your agent sent you, on paragon.ice.com. Paste it, or forward the email it came in. |
| Paragon listing alert email | An automatic "New Listings" or "Price Change" alert, on paragonrels.com. Forward the whole email — each link is built for one property and one recipient, so there is nothing to browse to and nothing to copy out. |
| Realtor.com | A link to the listing page. |
| Redfin | A link to the listing page. |
| Zillow | A link to the listing page. |
The two Paragon rows are different products. Paragon brands both of them "collaboration," which is why they are easy to mix up, so go by the web address rather than the name: a link on paragon.ice.com is one your agent sent you by hand, and a link on paragonrels.com came out of an automatic alert. Forward either one — you do not have to work out which is which.
Tracking and redirect links are fine. Alert emails almost never contain the listing URL directly — they wrap it in a click-tracker — and Return Grid follows those through to the real listing before deciding whether it recognizes the site.
Send it even if the source isn't listed. Nothing is thrown away. An email we can't read still appears in the queue as a card, with the links it contained and the reason each one didn't work, and you can paste a listing link into the card to bring the numbers over by hand.
The queue
Mail is picked up on the hour, so a forwarded listing shows up within about an hour rather than instantly. Each one becomes a card on the Inbox tab showing what we could read from the email itself — address, price, beds, baths — along with who sent it and when.
From a card:
- Enrich & create fetches the full listing and opens the same review-and-apply screen a pasted URL would, then creates the analysis.
- Create from the email instead makes the analysis from what the email itself said, with no fetch. Faster and free, but you only get the fields the email happened to include.
- Dismiss clears it from the queue. Nothing is deleted.
If we couldn't read a listing, the card says which link failed and why, and offers whichever next step actually helps: Try again when the problem looked temporary, such as a site that timed out, and a paste box otherwise. A link that failed because it points somewhere we don't read will fail the same way on a second attempt, so no retry button is offered for one — pasting the listing is the way through.
A second email about a property already in the queue updates the existing card rather than adding another. If the price changed, that is called out, and the people listed under Notify on the Addresses tab get an email about it. Leave that list empty and it goes to the account owner.
Nothing is fetched, and nothing is created, until you press a button. Reading the email costs nothing and happens automatically. Fetching the listing behind it is a metered import, the same as pasting a URL, and it only ever happens for one listing at a time when you ask for it — there is no setting that turns it on for the whole queue.
Offers & contract deadlines
Getting a deal under contract, and the deadline clock that starts when you do.
Move a deal to Offer submitted, then to Offer accepted when the seller signs. Accepting an offer creates the property's contract deadlines automatically, from your organization's template.
The deadline template
Under Settings → Contract deadlines. Each row is a deadline with an offset in days from an anchor date:
- Accepted counts forward from the offer acceptance date.
- Closing counts from the target closing date — use a negative offset for "days before closing".
- Protects earnest marks a row where walking away before that date still gets your earnest money back. Return Grid uses the last such date to work out when your deposit becomes non-refundable.
Saving the template replaces the whole set at once. Editing it only affects future contracts — properties already under contract keep the deadlines they were given.
When a deal falls through
Moving a property back out of Offer accepted prompts the Contract fell through form: what happened, and whether your earnest money was returned. You can skip it — the status change is never blocked on the form — but it's worth filling in. The contract and its deadlines are kept as history rather than deleted, so next year you can look back at why a deal died.
Closing the purchase
The "I bought it" transition — one modal that turns a pro-forma into an operating asset.
Every field defaults to the pro-forma value when the modal opens, and the label shows what the pro-forma said, so you can see exactly what you're overriding. Confirm the required four and you're done; expand the sections if you want to capture full close terms in the same pass.
Required
- Actual close price
- What you actually paid
- Actual close date
- Real closings slip — this is editable even when pre-filled from the contract
- Owning entity
- Which LLC or entity holds it
- Assigned teammates
- At least one. They receive auto-generated tasks from future capital-forecast runs on this property.
Purchase details (optional)
Actual closing costs, actual rehab spend at close, and a Paid all cash switch that hides the financing block and treats the deal as unlevered.
Financing (optional)
Actual down payment, computed loan amount, actual interest rate (eighths of a point are fine — 6.375 works), loan term, separate amortization for balloon structures, balloon due date, loan product, points paid at close, prepayment penalty expiry and notes.
Ops handoff (optional)
Insurance carrier, annual premium, renewal date, HOA or condo dues, and the property-tax reassessment block.
Closing documents (optional)
Settlement statement, deed, title policy, note & mortgage — whatever you have in hand today.
Audit trail
Deed recording number, from the recorded deed at the county register of deeds.
| Loan product |
|---|
| Conventional 30-year fixed · DSCR (investor) · Portfolio / relationship · Commercial 5/25, 7/25 and 10/30 balloon · SBA 7(a) · Seller-financed · HELOC / cross-collateralized |
Capture the tax reassessment now. Most Wisconsin counties reassess to sale price on transfer. If you tick Expect property tax reassessment at close, Return Grid asks for the new assessed value (defaulting to your close price) and the new annual tax, and suggests a figure. Skipping this leaves year-one NOI overstated by whatever the old assessment understated.
Closing documents upload after the transition, not before. The phase change is what you came for and it isn't held hostage to a 12 MB scan. If an upload fails it tells you so, without claiming the purchase failed. Documents that arrive later go in the property's Purchase Closing Docs section.
The owned property record
What changes once a building is yours.
- Actual vs. projected — a new tab comparing what you underwrote against what the building is actually doing. Reported gross rent, reported operating expenses, trailing-twelve NOI, and monthly cash flow after debt service.
- Rent Roll — real units, leases and tenants (see below).
- CapEx reserve — monthly accruals post automatically on the 1st for any owned property with a CapEx Reserve % set.
- Tenant Portal — leases on this property can provision renter accounts.
- Maintenance — tenant requests route to this property.
- Documents — tagged, searchable document storage, with an AI classifier that suggests the tag.
Only Owned-phase properties carry a real reserve balance. The CapEx & RUL report deliberately excludes non-owned records for that reason — a pro-forma reserve on a deal you haven't bought isn't money.
Financing, refis & payoff
Keeping the debt picture honest over a long hold.
Record a refinance
Record refinance logs the event and updates the loan terms while preserving your original underwriting separately. At least one of new rate, new term, or new loan amount is required. You can also capture refinance date, lender name, cash-out amount, new amortization, new balloon date, the prepayment penalty on the new loan (recording "None" clears the old one), and refi closing costs — fees, points and appraisal, tracked for tax basis rather than added to your inputs.
Return Grid stitches the loans together into a single continuous amortization schedule, so remaining balance, equity and LTV stay correct across a refi rather than resetting.
Mark a loan paid off
Records that the current loan is paid in full. The amortization schedule and current-loan inputs are hidden, refinance history is preserved as loan history, and it can be undone. Enter the payoff date, and optionally the actual total interest paid from your final payoff statement — leave it blank and the paid-off summary keeps using Return Grid's simulated figure, clearly labelled as simulated. If a prepayment penalty was charged, record the amount actually charged.
Rent Roll, leases & tenants
Units, leases, the people on them, and the documents that bind them.
The lease drawer
Open a property, go to Rent Roll, and add or open a lease.
- Status
- Draft · Active · Notice given · Expired · Terminated early
- Dates
- Lease start and end, move-in and move-out
- Money
- Monthly rent, security deposit, pet deposit, rent due day, late fee, late fee grace period
- Rent history
- Mid-lease increases, kept as a dated history rather than overwriting the original rent
- Deposit
- Amount held, held since, holding account, and the Return deposit action
- Inspections
- Move-in and move-out condition records
- Tenants
- Primary, Co-tenant, Guarantor, Occupant (minor)
- Renters insurance
- Tracked only — Return Grid does not broker or sell insurance
Lease documents
Each document is typed — Signed lease, Addendum, Amendment, Notice, Deposit letter, House rules, Move-in report, W-9 — and each carries a Visible in Tenant Portal toggle. Nothing reaches the renter until you tick it.
Lease actions
- Save as draft / Activate lease
- Send for signature… and Continue — requires Zoho Sign connected. Once signed, the tenant's portal account is provisioned automatically.
- End lease — either Expire (ran its term) or Terminate early.
Lease templates
Under Settings → Documents → Templates, upload the PDF you already use as your lease. Tag it as a new lease or a renewal, optionally scope it to a jurisdiction (for example WI), and set one default per type — those defaults are what the lease and renewal send actions reach for.
Return Grid does not ask you to edit the PDF. You tell it where on the page each piece of information belongs, by drawing on the document itself.
Drawing the layout
Edit layout on any template row opens the page as you'll print it, and you drag a box wherever something should be filled in. Each box is one of three kinds:
- Field
- A value Return Grid already knows — tenant name, rent, lease dates, deposit. Pick which one from the panel on the right.
- Signature
- Where somebody signs. Tenant signature regions are handed to Zoho Sign; the landlord's is filled in by Return Grid before the lease is ever sent.
- Special condition
- Wording that changes lease to lease — a pet clause, a parking stall, a concession. You'll be asked for the text when you draft the lease.
Boxes move and resize after the fact, Prev and Next walk multi-page templates, and nothing is stored until Save layout. A template with no boxes will send as a blank form, so the drafting screen warns you before that can happen.
If you used merge fields before: older templates written with {{tenant_name}}-style placeholders in the PDF text are still accepted and still fill in. New templates don't need them — draw a Field box instead. The two approaches don't have to agree, and you can re-draw an old template's layout at any time without re-uploading it.
The landlord's signature is not sent out for signing. Return Grid applies it inside the Owner Portal at the moment you send, so the lease reaches the tenant already countersigned. If it can't work out who signs for your organization, it leaves the space blank rather than guessing.
The tenant directory
Tenants in the main nav lists everyone on a lease at any of your properties, with contact details and active-lease counts. Open a tenant to see their info, financial summary, every lease they are or were on, and all their lease documents — including anything executed through e-sign. Archive hides a former tenant from the default list without deleting their history; Unarchive brings them back.
Tenants are created from leases, not directly. Open a property, go to Rent Roll, add a lease, and attach people to it — they appear in the directory from there.
Portfolio rent roll
Reports → Rent Roll lists every unit across every Own- or Sell-phase property with its current lease and primary tenant. Sold properties are excluded. Reports → Tenant Directory is the same idea for people.
Security deposits
Holding a deposit, and the four-step wizard for giving it back correctly.
The deposit lives on the lease: amount held, the date you started holding it, and which account it sits in. When the lease ends, Return security deposit opens a guided wizard.
- Review. Confirm the deposit facts before you withhold anything. The statutory deadline is computed automatically from the property's state and shown here.
- Deductions. Add every withholding. Each row needs a category, a description of at least 20 characters, and a positive dollar amount. Attach receipt URLs where you have them.
- Preview letter. The return letter the tenant will receive, citing the state-specific statute and itemizing every deduction line.
- Payout method. Electronic payout by ACH through your payments provider, a paper check to the forwarding address, or other with notes. Then Submit & issue refund.
Start the wizard early. Missing the statutory deadline can convert the withheld amount into treble damages in most states. The deadline is on screen from step one specifically so it isn't a surprise.
Why the 20-character minimum? "Cleaning" is not a defensible itemization in a deposit dispute. The field forces enough detail to stand up.
Listings & syndication
Publishing vacancies to a public page and feeding them to the rental portals.
Under Settings → Rental Listings. Turn on Enable public listings page and your published listings become visible at returngrid.app/rent/your-org — or on your own domain if you've set one up. No login is required for applicants.
Creating a listing
- Headline
- What prospects see first
- Rent, available from
- Monthly rent and the date it's ready
- Application fee
- Pre-filled from your default, overridable per listing
- Contact email and phone
- Required before a listing can syndicate
- Pet policy, laundry, parking
- The three questions every prospect asks
- Photos
- Up to 12. Save the listing first to enable uploads.
- Published
- Visible to the public
- Share with Zillow, Trulia and HotPads
- Include this listing in the syndication feed
Syndication
Return Grid publishes a live XML feed. Give the feed URL to Zillow Rental Network once, and your published listings stay synchronized automatically as you edit, unpublish, or delete them — there's nothing to resubmit.
A listing needs a complete address, rent, contact method, and at least one photo before it appears in the feed. Incomplete listings still show on your own page but are held back from syndication.
Applications & screening
Reviewing what comes in off your listings, and running background and credit checks.
Settings → Applications lists every rental application submitted through your public listings, with the applicant, the listing, the fee, and the submission date. Open one for the full detail.
- Applicants
- Primary applicant and co-applicants
- Uploaded documents
- Pay stubs, ID, references — whatever the applicant attached
- Screening summary
- Progress and result summary from your screening provider
- Update application status
- With a denial reason and internal denial notes
- Mark fee paid
- Record the application fee when collected outside the portal
Denial reasons are structured: Credit, Income, Eviction history, Criminal history, Incomplete application, plus internal notes that the applicant never sees.
Screening
Connect Checkr Tenant or TransUnion SmartMove under Settings → Tenant Portal Providers → Applicant screening. Then use Start screening on an application and Open provider report to read the full result on the provider's site.
Return Grid never sees a Social Security number. Applicants enter it only on the provider's own hosted page. Return Grid stores a summary — score bands, flags, a report link and adverse-hit codes — and never the raw consumer report. That boundary is enforced in the data model, not just in policy.
Applications on a custom domain need a bot check. Return Grid provisions a Cloudflare Turnstile widget for each of your domains automatically once the domain is verified and its certificate is live. While a domain has no working widget, the application form on that domain is turned off — your listings still show, and applications on returngrid.app are unaffected. If automatic setup fails you can retry it, or supply keys from your own Cloudflare account as a fallback.
Setting up the Tenant Portal
Branding, the providers behind it, and serving it from your own domain.
Branding
Settings → Tenant Portal Branding. Included with every plan — no upgrade required.
- Portal URL
- tenant.returngrid.app/your-slug — lowercase letters, numbers and hyphens
- Portal display name
- What renters see as the name of the place they're signing into
- Welcome message
- Your copy on the dashboard
- Logo
- PNG or SVG, at least 200 × 60 px, up to 2 MB
- Accent color
- A preset or a custom hex. Return Grid checks it for WCAG AA contrast and warns you if it's unreadable.
- Contact information
- Contact name, email, phone, emergency phone, office hours
- Footer
- Legal or disclosure text
- Move-in / move-out inspections
- Let tenants complete a move-in condition checklist within 7 days of moving in
- Tenant two-factor authentication
- Require a second factor — authenticator app or text message
A live preview updates as you type. Open Tenant Portal shows you the real thing.
What you can't change, and why. Your logo, accent color, copy and contact details are yours. Typography, neutral color tokens, accessibility behavior, core controls and page layout stay Return Grid-controlled, so every renter gets a portal that works and reads clearly regardless of who their landlord is.
Changing your portal slug breaks existing invite links. If you change it, resend them.
Some jurisdictions require move-in and move-out inspections and will override your choice regardless of the switch.
Providers
Settings → Tenant Portal Providers, admin-only. Every one of these has a manual or native mode, so you can run the Tenant Portal without connecting anything.
| Capability | Options |
|---|---|
| Invoicing | Zoho Books, or Manual (invoices live in Return Grid) |
| Payments | Zoho Payments hosted checkout, or Manual instructions plus recorded receipts |
| Applicant screening | Checkr Tenant, TransUnion SmartMove |
| Maintenance tickets | Return Grid Native, or Zoho Desk |
| Lease e-signature | Zoho Sign |
| Rent-payment credit reporting | Esusu or RentReporters — scaffold only today |
| SMS | Twilio, ClearlyIP |
| Email sending | Return Grid's shared mail, or your own SMTP relay |
Manual payments
If you don't connect a payment provider, write your own instructions in Instructions shown to tenants — accepted methods, recipient details, and what reference to include. Then record what arrives under Payment receipts, choosing a method: Check, Zelle, Venmo, Cash App, Cash, or ACH recorded manually. Each receipt attaches to an open invoice with an amount, a date received, and a reference.
Never put bank passwords or card details in the tenant-facing instructions field. It renders verbatim on a page every one of your renters can read.
Manual invoicing
Under Invoices → New invoice, pick the tenant and lease, set an amount and a due date, and create it. The tenant sees it on their Rent & Invoices page with a running balance.
Credit reporting
Rent-payment credit reporting is a scaffold, not a live integration. Turning it on enables tenant opt-in and logs on-time payment events as pending rows. Nothing is sent to a bureau until a real Esusu or RentReporters integration is wired in. Don't promise renters credit building on the strength of this switch yet.
Zoho Desk
By default, maintenance requests tenants submit through the Tenant Portal are tracked in Return Grid Native — a built-in ticket list with no setup required. If your team already runs support through Zoho Desk, you can connect it instead so those requests open as tickets there. Connecting is two halves: a few minutes in Return Grid, then a few minutes in Zoho Desk.
Return Grid's side.
- Create a Zoho OAuth app. In the Zoho API Console, create a Server-based Application. Note its Client ID and Client Secret — Client Secret is shown beside the Client ID on that same app's page.
- Find your Desk organization ID. In Zoho Desk, open Setup → Developer Space → API. The organization ID shown there is a number, not your help-desk name — that number is what Return Grid needs, not the Client ID or Secret from the previous step.
- Open Settings → Tenant Portal Providers (admin-only) and click Connect Zoho Desk on the Maintenance tickets card. Enter the Client ID, Client Secret and Desk organization ID.
- Copy the redirect URI Return Grid generated and paste it into your Zoho app's Authorized Redirect URIs — Zoho refuses the connection if it doesn't match exactly.
- Click Continue to Zoho and authorize the app.
- Pick a department. After authorization, Return Grid reads your Desk account's department list and shows it in a dropdown — select the one tenant maintenance requests should open tickets in, then click Save department.
Once connected, the card shows two values you'll need on the Zoho Desk side:
- Zoho Desk webhook secret — shown once, immediately after you save the department. Zoho Desk's own webhook screen has no custom-header field, so this secret is appended to the webhook URL itself: https://returngrid.app/api/tenant-portal/providers/ticketing/zoho/webhook?secret=<this secret> is what you'll paste in as the "URL to Notify" value below. If you navigate away without copying it, use Regenerate webhook secret to get a new one — the old one stops working the moment you do.
- Zoho Desk webhook Source ID — a UUID Return Grid generates for you and always displays (it isn't sensitive, so unlike the secret it doesn't disappear after one view). Zoho Desk's webhook form requires a Source ID in this format; paste this one in as-is rather than making one up.
Zoho Desk's side.
In Zoho Desk, go to Setup → Developer Space → Webhooks → New Webhook and fill in:
| Field | What to enter |
|---|---|
| Name | Any label you'll recognize — "Return Grid" is fine. |
| URL to notify | The full webhook URL from the Return Grid side, including the ?secret= portion at the end. |
| Description | Optional. |
| Source ID | Paste the webhook Source ID Return Grid generated. Don't invent your own — Zoho requires UUID format and Return Grid's value is what it expects back. |
| Choose Event | Add a row per Ticket event you want to sync. "Add", "Add Comment" and "Add Attachment" are the useful ones for tenant maintenance requests. |
Each event row defaults to "All departments." If you want tenant requests scoped to a single department — Maintenance, say — set that dropdown on every row you add; leaving it on "All departments" means Zoho will fire the webhook for tickets from every department in your Desk account, not just the one Return Grid is watching.
Save the webhook. Zoho Desk runs a connectivity check against the callback URL at save time — this should now succeed; connect through Return Grid first so a valid secret exists before you save.
Only one department today. Return Grid's connect flow supports routing to a single Desk department per organization. Multi-department routing is tracked in issue #620 but not yet built.
Custom domain
Settings → Custom Domain. Requires Team or Enterprise. Serve the Tenant Portal from something like portal.yourcompany.com instead of the Return Grid subdomain.
- Add the domain. Enter a fully qualified hostname.
- Add the DNS records shown on the domain's own card, at your registrar — Cloudflare, Namecheap, GoDaddy, wherever the domain lives. Every value has a Copy button, and Copy all records takes the whole table at once. Propagation takes a few minutes.
- Check now. Once the records resolve, Return Grid issues a free SSL certificate automatically and provisions the bot-check widget.
Each domain shows a four-step progress line — Domain added, DNS verified, SSL issued, Live — so you can see exactly which stage is still outstanding. If DNS verification fails, that card explains what was expected versus what was found. Once a domain is live its DNS records collapse behind a one-click disclosure on its card; they are never deleted.
Your own mail relay
By default Tenant Portal email goes out through Return Grid's shared mail account. To send from your own domain instead, supply the outbound SMTP relay your organization already uses — your Google Workspace or Microsoft 365 relay, typically. Enter host, port, connection security (STARTTLS on 587 is the usual answer), from address, username and password, and use Send test email before you rely on it.
Communications & broadcasts
Reaching all your tenants at once, and knowing whether it landed.
Settings → Communications. Configure your SMS provider (Twilio or ClearlyIP), set your organization time zone, then send announcements.
- Subject and message
- What you're telling them
- Audience
- All active tenants · Selected properties · Selected leases · Selected bedroom counts
- Delivery channels
- Email · SMS · Push · In-app
- Send timing
- Send now, or schedule for a specific time
- Emergency broadcast
- Overrides channel preferences and the 24-hour per-property limit. Requires an attestation.
Broadcast delivery history shows every broadcast sent or scheduled, its audience, channels, and per-channel delivery results.
SMS opt-outs are always honored, including on emergency broadcasts. Text messages also respect an 8 AM–9 PM local window based on your organization time zone, unless a tenant's device reports a different zone. Emergency broadcast overrides channel preferences and the daily frequency cap — it does not override a legal opt-out.
Maintenance & messages
Triaging what tenants report, and answering what they ask.
Maintenance
Tasks → Maintenance is a board of tenant requests by status:
Open a request to set its Priority (Low, Medium, High, Urgent), link it to a Return Grid task with Linked task ID, and reply. Every reply has a switch: Internal note, hidden from tenant. Use it for vendor coordination and anything you don't want quoted back at you; leave it off when you're actually answering the renter.
"Maintenance needing triage" on your landing page is the count of requests nobody has moved out of New. It's the one maintenance number worth looking at every morning.
Messages
Tasks → Messages holds general questions from tenants that aren't tied to a maintenance request. Same reply mechanics.
Repairs, CapEx & reserves
Tracking work, classifying it correctly for tax, and funding it from a reserve.
Categories
| Category | Treatment |
|---|---|
| Repair | An operating expense. Hits NOI in the period. |
| Capital improvement | Draws against the CapEx reserve. Posted as a spend automatically when the item is marked done. |
| Diligence | Pre-purchase, logged from a diligence visit. |
The BAR test. Does this Better, Adapt, or Restore the property beyond its original condition? If yes, it's likely a capital improvement rather than a repair. The classification affects both your reserve and your tax treatment.
The operating expenses field on the calculator is recurring-only. A one-time repair belongs in the repairs tracker, not baked into an annual expense assumption where it will misstate every future year.
A repair item
- Status
- Not started · In progress · Blocked · Done · Forecasted
- Target timeframe
- Month 1 · 1–6 months · 6–12 months · 2–3 years · 4–5 years · 5–10 years · 10+ years
- Estimated cost
- A low and a high, plus ✨ Estimate with AI and Use as estimate
- Actual cost
- What it really came to
- Assign to
- One of three: a vendor by name and contact, an internal maintenance user picked from your own team, or unassigned. Choosing one clears the other, so a repair is never on a vendor and a staff member at the same time. The internal list is the users you have tagged as maintenance users in Settings, with anyone whose service types match this repair listed first.
- Dates
- Identified · Due / replacement · Started · Completed
- Photos / receipts
- Two strips: Found for the problem as you found it, Completed for the finished work. Older photos taken before this split all read as Found.
The repairs list itself is a table on a wide screen and a stack of cards on a phone, with a column showing where each item came from — a visit, a tenant ticket, the capital forecast, or logged directly — and who it is currently on. + Schedule a repair at the top of the tab opens a blank repair.
Forecasted items are projections from the capital forecast rather than live work. Promote to Repairs Tracker turns one into a real repair order when the time comes.
The CapEx reserve
Set a CapEx Reserve % on an owned property and monthly accruals post automatically on the 1st, dated as the 1st of the following month (an August 1 entry covers July). Spends post automatically when a capital improvement is marked done. Manual adjustments are also possible.
Reports → CapEx & RUL Report shows open items and the reserve balance for one property or the whole owned portfolio, and the reserve ledger lists every accrual, spend and adjustment with filters by property, type and date range, plus Export CSV.
Duration & aging
Per property, the Duration & Aging tab in the repairs modal; portfolio-wide, Reports → Repair Duration & Aging. Both use the same timing logic, so the two views never disagree.
- Work duration — date started to date completed.
- Turnaround — date identified to date completed. This is the number your tenants feel.
- Open items — not started, in progress, or blocked, aged as of today.
Missing start dates are counted as unknown, never as zero days. Items without a recorded start date are excluded from every median and average rather than dragging them down. When you mark an item done with no start date, Return Grid asks for the real one — a soft prompt, not a required field, because auto-stamping today would record when you closed the row, not when work began. Forecasted items are excluded from aging entirely; a projected future replacement isn't work anyone is waiting on.
Date filters apply to completed work only. Open items are always aged as of today, so narrowing the window never makes your backlog look artificially smaller.
Visits & inspections
One form, four purposes, and it changes shape depending on which you pick.
| Type | When | Form |
|---|---|---|
| Diligence (pre-purchase) | Analyze phase | Full condition survey. Edits shared property details. |
| Prospective Tenant | Finding renters | Short prospect form |
| Sale showing | Selling | Short prospect form |
| Routine inspection | Any owned property | Full condition survey, read-only on shared details |
The available types depend on the property's phase — a "Sale showing" filter on an owned property just empties the list, so Return Grid only offers types that can actually exist there.
The condition survey
Diligence and routine inspections walk a sticky section navigation: Exterior & structural · Basement / crawl space · Mechanical systems · Interior (per unit) · Garage & parking · Common areas & grounds · Safety & compliance · Tenant & occupancy observations · Neighborhood / curb impression · Repairs & cost log · Overall assessment.
Shared property details — roof type, siding, window type, driveway — are editable on a diligence visit because you're establishing what the building is. They're read-only on a routine inspection, which records the property's current state rather than redefining it.
Anything you log under + Add repair item in the cost log becomes a real repair item on the property, marked as created from a visit.
Save draft as you walk; Mark complete when you're done. Sold properties won't accept new visits, but everything already logged stays.
Tasks
Manual to-dos and the ones Return Grid creates for you.
Tasks → Task List. Filter by status (All open & in progress, Done, Cancelled, All), assignee, and property. Create with + New Task — title, due date, property (or "Not tied to a property"), and one or more assignees.
Capital-forecast runs generate tasks automatically and assign them to the teammates attached to that property, which is why Assigned teammates is required when you record a purchase.
Tasks are shared, not copied. One status and one completion, shared by every assignee — nobody ends up with their own private copy that stays open after the work is done.
Reports & dashboards
Where to look when someone asks how the portfolio is doing.
| Report | What it answers |
|---|---|
| Portfolio overview | Where every property sits in the lifecycle, one headline number per phase, and everything coming due across all four |
| Own dashboard | Occupancy, payments received vs. invoiced, trailing-12 NOI, monthly cash flow, average days to fill a vacancy, turns completed, open repair & CapEx items, and everything coming due on owned property |
| Sell dashboard | Properties in Sell, average days on market, projected net proceeds, offers received in 30 days, active dispositions longest-on-market first, and all offers received portfolio-wide |
| Sold dashboard | Sales closed this year, total realized gain, average hold-period return, average hold period, and open 1031 replacement deadlines |
| Lease expirations | Every active or notice-given lease ending in the next 90 days |
| CapEx & RUL | Open capital items and reserve balance, per property or portfolio-wide |
| Repair Duration & Aging | How long repairs take and how old the backlog is, worst property first |
| Rent Roll | Every unit with its current lease and primary tenant |
| Tenant Directory | All non-archived tenants with contact info and active-lease counts |
| Compare properties | Side-by-side underwriting across deals, saveable as a named comparison |
| Map | Every non-sold property with an address, color-coded by pipeline status |
| Usage and Charges | Comp lookup, AI estimate, web import and document OCR volume, overage charges, and storage |
Most tables export to CSV, and property analyses export to PDF and Excel.
Closing an accounting period
Under Settings → Money → Accounting Periods, each calendar month is either open or closed — there's no separate "locked" state to think about. Closing a period is a signal to the rest of your team that the month's books are done: Close period asks why you're closing it (an audit note like "month-end review complete"), and that reason is required, not optional. Need to fix something afterward? Reopen period is available on any closed period and asks the same kind of question — why it's being reopened — before putting it back to open. Every close and reopen, with its reason, who did it and when, shows right on the period's row in the Activity column, so the audit trail is visible at a glance instead of buried in a log only an admin can query.
Selling a property
The Sell Tracker, offers, and 1031 deadlines.
Move to Sell opens a sell attempt and stamps it with your organization's default checklist. The Sell Tracker tab shows progress through the steps, your list price, offers received, and 1031 details.
The checklist
Edit the org-wide template under Edit default checklist. Editing it only affects future sell attempts — properties already in Sell keep the checklist they were given.
Offers
+ Add offer captures the offer amount, buyer name, offer date, financing type, expiration date, and contingencies or notes. Accepting an offer moves the property to Under contract. Reports → Offers received rolls every offer across every open sell attempt into one list, filterable by Pending, Accepted, Rejected & withdrawn, or All.
1031 exchanges
Flag the sale as a 1031 and record your notes. The 45-day identification and 180-day closing dates are tracked with your other sell deadlines and flagged in red, because those two dates are unforgiving.
Completing the sale
Complete sale records the list price and the actual sale price and moves the property to Sold. Cancel sale reverses a sell attempt that didn't happen; View sale history shows previous attempts on the same building.
After the sale
Realized results, and what stops counting.
Sold is terminal. Figures lock at the sale date and never feed the live portfolio KPIs, the dashboard, the map, or the cap-rate averages again — a building you sold two years ago shouldn't be moving this quarter's occupancy number.
The Sold Properties Report gives purchase-to-sale financials for every completed sale, with total sale price, total gain, and per-property annualized return and cash-on-cash at exit.
Read those two columns carefully. "Annualized return" is a CAGR-style approximation from purchase price to sale price over the hold period, not a true multi-period IRR. "CoC at exit" divides total gain by total cash invested — purchase price plus closing costs plus rehab spend — not just the down payment. They're useful for ranking your exits against each other; they aren't the numbers to hand an LP without explanation.
Users, roles & org settings
Who gets in, what they can change, and your own profile.
Users
Settings → Users. This list is the sign-in allowlist for every login method your organization offers. Add someone with first name, last name, email, and optionally a mobile number, then set their Share notices preference — Email, SMS, or Email + SMS. SMS options stay unavailable until a mobile number is saved. Tick Admin to give them administrative rights.
Per-user actions: edit their details, Send password reset link, Unlock account after failed sign-in attempts, and disable an account without deleting it.
What admin unlocks
- Editing organization defaults (non-admins can read them, but the save controls are replaced with a notice)
- Credentials and SSO configuration
- Tenant Portal Providers and Custom Domain
- Integration Errors
- The organization-wide landing page layout
Billing and subscription changes are owner-only, a step above admin.
Zoho SSO (Enterprise)
Under Settings → Credentials. Register a Self Client app in the Zoho API Console with scope AaaServer.profile.Read and the redirect URI shown on the page, then paste the Client ID and Client Secret. Users will always be able to sign in with their Return Grid password as well — SSO adds a route, it doesn't remove one.
Secrets are encrypted at rest and never shown again in full. Once saved, you see only a masked hint. Leave a secret field blank to keep its current value unchanged.
Your profile
Settings → My Profile. Change your display name, change your email (a confirmation link is sent to the new address, and you can cancel a pending change), set your notification preferences, and change your password with your current one.
Plans, billing & usage
What each plan includes, and the two different pages that answer money questions.
| Plan | Price | Includes |
|---|---|---|
| Starter | $49/mo | 1–3 seats, a monthly analysis allowance, the full Tenant Portal |
| Team | $249/mo | Up to 10 seats, unlimited analyses, Search Watch, portfolio dashboard, custom domains |
| Enterprise | Custom | Unlimited seats, Zoho SSO, guided onboarding |
Every plan starts with a 14-day free trial. Tenant Portal branding is included on all three — no upgrade required.
Managing the subscription
Settings → Billing, owner-only. Change plan (applies immediately and is prorated), cancel, or reactivate. Checkout runs in a Zoho-hosted iframe.
Return Grid never sees your card. Card details go straight to the payment processor through the hosted checkout — the application has no access to them at any point. The same is true of rent: Return Grid routes invoice data but never receives or holds tenant funds.
Usage vs. billing
Two different pages, and people look in the wrong one constantly:
- Settings → Billing — your subscription plan and its status.
- Reports → Usage and Charges — what you've consumed and been charged for on top of it.
Usage and Charges opens with today's allowance at the top, because "why did this just stop working" is the question people actually arrive with, and daily allowances reset at midnight UTC — a month-to-date total can't answer it. Below that: a summary for the billing cycle or any custom date range, overage charges split into pending (accrued, not yet invoiced) and billed (already submitted, should match your invoice), and a searchable usage log filterable by source — comp lookup, AI estimate, web import, document OCR.
Document OCR page scanning (property documents, vendor bills, insurance certificates and licences) is metered separately, by plan: 200 pages/month on Starter, 500 on Team, 1,000 on Enterprise, at $0.005/page after that. Unlike the other three services this allowance is monthly, not daily — Google bills the underlying scanning service on a monthly cycle, and a scan burst on move-in day or a new portfolio import shouldn't trip a daily cap — so it doesn't appear in the today's-allowance section above, only in the range summary and overage charges below it.
When something breaks
Diagnosing it yourself before you ask anyone.
Integration Errors
Settings → Integration Errors, admin-only. Recent failures from Zoho Books, Zoho Payments and Zoho Desk, filterable by provider and date range (7, 30 or 90 days). Each row shows the operation, error class, HTTP status, attempt number, and whether it will retry automatically. Open one for the full request and response.
This is where "why did my invoice not create" gets answered without a support ticket.
Common causes
| Symptom | Look at |
|---|---|
| A teammate can't sign in | Are they on Settings → Users? Is their account disabled or locked? Has their email been verified? |
| Comps or AI estimates stopped working mid-day | Today's allowance on Reports → Usage and Charges. It resets at midnight UTC. |
| Data looks stale | The cache. Use Sync data feeds to force a refresh rather than Pull Remote Data. |
| A listing isn't in the Zillow feed | Complete address, rent, contact method, and at least one photo are all required. |
| Applications fail on your custom domain | The bot-check widget. Check its provisioning state on Settings → Custom Domain and retry. |
| Invoices aren't appearing for tenants | Settings → Integration Errors, filtered to Zoho Books. |
| Tenant portal emails aren't arriving | If you've configured your own SMTP relay, use Send test email. Otherwise check the tenant's notification preferences. |
| A tenant can't see a document you uploaded | The Visible in Tenant Portal toggle on that document. |
Accessibility
Return Grid is built to WCAG 2.1 Level AA. The Accessibility Conformance Report (VPAT) documents where it conforms and where it doesn't. If you set a custom accent color for the Tenant Portal, the branding page checks it for contrast and warns you when it fails.
Other documentation
All Return Grid documentation · Tenant Guide — worth sending to renters at move-in, and worth reading yourself before you switch the Tenant Portal on.