Overview
SEO & AI add-ons · trial
to
Last 30 days
Marketing spend
$0
Last 30 days
Paid conversions
0
Cost per conversion
Google Ads only
Site sessions
0
GA4, all channels
Floor 1needs you today
Needs attention

What to look at today

Checking the latest sync…
Leads over time

Last 30 days
Floor 2how the period went
Where things stand

The short version

Reading the latest sync…
Written automatically from the same numbers on the rest of this page, for whatever property and date range is selected above. It describes what moved; it doesn’t recommend what to do about it.
Floor 3the numbers
Portfolio

How every property compares

Rank by
#PropertySpendConv.CPAConv. rateSessionsvs. portfolio
Click any row to jump the whole dashboard to that property. Conversions and CPA are Google Ads only — Meta “results” are not the same event and are never blended in.
Floor 4charts and trends
Paid media

Spend & conversions

$0
SpendConversions (Google)
Site analytics

Sessions by source

0
Organic SEO

Free search traffic

impressions avg. rank
AI Visibility

Cited by AI search

How often each assistant names a community when asked where to live in its market.
Local · Google Business

Map & profile activity

calls direction requests
Trends · period over period

This period vs. the previous period

About the data

Every number on this dashboard is live — pulled from Google Ads, Meta, and GA4 and refreshed automatically. One thing to keep in mind: Google Ads reports with a short lag, so the most recent day or two can read slightly low until they finalize — site analytics (GA4) is same-day.

🔍
Organic & Local add-on · Organic Search

The traffic you are not paying for, and how to get more of it

Search Console feeds us every query a renter actually typed to find you, with rankings and clicks per community. A weekly crawl checks titles, schema, page speed and broken links, then turns what it finds into a ranked “do this first” list you can hand straight to a web team.

Traffic · last 28 days

Clicks and impressions, day by day

Where organic visits land

Top pages

Every search

The full keyword list

Search features on the page

What Google puts above the blue links

Being built next · seven more views land here as their data pipelines come online
  • Proof of work — every shipped change scored against an 8-week verdict window, reverts shown rather than hidden.
  • Keyword gaps & content plan — the pages competitors rank with that this site doesn’t have.
  • Two pages fighting each other — needs query and page joined in the weekly fetch; one fetcher change away.
  • Technical SEO health — Core Web Vitals, broken links, schema; needs a site crawler.
  • Page types missing across the portfolio — readable from the nightly floorplan scan with a small extension.
  • Organic sessions & landing pages — GA4; waiting on a per-page dimension in the sync job.
  • Share of organic voice — page-one share vs the comp set, derivable from the rank scan’s competitor capture.
🔒
Upgraded reporting
Connect Google Search Console to see your live organic performance
ORGANIC & LOCAL
🤖
Pricing & Market Intel add-on · AI Search Visibility (GEO)

Whether ChatGPT names you when a renter asks where to live

Each month we run real prospect questions through ChatGPT, Gemini, Google AI Overviews, AI Mode and Bing Copilot, and record whether your community is named, cited, and priced correctly. When a competitor gets cited instead, we trace it back to the gap that caused it and tell you the fix.

This is what the add-on reports. It is greyed out because the add-on is not switched on for this property — you can read the page, but nothing on it is interactive, and any card marked Example is an illustration rather than a measurement. Switch the add-on on for a community and this same page goes live for it.
Citation rate
of AI answers name you
AI platforms tracked
5
ChatGPT, Gemini, Google AI Overviews, Google AI Mode, Bing Copilot
Prompts monitored
real renter questions
Share of voice
38%
▲ leads the set
How the tracked prompts are chosen

Fifteen questions a real renter would actually ask an assistant

Written the way people talk
“Where should I live if I work at Sky Harbor?” — not “apartments in Phoenix.” Keyword-style searches trigger an AI answer about 15% of the time; conversational questions like these trigger one about 92% of the time. Tracking the wrong kind would make the whole page read as empty.
Built around this community’s real angles
Each prompt targets something this property can genuinely win — the commute it serves, the pet policy, the neighborhood trade-offs, the price bracket. They’re fixed at setup and then left alone, because changing a question resets its history.
Scored as a frequency, not a rank
AI answers reshuffle their sources constantly — roughly 70% change between observations while saying the same thing. So we report “cited in 3 of the last 4 scans,” never a week-over-week rank that would swing for reasons unrelated to the work.
Citation rate by platform

Where you show up

Google AI Overviews41%
ChatGPT44%
Google AI Mode33%
Gemini28%
Competitor share of voice

Who AI recommends in your market

You38%
Competitor A22%
Competitor B18%
Everyone else22%
Tracked prompts

Real questions renters ask AI

PromptYou cited?Cited instead
best luxury apartments in [city]✓ Yes
apartments with covered parking [city]✓ Yes
pet friendly apartments near downtown✗ NoCompetitor A
new apartments [neighborhood] 2026✗ NoCompetitor B
apartments with best amenities [city]✓ Yes
🔒
Upgraded reporting
Add AI Search Visibility tracking to see where renters find you in AI answers
PRICING & MARKET INTEL
📢
Included with ads · Paid Media

Every dollar of Google and Meta spend, in one place

Spend, clicks, conversions and cost per lead are pulled straight from the Google Ads and Meta APIs every 30 minutes — no exports, no screenshots, no waiting on a monthly deck. Campaigns are broken out per community, so you can see which ones are earning their budget and which are quietly draining it.

Total spend
$0
Last 30 days
Google conv.
0
Meta results
0
Campaign status
0 active
0 paused
Monthly ad budget

This property$0/mo ad spend

