Smaily mallid ja väljad

Mootor kirjutab igal öösel iga kontakti külge personaalsed väljad. Sinu Smaily mallid ja automatsioonid kasutavad neid nagu tavalisi merge-välju — uut saatmisplatvormi ei ole.

Soovitusslotid (1-9)

Iga slot N (1..9) kannab samu välju:

VäliSisu
rec_N_skutootekood; tühi = slotti pole (kasuta seda tingimusena)
rec_N_nametootenimi kliendi keeles
rec_N_descriptionlühikirjeldus (max 200 tm)
rec_N_pricehind
rec_N_compare_pricevõrdlushind allahindluse näitamiseks (võib olla tühi)
rec_N_image_urltootepilt
rec_N_link_urltäielik tootelink koos jälgimisparameetritega
rec_N_link_pathsama link ILMA domeenita (vt lingi-muster all)
rec_N_headlinevalmis pealkirjafraas
rec_N_ctavalmis nupusõnastus
rec_N_reasoninimloetav põhjus, miks toode valiti

Tühi slot kirjutatakse tühjaks (mitte ei jäeta vanaks), nii et mall võib alati usaldada tingimust:

{% if rec_4_sku and rec_4_sku != "" %} ... slot 4 sisu ... {% endif %}

Kasuta täpselt seda nil-safe vormi: puuduv väli on Liquid'is nil (mitte tühi string) — nii juhtub nt kõrvalejäetud võrdlusgrupi kontaktiga, kellelt mootor väljad eemaldab. Ainult == "" võrdlus VÕI ainult {% if rec_4_sku %} üksi jätaks ühe juhu katmata ja kirja tekiksid tühjad tootekaardid.

Lingi-muster (oluline!)

Kasuta mallis oma poe domeeni + link_path:

<a href="https://sinu-pood.ee/{{ rec_1_link_path }}">{{ rec_1_name }}</a>
  • link_path sisaldab juba kogu teed ja jälgimisparameetreid (sh smaily_rec, mille poe-plugin ostu juures kinni püüab). Ära lisa vahele omaenda kataloogi-prefiksit (nt /toode/) — tee on path'is olemas ja topelt-prefiks annab 404.
  • Miks mitte lihtsalt link_url? Võib ka, kui mall lubab täis-URLi; link_path on selleks, et link elaks kindlalt sinu domeenil ja atributsioon töötaks.

Valmis tootekaardi plokk (näidis)

Töötav, e-posti-kliendikindel (tabelipõhine) tootekaart päris piloodist. Kleebi Smaily kirjapõhjas HTML-elemendi sisse: 1 plokk = 1 toode, 3 plokki reas; layout/veerud tulevad kirjapõhjast endast. Tee slotile 2..9 koopia, vahetades kõik rec_1_rec_2_ jne. Asenda sinu-pood.ee oma domeeniga ja #be3e77 oma brändivärviga.

NB: kaitse on nil-safe vormis {% if rec_1_sku and rec_1_sku != "" %} … {% endif %} — see katab nii puuduva välja (nil; nt võrdlusgrupi kontakt) kui tühja stringi.

