Skip to main content

Runbook — Migrating a Realtor off SellingToolz/AdvanceWebsites (P1)

Reusable per client. First instance: Team Beckett. Moves content + data off the SellingToolz backend onto the WiseAI Realtor platform. Pairs with the build specs (search/sold/coming-soon) and the parent brief WISEAI_REALTOR_BACKEND_REPLACEMENT_REQUIREMENTS_2026-07-02.md.

Gate: do NOT flip the public domain to our site until (a) the CREA technology-provider registration is complete + feed legitimate (FOUNDER_ACTIONS.md 2026-07-02) and (b) the P0 full-board search is live. This runbook is the data move; the feed move is separate.

1. Testimonials (73 for Beckett)

  • Source: SellingToolz Testimonials tab (73 active, 3 pages). No export button confirmed → likely manual/scrape from the authenticated backend (read-only) or the public /testimonials page.
  • Target: our testimonials (metadata.website testimonials override via the site editor) and/or the Reviews Engine. Attribution first-name only (privacy), preserve ratings.
  • Steps: capture name + quote + rating per testimonial → bulk-load into the testimonials section → publish. Verify count renders on /s/[slug] + /reviews.

2. Leads / contacts from LeadBooker ⚠️ CASL-sensitive

  • Source: LeadBooker CRM (/manage/crm). No external CRM connector is active (FollowUpBoss/Top Producer all off), so leads live only here → export via CSV (SellingToolz export, founder-driven).
  • Target: re_contacts (+ re_interactions) via the intake path (captureToCrm) or a one-time bulk import.
  • ⚠️ COMPLIANCE (founder-gated, do not auto-run):
    • These are real client PII. Import is a DB write to the customer's own account — fine — but migrating a lead list does NOT grant consent to email them. Under CASL, contacting migrated leads needs a lawful basis (existing business relationship, prior express/implied consent, or the inquiry that created the lead). Set email_consent_status per the real basis; default to the most conservative (unknown/implied only where a genuine relationship exists), and route everything through the universal suppression gate.
    • NO campaign send to migrated leads without founder review + a consent basis per contact (the no-cron-sends contract stands).
  • Steps: founder exports CSV → map fields → import with correct consent basis + source_detail='migrated_sellingtoolz' → verify re_contacts rows + consent events. Get a count first.

3. Team roster + designations

  • DONE for Beckett (Terry Beckett Sr. / Terry Beckett Jr. / Sheri Beckett on account …c01). For a new client: create the roster with exact designations (Beckett ref: Terry SRS/ABR/SRES/Broker/MVA; Sheri ABR/SRES/SRS/DLG/Broker; Terry E.W. Broker).

4. SEO / meta / tracking

  • Meta description + keywords → site config meta fields (Beckett values in the config export / requirements doc §1.2).
  • Custom CSS (minor, e.g. .team_bckt_email{font-size:26px}) → port if still relevant.
  • Tracking decision (founder): their Google Remarketing (866728424) + Facebook Pixel (1010422172436695) — keep (migrate the tags) or replace with our first-party honest analytics. Recommend our analytics + only add remarketing if the client actively runs paid ads. Document the choice.

5. Content, nav, header/footer

  • Header/footer text (agent block, phones), banner ("START SEARCHING MLS® LISTINGS"), thank-you copy, top/middle nav items → the site editor sections. Note the Open Houses middle-nav item — needs an /open-houses page we don't yet have (small P2 build).

6. Listings

  • Active listings come from the DDF feed (post-registration) — not migrated by hand. Own sold listings → the sold gallery (spec: realtor-sold-gallery-mvp.md). Manual/pre-market → coming-soon (spec: realtor-coming-soon-mvp.md). Featured order → sort_order.

7. Cutover

  1. Content + testimonials + roster migrated and verified on our site (unlisted).
  2. CREA registration done + feed legitimate + P0 search live.
  3. Leads imported with correct consent basis.
  4. Complete the brokerage-identity Compliance form (publish gate).
  5. Founder go → point teambeckett.ca DNS at our site; decommission the SellingToolz site.
  6. Post-cutover: voice smoke call, verify lead intake end-to-end, monitor.

8. Per-client checklist (copy for each new migration)

  • Testimonials exported + loaded + verified
  • Leads CSV exported + imported with consent basis (founder-gated)
  • Roster + designations created
  • Meta/SEO + tracking decision documented
  • Header/footer/nav/content ported
  • Own-sold + pre-market listings entered
  • CREA feed legitimate + P0 search live
  • Compliance form (publish gate) complete
  • Domain cutover on founder go
  • Post-cutover verification (voice/chat/lead intake)

See also

WISEAI_REALTOR_BACKEND_REPLACEMENT_REQUIREMENTS_2026-07-02.md · realtor-fullboard-search-mvp.md · realtor-sold-gallery-mvp.md · realtor-coming-soon-mvp.md · products/wiseai-realtor/identity-consent-model.md (consent) · FOUNDER_ACTIONS.md 2026-07-02 (CREA registration + compliance gates).