$0
Impression share
Waiting on the next Google Ads sync.
Devices
Waiting on the next Google Ads sync.
Google Ads

All campaigns

$0
Spend
0
Conversions
$0
CPA
0%
Conv. rate
Meta Ads

All campaigns

$0
Spend
0
Results
$0
CPC
0%
CTR
Google Ads

Brand vs. non-brand

Campaign typeSpend% of spendConv.% of conv.CPAConv. rate
Campaigns are grouped by keywords in their names — Brand, Competitor, Non-brand search, Performance Max, Display & remarketing. Renaming a campaign in Google Ads will move it between groups here.
Google Ads

Conversion actions by campaign

Conversion type
CampaignAccountConversionsCost / conv.
Campaign detail

Every campaign in range

Platform
CampaignPlatformSpendImpressionsClicksConv.CPACTRCPCStatus
Google and Meta stay on separate tabs because they don’t count the same things — Google’s conversions and Meta’s results are different events and are never added together anywhere on this dashboard.
📞
Organic & Local add-on · Speed to Lead

What actually happens after a renter picks up the phone

Call tracking on your paid numbers records every call, who asked for a live person, and whether that transfer actually connected. We also check the rent quoted on the call against what the website said that morning — so a stale price gets caught the same day rather than at the end of the month.

This is what the add-on reports. Everything below is example data until call recording is switched on in CallRail — the one switch this needs. Nothing is required from the leasing platform or the AI vendor; it all reads off the tracking numbers in the ads.
Answered by the AI agent
Asked for a person
Asked, didn’t reach one
Quotes matched the site
When the handoff drops

Darker means more callers asked for a person and never reached one in that hour.

Where the handoff drops most

What callers were quoted

Quoted rent vs. the website, same morning

Each row is one recorded paid call where a price was quoted, checked against what the community website said that morning. A caller quoted the wrong rent hangs up believing it.
Cost per first-time caller

By campaign · repeat and junk calls filtered out

First-time callers only — a renter calling back three times counts once, and spam calls don’t count at all. This is the honest cost of making the phone ring with somebody new.
What this page can and can’t see

Everything here reads from call tracking on the paid numbers — nothing from the AI agent

The AI agent answers every call, and its own analytics belong to the leasing platform — we don’t get access to them, so nothing on this page comes from there. What we can see is the caller’s side of every call that came through a paid tracking number: whether they asked for a person, whether that transfer connected, and what rent they were told against what the website said that morning. The only switch this needs is call recording in CallRail. And to be clear — none of this is a knock on the AI agent. It handles the volume. This is the handoff it was never meant to own.
How this works — no auto-dialer, no test calls, no scripts

The number a renter dials is what tells us where they came from — that is the whole mechanism. Each source gets its own number, and every one rings the leasing office’s real phone in under a second. Their actual number never changes and the team answers exactly as they do today.

Google Adscall asset + paid visitors
Google Business Profileprofile phone field
ILS listingsApartments.com · Zillow · Rent
Website · organicswapped by tag manager
CALL TRACKING
LOGS & FORWARDS
The leasing office
(317) 555-0100
Their real line, unchanged. Nobody logs into anything.

Call metadata is always stored — who called, when, from which ad. Turning on call recording is the one extra switch, and it is what makes the quote-accuracy check possible; the standard “this call may be recorded” disclosure plays automatically where consent laws require it.

Organic & Local add-on · Reputation Management

Every review site AI reads, checked every day

Google, ApartmentRatings, Yelp and Niche are scanned daily for new reviews, rating movement, and anything still sitting unanswered. Recurring themes are pulled out of the review text so you can see what residents keep raising. Monitoring only — nothing is posted or replied to on your behalf.

WHAT THIS PAGE DOES · SCANNED DAILY ACROSS EVERY PLATFORM

The problem: reviews live on four sites and AI assistants read all of them, but the team only watches Google — so a 2.9 on ApartmentRatings quietly drags down every AI recommendation while the portfolio believes it’s a 4.6 operation. Monitoring only: no review is ever drafted, written, or posted from Pulse. Responses stay with the leasing team, exactly as they work today.

1Daily scan of Google, ApartmentRatings, Yelp, and Niche for every community.
2Any new review at 3★ or below is flagged the same day it lands.
3Reviews are clustered into themes — what residents keep bringing up, and which way it’s moving.
4The weekly rollup shows new reviews, the unanswered count, and the platform gaps per community.
The four numbers
Rating by platform

Where AI actually reads from

Google is already handled by the leasing team in the browser. The platforms underneath it are the ones nobody is watching — and AI assistants weight them all when deciding which community to name.
The gap that costs AI citations

What the team checks vs. what AI also reads

BEST PLATFORM
vs
WORST PLATFORM
What residents keep bringing up

Recurring themes across every review

Theme & a sample reviewMentions by platformSentimentTrend
Turns scattered reviews into a short list of operational issues, with the platform and review behind each one so it's never just a number. This is the part a regional can hand straight to a property team. Quotes here are illustrative until the review-text scan is built — same honest labeling as the ratings above.
Portfolio · reputation by community

Every community, every platform, ranked by what needs attention

PropertyGoogleApartmentRatingsYelpNicheUnansweredGap
“Gap” is the spread between the highest and lowest platform rating for that community. A wide gap means the portfolio’s internal view of a property (usually the Google number) is more flattering than what a renter comparing sites actually sees.
Scope boundary

Monitoring and reporting only — no review writing in Pulse

Reviews are never drafted, written, or posted from this dashboard. Responses stay entirely with the leasing and property teams, who already handle them directly on each platform. Pulse’s job here is narrower and more useful: make sure nothing gets missed, show the pattern across the portfolio, and surface the platforms that are quietly dragging the average down.
🔒
Upgraded reporting
Connect Google Business Profile and review monitoring to track reputation across every platform AI reads
ORGANIC & LOCAL
🗺
Pricing & Market Intel add-on · ILS & Listing Syndication