{% if rec_1_sku and rec_1_sku != "" %}
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="border-collapse:collapse; border:none; width:100%; max-width:200px; margin:0 auto; font-family:HelveticaNeue, Arial, Helvetica, Geneva, sans-serif">
  <tbody>
    <!-- Pilt -->
    <tr>
      <td align="center" style="border-collapse:collapse; border:none; vertical-align:top; padding-top:10px; padding-bottom:10px" valign="top">
        <a target="_blank" href="https://sinu-pood.ee/{{rec_1_link_path}}" style="border:none; margin:0; padding:0; display:inline-block">
          <img src="{{rec_1_image_url}}" alt="{{rec_1_name}}" width="173" style="border:none; margin:0; padding:0; width:100%; max-width:173px; height:auto; display:block"/>
        </a>
      </td>
    </tr>
    <!-- Toote nimi -->
    <tr>
      <td align="center" style="border-collapse:collapse; border:none; vertical-align:top; padding:0 6px 2px 6px" valign="top">
        <a target="_blank" href="https://sinu-pood.ee/{{rec_1_link_path}}" style="text-decoration:none; color:#333333; font-family:HelveticaNeue, Arial, Helvetica, Geneva, sans-serif; font-size:14px; line-height:18px; font-weight:bold">
          {{rec_1_name}}
        </a>
      </td>
    </tr>
    <!-- Hind + vana hind (compare_price ainult kui olemas) -->
    <tr>
      <td align="center" style="border-collapse:collapse; border:none; vertical-align:top; padding:0 6px 8px 6px; font-family:HelveticaNeue, Arial, Helvetica, Geneva, sans-serif; font-size:15px; line-height:20px; color:#be3e77; font-weight:bold" valign="top">
        <span style="color:#be3e77; font-size:16px; font-weight:bold">{{rec_1_price}}&#8364;</span>{% if rec_1_compare_price and rec_1_compare_price != "" %} <span style="color:#999999; font-weight:normal; font-size:13px; text-decoration:line-through">{{rec_1_compare_price}}&#8364;</span>{% endif %}
      </td>
    </tr>
    <!-- CTA nupp -->
    <tr>
      <td align="center" style="border-collapse:collapse; border:none; vertical-align:top; padding-top:2px; padding-bottom:10px" valign="top">
        <table border="0" cellpadding="0" cellspacing="0" align="center" style="border-collapse:collapse; border:none; margin-left:auto; margin-right:auto">
          <tbody>
            <tr>
              <td align="center" bgcolor="#be3e77" style="border-collapse:collapse; border:none; vertical-align:top; line-height:normal; mso-line-height-rule:exactly; padding:10px 20px; background-color:#be3e77; border-radius:3px; color:#fff" valign="top">
                <a target="_blank" href="https://sinu-pood.ee/{{rec_1_link_path}}" style="line-height:normal; display:inline-block; text-align:center; text-decoration:none; color:#ffffff; font-family:HelveticaNeue, Arial, Helvetica, Geneva, sans-serif; font-size:16px; font-weight:normal">
                  Vaata l&#228;hemalt
                </a>
              </td>
            </tr>
          </tbody>
        </table>
      </td>
    </tr>
  </tbody>
</table>
{% endif %}

Analüütika-väljad kontaktil

VäliSisu
rec_segmentsegment
rec_engagement_state / rec_engagement_trajectoryseisund ja suund
rec_days_to_replenish / rec_replenish_sku / rec_predicted_next_replenish_attaastäitumine
rec_discount_tier_suggestedsoovituslik soodustase (0/5/10/15) selle kliendi tundlikkuse järgi
rec_loyalty_brand_top / rec_loyalty_scorelemmikbränd ja lojaalsus
rec_preferred_send_windowkliendi parim saatmisaken
rec_active_triggershetkel aktiivsed põhjused, komadega (vt väärtuste loend all)
rec_subject_hook / rec_subject_hook_typevalmis teemarea-haak ja selle liik
rec_last_sync_at / rec_engine_versionmillal andmed värskendati
languageSmaily enda natiivne väli — võimaldab staatilise copy keele-segmenteerimist; kirjutatakse ainult siis, kui kliendi keel on teada, ega tühjendata kunagi

Mida rec_active_triggers võib sisaldada

rec_active_triggers on komadega ühendatud loend põhjustest, mida mootor selle kliendi puhul hetkel näeb — selle peale saab Smaily-s hargneda või segmenteerida. Võimalikud väärtused:

VäärtusTähendus
cadence_window_reachedkorduvtoode hakkab ennustuse järgi otsa saama
dormant_to_clickerkaua vaikinud klient klikkis jälle kirjas
life_stage_transition_duelemmik läheb üle uude vanuseastmesse (ainult lemmikloomapoed)
category_first_purchaseesmakordne ost kategoorias
purchase_in_categoryhiljutine ost, mille kõrvale pakkuda sobivaid tooteid
stock_status_changeasjakohase toote laoseis muutus
aov_below_free_shipping_thresholdkorv jääb napilt alla tasuta saatmise piiri
seasonal_window_openavanes hooajaline aken

Millised väärtused ilmuda saavad, sõltub sinu poe sektorist — näiteks elufaasi-trigger kehtib ainult lemmikloomapoodidel.

Kohordi-lipud (rec_seg_<slug>)

Öisest sünkist eraldi kirjutab konsooli "Create Smaily segment" tegevus (saadaval igal filtreeritud Audience-vaatel) valitud kontaktidele kohordi-lipu: välja nimega rec_seg_<segmendi-slug> väärtusega "yes". See on osaline push — lipu saavad ainult selle kohordi kontaktid ja sama-nimelise segmendi uuesti käivitamine tühjendab lipu neilt, kes on grupist lahkunud. Ehita Smaily segmendid ja automatsioonid selle lipu peale. NB: see kirjutatakse käsu peale, hetkel kui tegevust vajutad — mitte öise sünki poolt.

