---
# System prepended metadata

title: BUY-2343 - Buyers can leave his preferences when his research did not return interesting listings
tags: [done, lisa, gluglu, hubspot]

---

---
tags: done,lisa,gluglu,hubspot
---
# BUY-2343 - Buyers can leave his preferences when his research did not return interesting listings

- https://casavo.atlassian.net/browse/BUY-2343
- https://github.com/casavo/lisa/pull/729
- https://www.figma.com/file/1UMyommiSZVNDQ3ZJF41nn/%5BRebrand%5D-Listing-Platform---PROD?node-id=13834%3A79530
- https://preview-729.lisa.staging.int.casavo.tech/it/case-in-vendita/milano/
- script aggiunta zone Denis: https://gist.github.com/debellotti/2e6f45ca1d0198dde97bd45ac75efda2


```
enum class SearchStatus { LOOKING_AROUND, SOME_VISITS_DONE, OFFER_IN_PROGRESS, OFFER_MADE }
enum class NumberOfRooms { ONE, TWO, THREE, FOUR_OR_MORE }
```

## # TODO

### Lisa side

- [x] component when no results
  - [x] change button
  - [x] update copy
- [x] new flow wizard
  - [x] validazione degli step (abilitazione e disabilitazione del bottone next)
  - [x] style footer
  - [x] http call
  - [x] handle http call error
  - [x] finish buyerInterestsFlow tests
  - [x] checkbox multi-select
  - [x] style header
  - [x] improve style steps
  - [x] link ultimo step dinamico + test
  - [x] scroll solo zone
  - [x] freccia dicci cosa stai cercando
  - [x] drag slider non deve muoversi la pagina
  - [x] focus su selezione mobile disdabilitare per selezione preferred zone
  - [x] areoplanino icona bottone invia
  - [x] cambiare effetto hover pulsanti multi e single select
  - [x] dicci cosa stai cercando:
    - [x] immagine poco più piccola 130px
    - [x] un po più di spazio sopra immagine 56
  - [x] use vanilla extract instead of style attribute
  - [x] extract components FormikBudgetSliderText, MultiOptionFormikSelector, OneOptionFormikSelector
  - [x] nuova url deve essere mappata sul file production.yml (una volta capite le url giuste)
  - [x] sostituire la curva del footer con il nuovo componente configurabile
- [x] cypress tests
- [ ] ~~component at the end of listing if there are less than 20 (or equal)~~ -> new card
- [x] click su logo casavo nella pagina "BuyerInterestFlow" deve riportarlo sul listing per la city senza filtri in target="_blank"
- [x] gestire selezione "Provincia di XXX" -> al momento viene inviato a gluglu array vuoto di geoslugs
  - [x] secondo noi vale la pena togliere la possibilità di scegliere intera provincia (parametro al componente visto che è condiviso con i fltri?)
  - risorsa utile https://github.com/casavo/gluglu/blob/master/doc/adr/0004-geographical-areas-for-favorite-search.md
- [x] eventi GTM:
  - [x] evento quando compare componente NoListingMatchingFilterFound (no results)
    - [-] ~~passare come valori i filtri di ricerca~~
        `[action: 'Show', category: 'BuyerInterestFlow', label: 'NoResults', value: {filters}]`
  - [x] evento click botton "Cosa stai cercando"
        `[action: 'Click', category: 'BuyerInterestFlow', label: 'startFlow', value: {}]`
  - [x] evento aperto pagina "BuyerInterestFlow" (step 1) (a che punto sei della ricerca)
        `[action: 'Show', category: 'BuyerInterestFlow', label: 'Step1', value: {}]`
  - [x] evento "BuyerInterestFlow" (step 2) (preferred zones)
        `[action: 'Show', category: 'BuyerInterestFlow', label: 'Step2', value: {}]`
    - [x] gli eventi della selezione zona ci sono già, va cambiata la category
        `category = BuyerInterestFlow`
  - [x] evento "BuyerInterestFlow" (step 3) (house type)
        `[action: 'Show', category: 'BuyerInterestFlow', label: 'Step3', value: {}]`
  - [x] evento "BuyerInterestFlow" (step 4) (max budget)
        `[action: 'Show', category: 'BuyerInterestFlow', label: 'Step4', value: {}]`
    - [x] evento su slider o text-input (focus out)
         `[action: 'FieldUpdate', category: 'BuyerInterestFlow', label: 'BudgetInput', value: {}]`
         `[action: 'FieldUpdate', category: 'BuyerInterestFlow', label: 'BudgetSlider', value: {}]`
  - [x] evento "BuyerInterestFlow" (step 5) (form contatti)
        `[action: 'Show', category: 'BuyerInterestFlow', label: 'Step5', value: {}]`
    - [x] evento click su invia
        `[action: 'Click', category: 'BuyerInterestFlow', label: 'Submit', value: {}]`
  - [x] evento "BuyerInterestFlow" (thank you)
        `[action: 'Show', category: 'BuyerInterestFlow', label: 'ThankYouPage', value: {}]`
    - [x] evento click bottone "torna alle case"
        `[action: 'Click', category: 'BuyerInterestFlow', label: 'ThankYouCTA', value: {}]`
  - [ ] ~~evento chiusura pagina "BuyerInterestFlow" (per ora non lo facciamo)~~
       `[action: ?, category: ?, label: ?, value: {}]`
  - [x] evento click su logo casavo nella pagina "BuyerInterestFlow"
        `[action: 'Click', category: 'BuyerInterestFlow', label: 'Logo', value: {}]`