Three listing sites, three different prices, and nobody checking daily

The same morning scan that reads your website also reads your Apartments.com, Zillow and Rent.com listings, then compares them line by line. A wrong price, a missing special or a stale availability count is flagged the day it appears, copy-paste ready for whoever manages the listing. We never edit a listing ourselves.

This is what the add-on reports. Everything below is example data illustrating the page. It runs off the same morning scan that already powers Floorplans & Pricing.
Listings tracked
Showing wrong info
Blocked today
Matching the site
What a renter finds

The offer that should be showing

Read from the community website

Live on own site
CURRENT SPECIAL
Send these on

Each line is written so whoever manages that listing can act on it without asking a follow-up question. Wrong prices rank above stale listings, because a wrong price actively turns a renter away while a stale one only fails to attract them.
📈
Included with ads · Site Analytics

What renters actually do once they reach the website

GA4 reports sessions, users, engagement and key events for each community, split by paid, organic, direct and AI referral. Landing pages are ranked so you can see which ones turn a visit into a tour request — and which ones quietly lose people.

Users
0
Sessions
0
Engagement rate
0%
Key events (leads)
0
Channel performance

Sessions, engagement & leads by channel

ChannelSessionsKey events
Top landing pages

Where visits start

PageSessionsKey events
Key events breakdown

What counted as a key event

EventCountShare
The new column

AI-referred sessions

0
Real sessions from ChatGPT, Perplexity, Gemini & Copilot links, combined. The per-assistant split and conversion-rate comparison aren't wired into the live pipeline yet, so they're not shown as fabricated numbers.
GA4

Sessions by channel

PaidOrganicAI referralDirect / other
GA4

Key events (leads) & conversion rate

Key eventsConv. rate %
Coming Sessions by device and new-vs-returning visitors — not wired into the live GA4 pipeline yet; appears here with real numbers once it is.
🏷
Pricing & Market Intel add-on · Live Floorplan Pricing & Specials

Track every floorplan’s price & special — and push it live to your ads

Every morning we open each community’s own floorplans page the way a renter’s browser would, wait for live pricing to load, and read the real “starting at” price and current special for every unit. That lowest price can then sync straight into your Google Ads headlines automatically, so the ad always matches the website.

Lowest available Today’s scan
$1,335
Cove studio · 415 sq ft
Floorplans tracked
11
studio – 3 bed
Units available now
53
across all 11 plans
Price changes · 7 days
baseline set today
Live pricing feed Today’s scan

Floorplans & current starting prices

FloorplanTypeSq ftStarting atAvailability7-day change
CoveStudio415$1,335Available
Glow1 bd / 1 ba538$1,595Available
Retreat1 bd / 1 ba678$1,635Available
Vivid1 bd / 1 ba746$1,760Available
Noble1 bd / 1 ba780$1,810Available
Serene1 bd / 1 ba823$1,890Available
Eden1 bd / 1 ba927$2,085Available
Luminous2 bd / 2 ba1,080$2,305Available
Haven2 bd / 2 ba1,262$2,415Available
Horizon2 bd / 2 ba1,298$2,429Available
Radiance3 bd / 2 ba1,353$3,384Available
Current special Live from the community site · scanned today

The offer running right now

12 Weeks Free
Move in by July 31
Then
10 Weeks Free
Move in by Aug 31
*Must sign a 14+ month lease*
Auto-syndication

Where the price goes

Google Ads · headline pinned #2Setup
Featuring “Studio from $1,335” — set it with the control above. Auto-push to the live ad connects with your Google Ads sync.
Google Business · auto-post on dropQueued
Activates once Google Business Profile access is granted. Weekly post when a real price drop happens.
Scanned daily; published only when the lowest “starting at” actually changes — so ads and listings stay accurate without spam.
🔒
Pricing & Market Intel add-on
Turn on live floorplan pricing to auto-sync starting prices to your ads & listings
PRICING & MARKET INTEL
Google Ads · pinned headline control Today’s scan

What’s featured in your ads right now

This is the “starting at” headline pinned at position #2. Click any plan below to feature it instead — headlines must stay under 30 characters.
Currently live
Studio from $1,335
●  LIVE · PINNED #2 18/30 chars
Featuring the lowest studio price (Cove). This is the default — your portfolio-low price.
How the weekly Google Business post works

From scan to published post — you are step 4

1Monday, automatic
The scanner reads the website
The same morning scan that already collects prices, floorplans and the specials banner.
2Monday, automatic
It writes the post
Picks this week’s angle from the four-week loop and writes it from what it just read. Never from memory.
3Monday, automatic
You get one email
Every community’s draft in a single message, with what each was built from.
4Your step
You approve or edit
In the Action Queue. Change a word, approve as-is, or reject it. Nothing moves without this.
5After approval
It goes on the profile
Copied across today. Publishes automatically once Google grants API access.
Changes are staged here for now. Once your Google Ads sync is connected, clicking a plan will update the live pinned headline automatically — and revert to the portfolio-low price if the featured plan sells out.
Portfolio · price comparison Reading scans…

Lowest advertised price by bedroom, every community

Each cell is the cheapest “starting at” price that community advertises for that bedroom type, with the gap to the portfolio median for the same bedroom type underneath. Cooler cells sit below the median, warmer cells above — neither is good or bad on its own; square footage, submarket and vintage all move a price legitimately. Click a column heading to sort.
Below median At median Above median
Reading today’s scans…
🎯
Pricing & Market Intel add-on · Competitor Analysis