Väärtuste vorming (malli-tingimuste jaoks)

  • Hinnad (rec_N_price, rec_N_compare_price) on pelgad kahe komakohaga numbrid ilma valuutasümbolita (nt 12.90) — lisa ise mallis.
  • rec_discount_tier_suggested on täisarv tekstina (0 / 5 / 10 / 15). Ehita mall nii, et 0 ei näita ühtki soodustusblokki: peale klientide, kes ostavad ka ilma soodustuseta, hoiab mootor väikest kindlat osa (~10%) kontaktidest teadlikult 0-l, et näha, mis juhtub ilma soodustuseta, ja õppida, kes seda tegelikult vajab.
  • Ajatemplid (rec_predicted_next_replenish_at, rec_last_sync_at) on ISO-vormingus.

Teemarea-haak

rec_subject_hook on lühike (≤30 tähemärki), valmis teemarida, mis on iga kliendi kohta personaliseeritud — näiteks "Aeg täiendada: Acana", "Uut sinu lemmikult Orijen" või "Sulle valitud soovitused". Mootor valib iga kliendi kohta täpselt ühe väikese redeli järgi (taastäitumine → tagasivõitmine → lemmikbränd → nädala valik → geneeriline).

Väli ei ole kunagi tühi: klient, kellel pole tugevat signaali (või võrdlusgrupi kontakt), saab puhta geneerilise fraasi, mitte tühja teemarea. Seega treatment-saadetise puhul võid panna kogu teemareaks pelga merge-tag'i:

{{ rec_subject_hook }}

rec_subject_hook_type kannab keele-neutraalset liiki (replenish / winback / brand / top_pick / generic) — kasuta seda segmenteerimiseks või hargnemiseks, mitte lokaliseeritud teksti.

Hoiatused:

  • Iga saadetise puhul, mis võib sisaldada võrdlusgruppi (holdout), on haak neil kontaktidel tahtlikult tühi — kasuta sellistel saadetistel staatilist teemarida ja jäta {{ rec_subject_hook }} ainult treatment-saadetistele.
  • Teemarea-haakide sisselülitamine live-saadetistele on tahtlik, operaatori-lubatav samm (teemaread mõjutavad tarnitavust); väli ise tuleb esimesena, esimene live-kasutus kinnitatakse eraldi.

Automatsiooni-retseptid

  • Taastäitumine: käivita kui rec_days_to_replenish <= 5 — vt taastäitumise lehte.
  • Tagasivõitmine: käivita kui rec_engagement_state muutub väärtuseks lapsed; soodustuse suuruse võta väljast rec_discount_tier_suggested.
  • Sisu hargnemine seisundi järgi:
{% if rec_engagement_state == "lapsed" %}
  <p>Pole sind ammu näinud…</p>
{% else %}
  <p>{{ rec_replenish_sku }} hakkab otsa saama:</p>
{% endif %}

Mootori käivitatavad automatsioonid

Ülaltoodud retseptid on automatsioonid, mille ehitad ise välja-tingimuste peale. Nüüd on olemas lihtsam tee: mootor jälgib sinu poe andmeid ja enrollib kontakti sinu Smaily automatsiooni täpselt õigel hetkel õigele kliendile — näiteks kui korduvtoode hakkab ennustuse järgi otsa saama (taastäitumine) või kui loobunud klient klikib jälle kirjas (tagasivõitmine). Pood ega plugin ei saada ise midagi; mootor enrollib kontakti ja Smaily saadab kirja, mille sina oled ehitanud.

Seadistus elab poe-plugina seadetes sektsioonis "Mootori soovitus-automaatikad" (praegu WooCommerce; Shopify tuleb järgmisena). Saadaolevate trigerite nimekiri sõltub sinu poe sektorist — näiteks elufaasi ülemineku trigger on ainult lemmikloomapoodidel — ja iga trigeri juures on kirjeldus ja retsept otse plugina UI-s.

Kuidas seadistada

  1. Smailys: ehita automatsioon. Loo automatsioon "form submitted" trigeriga — see on mehhanism, millega mootor kontakti enrollib — ja hoia see aktiivsena. Valmis kirjapõhjad on sinu Smaily kontol juba olemas DRAFT-kampaaniatena (subject-prefiks "ENG DRAFT — …"); võta üks neist workflow-kirja aluseks. Kiri kasutab samu rec_-välju ja soovitusslotte, mis ülal kirjas. (Tagasivõitmise põhjas on soodustusblokk koodidega WB5/WB10/WB15 — loo need koodid poes, kui ploki alles jätad.)
  2. Pluginas: seo trigger. Ava plugina seadetes automaatikate sektsioon, lülita trigger sisse ja vali või sisesta Smaily workflow, mille see käivitab. Mitmekeelses poes määra workflow igale keelele + fallback.
  3. Testi kõigepealt. Test-režiim on vaikimisi SEES — lisa oma test-aadressid. Test-režiimis saavad kirja AINULT need aadressid; ilma ühegi test-aadressita ei saadeta üldse midagi. Kontrolli kirja päris postkastis: pildid, lingid, tühjad slotid.
  4. Aktiveeri päriselt. Kui test-kiri on korras, lülita test-režiim maha ja aktiveeri — see on eraldi teadlik kinnitussamm.

