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äli | Sisu |
|---|---|
rec_N_sku | tootekood; tühi = slotti pole (kasuta seda tingimusena) |
rec_N_name | tootenimi kliendi keeles |
rec_N_description | lühikirjeldus (max 200 tm) |
rec_N_price | hind |
rec_N_compare_price | võrdlushind allahindluse näitamiseks (võib olla tühi) |
rec_N_image_url | tootepilt |
rec_N_link_url | täielik tootelink koos jälgimisparameetritega |
rec_N_link_path | sama link ILMA domeenita (vt lingi-muster all) |
rec_N_headline | valmis pealkirjafraas |
rec_N_cta | valmis nupusõnastus |
rec_N_reason | inimloetav 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_pathsisaldab juba kogu teed ja jälgimisparameetreid (shsmaily_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_pathon 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}}€</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}}€</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ähemalt
</a>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
{% endif %}
Analüütika-väljad kontaktil
| Väli | Sisu |
|---|---|
rec_segment | segment |
rec_engagement_state / rec_engagement_trajectory | seisund ja suund |
rec_days_to_replenish / rec_replenish_sku / rec_predicted_next_replenish_at | taastäitumine |
rec_discount_tier_suggested | soovituslik soodustase (0/5/10/15) selle kliendi tundlikkuse järgi |
rec_loyalty_brand_top / rec_loyalty_score | lemmikbränd ja lojaalsus |
rec_preferred_send_window | kliendi parim saatmisaken |
rec_active_triggers | hetkel aktiivsed põhjused, komadega (vt väärtuste loend all) |
rec_subject_hook / rec_subject_hook_type | valmis teemarea-haak ja selle liik |
rec_last_sync_at / rec_engine_version | millal andmed värskendati |
language | Smaily 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äärtus | Tähendus |
|---|---|
cadence_window_reached | korduvtoode hakkab ennustuse järgi otsa saama |
dormant_to_clicker | kaua vaikinud klient klikkis jälle kirjas |
life_stage_transition_due | lemmik läheb üle uude vanuseastmesse (ainult lemmikloomapoed) |
category_first_purchase | esmakordne ost kategoorias |
purchase_in_category | hiljutine ost, mille kõrvale pakkuda sobivaid tooteid |
stock_status_change | asjakohase toote laoseis muutus |
aov_below_free_shipping_threshold | korv jääb napilt alla tasuta saatmise piiri |
seasonal_window_open | avanes 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 (nt12.90) — lisa€ise mallis. rec_discount_tier_suggestedon täisarv tekstina (0/5/10/15). Ehita mall nii, et0ei näita ühtki soodustusblokki: peale klientide, kes ostavad ka ilma soodustuseta, hoiab mootor väikest kindlat osa (~10%) kontaktidest teadlikult0-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_statemuutub väärtusekslapsed; soodustuse suuruse võta väljastrec_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
- 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 koodidegaWB5/WB10/WB15— loo need koodid poes, kui ploki alles jätad.) - 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.
- 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.
- 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):
| Andmed | Millal värskeneb |
|---|---|
Soovitusslotid (rec_N_*), kõik rec_* analüütika ja teemarea-haak | Arvutab ö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 language | Sama ö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