What a renter sees when they shop you against the competition

You name the five communities you actually compete with; from there it runs itself. The daily scan reads their floorplan pricing, square footage and homepage concession exactly the way it reads yours, then puts them side by side — on advertised rent, and again on net effective once every concession is valued in dollars.

This is what the add-on reports. It is greyed out because the add-on is not switched on for this property — you can read the page, but nothing on it is interactive, and any card marked Example is an illustration rather than a measurement. Switch the add-on on for a community and this same page goes live for it.
Price rank 1 bedroom
Net effective gap
Comps with a special
Your price per sq ft
Market position

Advertised price vs. what a renter actually pays

The top rail is the number on the website. The bottom rail is that same number after the concession is spread across a 12‑month lease. A community that looks mid‑pack on the first rail can sit at the top of the second one.
Comp set · side by side

Every competitor, every bedroom type

Lowest advertised “starting at” price by bedroom type, read from each competitor’s own floorplans page.
PropertyDist.BuiltUnits Studio1 Bed2 Bed3 Bed Current specialVerified
Concessions board

What each community is advertising right now

The offer as written on the homepage, with the monthly value it works out to on a 12‑month lease.
Price per square foot

Rent normalised for size

A higher rent for a bigger unit is not a premium. This is the comparison that controls for that.
Amenity matrix

What they advertise that you don’t — and the reverse

Read from each community’s published amenity list. Wording varies a lot between websites — “resort-style saltwater pool” and “swimming pool” are the same row here.
What moved

Price and concession changes, dated

Each morning’s scan is compared with the one before it, so a change appears the day it goes live. Revenue management reprices constantly — one move is noise, a run of them in the same direction is not.
🏠
Pricing & Market Intel add-on · Availability & Demand

How many homes each community is advertising, and which way that is moving

The morning scan counts every home each community currently has listed as available, and stores it. Compared day over day, that count becomes a demand signal — a number climbing week after week usually shows up in pricing before it shows up in a report.

This page is live. Every number is read daily off each community’s own website by the pricing scan — homes advertised, direction of travel, and which communities are running a special. Nothing here is an illustration.
Homes advertised available
Communities scanned
Median per community
Running a special
Portfolio · advertised availability Reading scans…

Every community, with what marketing is spending against it

More homes advertised than the first scan Fewer homes advertised No change
Reading today’s scans…
Click any row to jump the whole dashboard to that community. Spend and conversions are for the date range selected at the top of the page; availability is always today’s scan, because a home is either advertised right now or it isn’t.
Where availability is climbing

More homes to fill, no more money behind them

Reading today’s scans…
Communities advertising more homes than they were at the first scan, shown next to whether paid spend moved in the same period. Presented as a pairing, not a verdict — availability rises for reasons marketing can’t see, including lease expirations stacking and homes coming back from renovation.
Portfolio trend

Homes advertised, day by day

Reading today’s scans…
Trend

Homes advertised, day by day

Reading today’s scan…
By bedroom

Where the availability sits

Reading today’s scan…
Floorplan detail

Homes advertised by floorplan

Reading today’s scan…
Single community detail
Pick a community from the menu at the top of the page to see its day-by-day trend, its availability split by bedroom, and the floorplan-level detail behind it.
What’s included

Three ways to run Pulse

The reporting dashboard comes with your ads management and stays yours for as long as you’re a client. The two add-ons beyond it are optional, priced per property, and independent of each other — take either one, bundle both, or take neither. The coloured badge next to a page in the left menu tells you which package that page belongs to.

Included with ads
Reporting & Dashboard

Where your money went, and whether it worked.

“Is the spend doing anything?”
  • Portfolio overview — every community ranked side by side
  • Google Ads and Meta in one view, straight from the platforms
  • Website traffic split by paid, organic, direct and AI referral
  • Trends and period-over-period comparisons
  • A “What’s happening / the numbers / our next move” readout at the top of every page, written from the live data
  • One alerts feed across every automation — plain sentences, sorted by urgency, each one linked to the exact card it came from
  • An email the moment a data feed stops reporting
  • Plain-English summary of what actually moved
In the left menu: Overview · Paid Media · Site Analytics · Alerts — the pages with no badge. Period-over-period trends live at the bottom of Overview.

Every ads client, from day one. No upgrade needed, ever.

Add-on
Pricing & Market Intelligence

What you’re charging, what they’re charging, and what AI says about both.

“Are we priced right against the market?”
  • Live floorplan pricing read off every community website
  • “What moved” — every reprice, concession change and availability swing, dated, with the before and after
  • Homes advertised available, trended daily
  • Your real competitors’ websites read daily — price and concession changes dated the morning they happen
  • The comp set side by side by bedroom type, each offer valued in dollars per month on a 12-month lease
  • Google Ads pinned headline control — feature any floorplan’s live price in the ad with one click
  • Advertised rent and net-effective rank — two different answers
  • Whether AI assistants quote your rent correctly, and their source
  • Listing sites scanned daily against your own website — a wrong price or missing special flagged the same day, copy-paste ready for the listing manager
In the left menu: Floorplans, Pricing & Specials · ILS & Listing Syndication · Competitor Analysis · Availability & Demand · AI Visibility — the pages badged in orange.

Regionals, revenue teams, and anyone who has lost a tour to “the place down the road is cheaper.”

Add-on
Organic & Local

Where renters find you without you paying for the click.