### Gluglu side

- [x] receive BI via api
- [ ] forward BI to hubspot custom object
  - [x] develop crm bridge mapping from BI to custom object properties
  - [x] develop missing methods in HubspotCrm class and related *Service classes
  - [x] trigger CrmBridge.collectBuyerInterest in CollectBuyerInterestsUseCase
  - [x] associate the buyer interest to every selected zones (an api call for every zone!)
  - [ ] should we distinguish buyer interests coming from the flow from the others ?
    - già attualmente possibile guardando l'utente che ha creato il BI ?
    - also mortgage team is creating buyer interests via API !
- [ ] store BI on db
  - [x] db migration to add new table
  - [x] new repository implementation
  - [x] trigger new repository in CollectBuyerInterestsUseCase
  - [ ] add new table on snowlfake: https://github.com/casavo/data-transformation/pull/1269
- [x] update api documentation: see https://gluglu.staging.int.casavo.tech/api/
- [x] check zone association without geoslugs
  - https://app.hubspot.com/contacts/20764147/contact/563251
  - https://app.hubspot.com/contacts/20764147/record/2-4474362/2967777796
- [x] :warning: :warning: hubspot custom object zones is not the right one !!!! `2-5185446` -> `2-5507653`
- [x] :warning: production has a different Custom Object ids
  - [x] buyer interests: `2-4474362` -> `2-4474003`
  - [x] city areas: `2-5507653` -> `2-5200830`
- [x] _too many filterGroups (count: 37, max allowed: 5)_: test flow with more than 5 zones... and paginate the research (?)

### Hubspot side

- [x] update hubspot with missing zones: https://github.com/casavo/hubspot-city-areas-sync
  - [x] sync sandbox
  - [x] sync prod
- [x] remove sandbox `zones` custom object: it was just a test !!
- [ ] last thoughts:
  - [ ] should we update zones ? i ran just cities sync
  - [ ] should this script be executed periodically in some pipeline?

## # Improvements

### Lisa side

- [ ] check unused lokalise keys: we replaced some keys with the new ones, so some keys could be unused now
- [x] show casavo property filter also on no listing message
- [x] next button in first step on back: when you come back you've already selected a value in the first step
- [ ] do not show choose zone suggestion when already no results -> new card
- [ ] reset button bugs -> new card
  - [ ] it do not reset the "only casavo" filter
  - [ ] when only zone and "casavo" filter are applied
    - [ ] the reset filter do not appair on filters bar
    - [ ] with no result you have the reset filter, but it doesn't do anything!
      (http://localhost:3000/it/case-in-vendita/milano/?byZone=forlanini&onlyCasavo=1)

### Gluglu side

- [ ] could we store the HubSpot ids on gluglu db? (it should be a db update operation because we store the BI as first operation)
  - created/found contact id
  - created buyer interests object
- [ ] HubSpot API could support bulk operation for buyerinterest-zone associations: we're currently sending a request for zone
- [ ] ~~Errore API 500 da BE perchè HubSpot risponde Email non valida (es `asd@asd.asd`): HS torna una 400 e BE trasforma quella in una 500~~


## # Question
- [x] target __blank
- [x] prima pagina non ha tasto indietro
- [x] barra gialla primo step (ce ne è un pezzettino), ultimo step non c'è
- [x] url (verrà anche tradotta? vediamo se non è troppo complicato)
- [x] lista al posto dello slider nella sezione di scelta prezzo? -> no
- [x] checkbox in multiselezione: si/no? -> si
- [x] nella domanda del numero di stanze è strano avere "quadrilocale" e poi "quattro locali o più" (forse l'ultima dovrebbe essere "più di 4")
  - ---> togliamo per adesso "quadrilocale"
- [ ] tenere presente che "search status" (a che punto della ricerca sei) è un valore che non arriva ad hubspot attualmente... da aggiungere poi? -> card a parte: https://casavo.atlassian.net/browse/BUY-2353
- [x] anche in questo usecase come per gli altri, per accellerare durante creazione contatto su gluglu cerchiamo se contatto esiste su HubSpot per email e non per numero di telefono ... va bene?