Kuidas see käitub

  • Väljas, kuni sina sisse lülitad (fail-closed): mootor ei saada kunagi trigeri pealt, mida sa pole aktiveerinud.
  • Cooldown kliendi kohta: sama klient ei saa sama automatsiooni uuesti enne cooldown-akna lõppu (näiteks taastäitumisel vaikimisi 7 päeva).
  • Trigerite nimekiri, kirjeldused ja retseptid tulevad otse mootorist plugina UI-sse — uus trigger ilmub sinna ilma plugina uuenduseta.

Väljapõhine tee töötab edasi

Kõik sellest sektsioonist ülalpool — Smaily segmendid ja automatsioonid rec_-väljade peal — jääb täielikult toetatuks ja töötab edasi. Mootori käivitatavad automatsioonid on lihtsam, soovitatav tee (mootor valib hetke sinu eest); väljapõhine tee jääb paindlikuks fallback'iks, näiteks poele, kus pluginat ei ole.

Kui tihti väljad uuenevad

Eri andmed värskenevad eri kella järgi. Kõik allolevad ajad on serveri ajakava (Europe/Tallinn):

AndmedMillal värskeneb
Soovitusslotid (rec_N_*), kõik rec_* analüütika ja teemarea-haakArvutab öine ahel (kaasatus → kalibratsioon → trigerite tuvastus → soovitused) ja lükkab Smaily-sse umbes kell 05:00. Muutunud kliente arvutatakse ka paar korda päeva jooksul (umbes 09:10, 13:10 ja 17:10) ning järelsünk jookseb ligikaudu iga 30 minuti tagant, et need päevased muudatused üle kanda.
Smaily natiivne languageSama öine kontakti-sünk — ja ainult siis, kui kliendi keel on teada.
Kohordi-lipud (rec_seg_<slug>)Ainult käsu peale — hetkel, kui kasutad konsooli "Create Smaily segment" tegevust.
Avamised ja klikid (toidavad kaasatust ja omistamist)Tõmmatakse Smailyst iga 15 minuti tagant, täis-backfill igal ööl umbes kell 02:00.
Kampaania-statistika (Insights)Värskeneb kord tunnis; kampaania numbrid settivad veel umbes 35 päeva (hilised avamised).
Päeva-mõõdikud (Home / Insights ajalugu)Agregeeritakse kell 06:00; tänane ja eilne kuvatakse vahepeal konsoolis jooksvalt.

Vajad kindlust vahetult enne saatmist? Kasuta "Sync now" (järgmine sektsioon).

Kui kontakt loobub uudiskirjast

Kui Smaily näitab kontakti uudiskirjast loobununa, lõpetab mootor tema rikastamise. Ta saab ühe viimase sünki, mis tühjendab kõik rec_-väljad — nii ei jää loobunud kontaktile vana soovitust seisma — ja pärast seda ei kirjuta mootor talle enam kunagi. Muud ei kustutata: tema ostuajalugu toidab mudelit edasi ja kui ta uuesti liitub, satub ta järgmise öise sünkiga automaatselt uuesti sünki ning saab väljad täies mahus tagasi.

Sama kehtib profileerimisest keeldumise kohta (GDPR art 21): selline kontakt võib sinu listi jääda, aga mootor ei arvuta talle midagi — tema rec_-väljad tühjendatakse üks kord ja pärast seda ei kirjutata neisse enam. Kontakt, kes on korraga loobunud ja keeldunud, tühjendatakse üks kord, mitte kaks.

Enne saatmist: "Sync now"

Öine sünk jookseb varahommikul. Kui muudad päeva jooksul segmente või tahad kindlust, et väljad on värsked, palu operaatoril vajutada Sync now (või tee seda ise, kui sul on ligipääs) vahetult enne kampaania saatmist — eriti kui kampaania sihib värskelt loodud segmenti.

Tehniline taust

Väljade ehitus: lib/smaily/contact-sync.ts (slotid + analüütika; tühi slot = null-kirjutus) ja lib/smaily/sync-tenant.ts (keele-lokaliseerimine, link_path = URL ilma skeemi/domeeni/alguskaldkriipsuta). Lingi smaily_rec parameeter on omistamise signaal. Spec §8.5. Mootori käivitatavad automatsioonid: trigeri-kataloog lib/automations/catalog.ts; kirjade sisu-spec docs/AUTOMATION_EMAILS_SPEC.md.

Viimati uuendatud: 2026-07-12