“Are we findable when we’re not bidding?”
  • Organic search — every query a renter actually typed, with a ranked “do this first” list
  • AI visibility — whether ChatGPT and Google’s AI answers name you, and a categorized action plan when they don’t
  • One Google Business post per community per week, drafted from that morning’s scan — you approve or edit every word before it goes out
  • Reputation across Google, ApartmentRatings, Yelp and Niche — the sites AI reads — with review themes traced to the platform and review behind them. Monitoring only
  • Speed to Lead for the AI-answered era: every call gets picked up, so we measure the handoff — who asked for a person, whether the transfer connected, and whether the rent quoted matched the website that morning. All from call tracking on the paid numbers; nothing needed from the AI vendor
  • Recommendations you can mark done, tracked in Impact Tracking
  • Technical site health with a downloadable fix list
In the left menu: Organic SEO · Speed to Lead · Reputation Management · Reports — the pages badged in indigo.

The marketing director tired of only being able to talk about paid.

The two add-ons answer different questions for different people — pricing is a regional and revenue-team tool, organic is a marketing-director tool. Most communities want one of them, some want both, and the bundle costs less than the two separately. Nothing is a prerequisite for anything else.

How we compare

Built for apartment marketing — and it never stops running

General marketing and SEO software is built for everyone. It reports, and then it stops — it knows nothing about your rents, your availability, your concessions or your ad accounts. Pulse is built for multifamily, it connects those things to each other, and it refreshes on a schedule rather than when someone remembers to pull a report.

  Generic marketing & SEO tools Jamesday Pulse How often it runs
Google Ads & Meta spend in one view Direct API, both platforms 48× a dayevery 30 minutes
Website analytics, per community Generic Split by paid, organic, direct and AI referral 48× a day
A feed stops reporting and somebody is told Email the moment it breaks, and again when it recovers 48× a daychecked, not just sent
Live floorplan pricing across the portfolio Every community, every plan 1× a day30 min after your reprice
Price movement history per floorplan 7-day change, with the date it moved 1× a day
Homes advertised available, and which way that is trending Portfolio and per community 1× a day
Move-in specials read off the site and alerted Same-day email with the before-and-after wording 1× a day
Every community ranked side by side Sortable on spend, conversions, cost per conversion Liveon every page load
Checks that each community is still reporting through each source Spend without conversions, silent analytics, missed scans Liveon every page load
Plain-English summary of what actually moved Written automatically for the property and dates you pick Liveon every page load
Pushes your live price back into Google Ads The ad headline follows the website automatically Built — one switchon when you want it on
Technical SEO health check Plus a downloadable fix list Organic add-on
AI-search visibility — and whether AI quotes your rent correctlyLimited 4 assistants, checked against your real price Pricing add-on
Your five real competitors, tracked the same way you are Their prices, their concessions, and where you sit in the set Pricing add-onyou name the comp set
Google Business Profile activityLimited Calls, direction requests, posts Organic add-on
New Google reviews caught so somebody can reply Rating, review count and how many are still unanswered, per community Organic add-onchecked daily once on
Reputation across the review sites AI actually readsGoogle only Google, ApartmentRatings, Yelp and Niche in one view, with recurring themes Organic add-onmonitoring only — no posting
Calls answered, missed, and called back — costed against ad spend Answer rate by community, source and hour; missed paid calls priced at that community’s CPA Organic add-onneeds call tracking connected
Listing sites checked against the community’s own website Price, special and availability parity on Apartments.com, Zillow and Rent.com Pricing add-onsame-day mismatch alert
Built for apartment communities
Frequencies describe what runs on your account today. Rows marked as an add-on are available separately and have their own page in the left menu.
High priority
Watch
Waiting on you
Cleared this week
Needs attention

High priority
Costing money right now — being worked the day they appear
Watch
Drift worth knowing about, not yet worth an interruption
Waiting on you
The only rows on this page that need a decision from you
Cleared this week
What stopped being a problem
Everything else is reporting normally
Connection status and last run for every source feeding this dashboard. A source that has never been connected shows as pending rather than as a problem — that is expected, not broken.
SourceStatusDetail
Tracking health

Is every number on this dashboard still arriving?

Checking…
The card above this one checks whether each source is connected. This one checks whether each community is actually reporting through it — a source can be perfectly healthy while one property quietly stops sending conversions. Every check runs in the browser against the data already loaded, so it always reflects the range selected at the top of the page. Findings are stated as what was observed; confirming the cause takes a look at the account itself.
Reports

Take the numbers out of the dashboard

The selected property and date range, exported as a branded client report or as raw rows. Same figures as the screen — nothing is recalculated on the way out.

Deliver

One-click client report

Exports the currently selected property + date range as a branded PDF or CSV — Paid, Organic, AI Visibility, Google Business and GA4, each in its own section. Same numbers as the dashboard, always.

Scheduled

Auto-delivery

Not built yet — no reports are actually being sent on a schedule right now. This will show real, active deliveries (recipient, cadence) once auto-delivery is wired up.

How we prove it worked

Every change, and whether it did anything

Read this first. This is the record of what we changed and what happened afterwards — wins and misses in the same list, never summarised away. It is here so you can hold the work to account on numbers rather than on activity reports.

Every change is recorded with the keywords it was meant to move, the numbers on the day it went live, and a verdict date eight weeks out. Wins and misses both, in the same list.

Recommendations addressed

What’s been marked done, across every property

Live

Checked off from Organic SEO’s “Do this first” and the AI visibility action plan. Uncheck here to put something back on the list.

Loading…
Change ledger

What we shipped, newest first

Updated every Monday
47 shipped
31 working
9 no movement
4 reverted
3 measuring
Hit rate 66% · +4,180 clicks/mo · $3,340/mo
Baseline frozen Jul 6 — target keywords were declared before the change shipped.
Target keywordBeforeNowClicks
pet friendly apartments24+2
dog friendly apartments31+1
apartments with dog park19+3
Three weeks in. Indexed and appearing for 3 of 12 terms — exactly what week three should look like. No conclusion is drawn until week 8.
Baseline frozen Jun 22 — target keywords were declared before the change shipped.
Target keywordBeforeNowClicks
rich result eligibility0 of 3232 of 32
AI citation rate, portfolio14%23%
One template change, every site. Measured on rich-result eligibility and AI citation rate rather than rankings, because schema does not move positions directly.
Jun 8
Pet page · Ridgeline ParkNew page · 12 target keywords
Working
+112 clicks/mo
Baseline frozen Jun 8 — target keywords were declared before the change shipped.
Target keywordBeforeNowClicks
pet friendly apartments phoenix7+41
dog friendly apartments phoenix9+22
apartments with dog park4+18
pet rent phoenix3111+9
no weight limit apartments6+7
cat friendly apartments
9 of 12 terms now rank. The three that never moved are listed too — a report that only shows wins stops being worth reading.
Control group: +38% at the 10 properties with the page, +3% at the 22 without it. The 35-point difference is the change.
Baseline frozen Jun 1 — target keywords were declared before the change shipped.
Target keywordBeforeNowClicks
2 bedroom apartments55
floor plans citizen33+2
2 br apartments1413
Ranked #5 before, ranks #5 now. Click-through moved 2.1% to 2.2%. Reopened with the failure attached, so the next attempt starts from “the title was not the problem”.
Baseline frozen May 24 — target keywords were declared before the change shipped.
Target keywordBeforeNowClicks
studio apartments indianapolis5+62
1 bedroom apartments indianapolis196+58
2 bedroom apartments indianapolis228+44
3 bedroom apartments indianapolis12+22
One page per plan type instead of one page for all 14. The largest single gain of any change so far.
Control group: +41% at North Fifty, +4% across the properties still on a single floorplan page.
Baseline frozen May 18 — target keywords were declared before the change shipped.
Target keywordBeforeNowClicks
versa apartments14−38
apartments milwaukee1119−12
Flagged at day 12 rather than waiting out the eight weeks — a drop this size is not noise. Reverted the same week and rankings recovered by Jun 9.
Baseline frozen May 11 — target keywords were declared before the change shipped.
Target keywordBeforeNowClicks
apartments downtown kansas city8+38
living in the crossroads3+29
apartments near streetcar6+18
best neighborhood kansas city
11 of 17 terms rank. Also lifted AI citation rate for this property from 9% to 26%, because “is X a good neighborhood” is a question assistants get asked constantly.
Baseline frozen Apr 27 — target keywords were declared before the change shipped.
Target keywordBeforeNowClicks
image search impressions1,2401,310+18
Worth doing for accessibility and it is now done. It did not move rankings, and the report says so rather than counting it as a win.
Baseline frozen Apr 12 — target keywords were declared before the change shipped.
Target keywordBeforeNowClicks
oxlley apartments11+19
apartments kansas city88+12
Positions did not move at all — the gain is entirely click-through. Rewriting the description changed how many people who already saw the listing chose to click it.
Baseline frozen Apr 4 — target keywords were declared before the change shipped.
Target keywordBeforeNowClicks
2 bedroom apartments phoenix146+34
apartments with balcony phoenix14+15
large apartments phoenix11+9
Added the six terms every top-5 competitor page used and the page had none of. Word count went 410 to 1,180.
Nothing in this view.
Click any row to open its frozen baseline, the before-and-after on every target keyword, and the control-group read. Showing 10 of 47.
Does it add up

Organic clicks per month, against what would have happened anyway

With the changes Control group trend Attributable gain

The lower line is what the properties that haven’t had these changes actually did over the same months. The shaded gap between the two is the part we can claim — not the whole number.

0 2,000 4,000 6,000 Jan Feb Mar Apr May Jun Jul 5,495 1,315
+4,180clicks/mo attributable — the gap, not the growth
Each dot marks a month something shipped. The control line drifting up 6% over the period is the market; if our line had drifted with it, there would be nothing here to report.
High priority
Watch
Waiting on you
Cleared this week
Internal · waiting on you

Google Business posts to approve

Edit the text and it saves against the draft, keeping the original for reference. A post cannot be edited after it goes out. Once Google grants API access, approving will publish directly instead of copying across by hand.
Internal · not visible to the client

480 findings. Three things to do.

Refreshes Monday

These are not 480 problems. They are 12 patterns repeated across 32 near-identical sites — six of the twelve are one change to the Jonah template that lands everywhere at once. The queue groups by fix, never by property, and releases a fixed number a week so the backlog can never bury you.

480raw findings32 properties × ~15
12distinct fixesdeduped — same template
6Jonah ticketseach fixes all 32
+
5per week for youcopy pre-written
High priority

Send these first

Real revenue or competitive impact, sitting unsent — nothing here expires, but these go out before anything else
Waiting on you

The only rows here where only you can finish it

Copy already written — paste it, then mark it
Ridgeline ParkAustin, TX
Copper SocialDenver, CO
The MeridianCharlotte, NC
North FiftyNashville, TN
Harbor ViewTampa, FL
Right now a title tag cannot be changed without a Jonah ticket. Across 32 sites that is roughly 40 small edits a month, forever. This one ticket turns all of them into something you do yourself in fifteen seconds.
Ticket, ready to sendCopy
TICKET T1 — Expose per-page SEO fields in the CMS

Scope: shared Ridgeline community site template (32 properties)
Priority: build first

PROBLEM
There is no way to edit a page's title tag, meta description, or an image's
alt text from the CMS. Every one of those changes currently has to come to
Jonah as a ticket.

WHAT WE NEED
On every page-edit screen, an SEO panel with:
  - Title tag        text, 60 char soft counter
  - Meta description textarea, 155 char soft counter
  - Canonical URL    text, optional (blank = self-referencing)
  - H1 override      text, optional
  - noindex toggle   checkbox, default off

On the image upload control anywhere it appears:
  - Alt text         text, required-with-warning (not blocking)

ACCEPTANCE CRITERIA
  - Editing the title tag and saving changes the <title> element, no deploy.
  - Leaving any field blank produces exactly today's output. Must be
    non-breaking for all 32 existing sites.
  - Alt text set in the CMS renders as the alt attribute on the <img>.
  - Character counters are advisory; they never block saving.

QUESTION
Is there an existing per-page metadata store we can extend, or does this
need a new table?
Next Sunday’s crawl checks this and closes it automatically.
None of the 32 sites emit structured data. Every competitor does. It is the markup Google and the AI assistants read to confirm what a page is — without it an assistant cites Zumper over the property’s own site.
Ticket, ready to sendCopy
TICKET T2 — ApartmentComplex JSON-LD schema

Scope: shared Ridgeline community site template (32 properties)

PROBLEM
No Ridgeline site emits structured data. Every competitor site we track does.

WHAT WE NEED
A <script type="application/ld+json"> block in <head> on every property
homepage, populated from data the CMS already holds:

{
  "@context": "https://schema.org",
  "@type": "ApartmentComplex",
  "name": "{{property.name}}",
  "url": "{{site.url}}",
  "telephone": "{{property.phone}}",
  "address": { "@type": "PostalAddress",
    "streetAddress": "{{property.street}}",
    "addressLocality": "{{property.city}}",
    "addressRegion": "{{property.state}}",
    "postalCode": "{{property.zip}}", "addressCountry": "US" },
  "geo": { "@type": "GeoCoordinates",
    "latitude": "{{property.lat}}", "longitude": "{{property.lng}}" },
  "numberOfAccommodationUnits": "{{property.totalUnits}}",
  "petsAllowed": "{{property.petsAllowed}}",
  "priceRange": "${{property.minRent}} - ${{property.maxRent}}",
  "amenityFeature": [ { "@type": "LocationFeatureSpecification",
    "name": "{{amenity.name}}", "value": true } ]
}

NOTES
  - Loop amenityFeature over the existing amenity list.
  - If a CMS field is empty, OMIT the key. Do not emit null or "".
  - No hard-coded property data in the template.

ACCEPTANCE CRITERIA
  - Every property homepage passes Google's Rich Results Test, zero errors.
  - Changing the phone number in the CMS changes it in the JSON-LD.
Next Sunday’s crawl checks this and closes it automatically.
Apartments.com holds position 1 for pet searches in most of these markets. We cannot outrank it, but we can be represented correctly on it. Fourteen listings have the pet section empty.
Email, ready to sendCopy
Hi — quick one for the team.

Fourteen Ridgeline listings on Apartments.com have the pet policy section
blank. Apartments.com ranks #1 for pet-related apartment searches in most
of these markets, so a renter filtering for pet-friendly never sees these
communities.

Each listing needs: pets allowed yes/no, breed restrictions, weight limit,
number of pets, pet rent, and one-time pet fee.

The 14:
  Ridgeline Park (Austin)      Copper Social (Denver)
  The Meridian (Charlotte)     North Fifty (Nashville)
  Harbor View (Tampa)          The Wynwood (Orlando)
  Canvas Flats (Raleigh)       Lumen District (Phoenix)
  Stonebrook (Columbus)        The Arcade (Atlanta)

Estimated impact across the 14: about 410 additional organic clicks/month.

Happy to do these myself if someone can share access.

— Cameron
Next Sunday’s crawl checks this and closes it automatically.
The template ships from ticket T3. These are the words that go in it. Everything factual is pulled from the community’s actual pet policy and real places within a mile of the address — but read it before it goes live.
Ridgeline Park · /pet-friendly · ~1,200 wordsCopy
Pet-Friendly Apartments near Papago Park, Phoenix

Ridgeline Park welcomes cats and dogs — up to two pets per apartment home, with no weight limit and no breed restrictions beyond those required by the City of Phoenix. Living close to the city should not mean leaving anyone behind, and the community was built with that in mind.

Pet Policy

Up to two pets per home. Cats and dogs both welcome. No weight limit. Breed restrictions are limited to those required by City of Phoenix ordinance. Proof of vaccination required at move-in.

Pet Rent & Fees

$35 per month, per pet. One-time non-refundable pet fee of $300 for the first pet, $150 for a second. No pet deposit.

On-Site Pet Amenities

Fenced dog run on the second-floor amenity deck, open dawn to dusk. Pet wash station with warm water and a raised basin, off the parking garage entrance on level P1. Waste stations on every residential floor.

Vets, Dog Parks & Pet Stores Nearby

Papago Park — 1.2 mi, with trail loops and shaded ramadas. The nearest off-leash park, veterinary clinics and pet supply stores are pulled from a live local search when the ticket is generated, with their real names and distances from 48th Street.

Nothing publishes without you. Open a community above to see its own draft.
Watch

Not urgent, worth a nudge

Straightforward, no fire drill — send when convenient
Cleared this week · 0
Nothing cleared yet. A marked-done item lands here and stays for the history — nothing expires.
Click a row to open the finished ticket, email or page copy — already written and ready to send. Copy and the mark-done button on the row itself work without opening it. Marking something done here is a claim; next Sunday’s crawl verifies it and closes it for real.
Internal · Promo desk

Every special, ready for Google Ads

Read from this morning’s scan and split into the two halves a Google promotion actually takes — a discount and what it comes off. Edit anything; your version is held until the property changes its offer.
running a special right now
changed in the last week
using your wording
need a look from you
Community Special, as written on the site Ad headline · 30 max Discount Comes off · 20 max Ends Status
Reading the daily scan files…
Why it splits into two columns. A Google promotion is not a sentence you write — it is a discount plus the thing it applies to, and Google assembles the line itself. “100% off” + “2 Months Rent” renders as 100% off 2 Months Rent. The 20-character cap is on the right-hand half only. The ad headline beside it is a different field entirely — 30 characters, for pinning or for an ad customizer.

Your edits win, until the offer changes. The moment you type in a row it stops being managed and your wording is kept. But an edit is written against one specific offer — so when the website’s special changes, the hold releases, the row goes back to a fresh suggestion, and it is flagged with what you had written before. An override that outlived its offer would quietly run last month’s concession forever.

End dates come off the page. Most of these specials publish their own deadline — “apply by July 31”, “move in by 8/31”. That date is used, because it is the one the leasing office will honour. Where a property names no date, the field is left empty rather than inventing an expiry: the daily scan is already the expiry mechanism, and a promo that ends early stops serving while the website still advertises it.
Platform & Capabilities

What sits behind each of those numbers

Every number on this dashboard is pulled straight from the source that owns it — Google, Meta, and your own community websites — in real time. No spreadsheets, no manual updates, no middle layer guessing. Here's exactly what powers it and why it holds up against anything on the market.

📣
Paid Media

Google Ads & Meta

Spend, clicks, cost-per-lead and campaign performance read live from Google Ads and Meta through their official APIs — the direct connection, not a reseller dashboard that adds a markup or a delay.

Why it's strong: Direct API access is the highest tier of data a partner can have — real-time and complete. Most agencies screenshot these by hand; yours updates itself.
LiveAll properties
📊
Analytics

Website Analytics

Traffic, sources, conversions and the search queries bringing renters to each community come straight from GA4 and Search Console — Google's own first-party measurement, tied to the exact property you're viewing.

Why it's strong: This is Google's ground truth, not an estimate. Search Console shows the actual keywords and rankings Google records — data no third-party tool can fully replicate.
LivePer property
🏷
Live Pricing

Floorplan Pricing & Specials

Every morning the platform visits each community's own website the way a renter's browser would, waits for live pricing to load, and reads the real "starting at" price for every floorplan plus the current special — across all 30+ communities automatically.

Why it's strong: The price comes from the one source that's always right — the property's own site. Nothing to license, nothing goes stale, no one keying it in. When a price moves, the dashboard moves that same morning.
Live30+ properties
Alerts

Same-Day Specials Alerts

The moment a community changes its concession — "12 Weeks Free" becomes "$1,000 Off" — you get one email that morning showing the exact before-and-after wording, per property.

Why it's strong: Your ad creative never lags behind the website. The day the offer changes on the site, you know — so the ad a renter clicks always matches the deal they'll actually get.
LiveOne email/day
🔄
Ad Sync

Google Ads Price Sync

A one-click control pins your live lowest price into your Google Ads headline — "Studio from $1,335" — or features a specific bedroom type when you want to push it — "2BR from $2,305" — always under Google's 30-character limit. As the price moves, the headline updates on its own.

Why it's strong: Ads that always show the true current price earn better ad-relevance from Google, which lowers cost-per-click. Set once, stays honest automatically.
LiveAuto-updating
🔍
Technical SEO

Website Health

Checks indexing, broken links, page speed, mobile health and schema mark-up, then gives you a plain-English punch list you can download and hand to a web team — with the "why it matters" and the fix for each item.

Why it's strong: Combines Google's own index and speed scores with a live crawl, then turns findings into action. Where Screaming Frog or SEMrush stop at a report, yours is built for multifamily and points at the fix.
Rolling outDownloadable fixes
🤖
AI Visibility

AI Search (GEO)

Renters increasingly ask AI — "how much are apartments at this community" — instead of scrolling search results. The platform asks those same AI tools and records whether your community is named, cited and priced correctly in the answer.

How we turn it into fixes: When the AI misses your community, prices it wrong, or cites a competitor, we trace it to the gap and fix it at the source — adding or correcting the info on your website (an FAQ that answers "how much is a 2-bedroom," accurate floorplan pricing, and structured schema tags that AI reads), and pushing the current price to your Google Business Profile. Feed the AI clean, consistent answers everywhere it looks, and it starts naming you. Then we re-check the same questions to confirm the answer improved.
Rolling out4 AI enginesFix & re-check loop
📍
Local

Google Business Profile

Auto-posting real price drops and current specials to each community's Google Business Profile — so the freshest pricing reaches renters searching Google Maps and Google's AI. Built and ready; waiting only on Google granting API access.

Why it's strong: Your Google profile is often the first thing a renter sees. Keeping its pricing and offers current — automatically, from the same daily read — is one more place you show up accurate and fresh.
Ready · pending access
🎯
Competitive

Competitor Analysis

You tell us the five communities you actually compete with at each property — the ones your leasing team already names on a tour. From there it runs itself. The same daily read that prices your own floorplans reads theirs, so you can see where you sit in your own comp set on advertised rent, and again on net effective once everyone's concessions are counted. Those two positions are often not the same, and the gap between them is the part worth knowing.

Why it's strong: A comp survey is only worth anything if it's current. Manually gathered ones are stale within a fortnight, and nobody rebuilds them monthly. This one refreshes every morning and tells you the day a competitor moves — a price change, a new concession, or an offer that quietly ended.
Pricing add-on · comp set required