Kalo te dokumentacioni
SDK

Gjurmimi i hapjeve dhe i klikimeve

`emails.getTracking` dhe i gjithë burimi `tracking`.

Një mesazh i vetëm

tracking.ts
const report = await openemail.emails.getTracking('msg_…') console.log(report.openCount, 'opens from', report.recipients.length, 'recipients')for (const link of report.links) console.log(link.url, link.clickCount)

Një mesazh që nuk u gjurmua kurrë hedh një OpenEmailApiError isNotFound i të cilit është true, jo një raport bosh. "Nuk regjistruam asgjë" dhe "askush nuk e hapi" janë përgjigje të ndryshme dhe nuk duhet të ndajnë të njëjtën përgjigje.

Në të gjithë kutinë postare

tracking-report.ts
await openemail.tracking.list({ opened: false, days: 7, limit: 100 })await openemail.tracking.getStats({ days: 30, offsetMinutes: -new Date().getTimezoneOffset() })await openemail.tracking.get('msg_…')await openemail.tracking.listOpens('msg_…', { includeMachine: true })await openemail.tracking.listClicks('msg_…')

list, listOpens dhe listClicks japin array-e të thjeshta. get, listOpens dhe listClicks pranojnë ose id-në e dërgimit msg_…, ose tmsg_… e vetë regjistrit të gjurmimit.

Një burim më vete dhe jo fusha mbi emails, dhe arsyeja është mbulimi: emails liston regjistrat e dërgimit, të cilët ekzistojnë vetëm për mail-in që e trajtoi ky API. Kompozuesi, mjetet MCP dhe asistenti dërgojnë të gjithë pa një të tillë, pra një raport i ndërtuar mbi emails do të ishte një raport mbi trafikun tuaj të API-së dhe jo mbi kutinë postare.

Si t'i lexoni numrat me ndershmëri

ÇiftiÇfarë do të thotë
`opens` / `clicks`Çfarë U ZBATUA: nëse mesazhi u nis me një piksel ose me lidhje të rishkruara.
`opened` / `clicked`Çfarë ndodhi.
`openCount`Goditje të numëruara. Skanuesit dhe proxy-t e privatësisë përjashtohen.
`openCountRaw`Çdo goditje. Citimi i kësaj si angazhim është mënyra se si një shkallë hapjeje kalon 100%.
`attributable`Nëse një lexim mund t'i atribuohet fare një marrësi të emërtuar.

Shkallët nga tracking.getStats janë mbi mesazhet e GJURMUARA, kurrë mbi gjithçka të dërguar. Përndryshe një kuti postare që gjurmon një mesazh nga dhjetë do të dukej sikur është shembur.

Parametrat: tracking.list

openedboolean
`true` zgjedh mesazhet me të paktën një hapje të numëruar, `false` zgjedh mesazhet e gjurmuara pa asnjë. Asnjëri nuk është parazgjedhje, dhe `false` nuk do të thotë kurrë mail i pagjurmuar, i cili nuk shfaqet fare në këtë listë.
clickedboolean
I njëjti filtër për klikimet e numëruara, i zbatuar në mënyrë të pavarur nga `opened`. Të dy mund të jepen, dhe mesazhet duhet t'i plotësojnë të dy.
daysnumber
Sa ditë prapa nga tani të shihen, nga 1 deri në 365 dhe me parazgjedhje 30; jashtë atij intervali është një 422. Dritarja matet mbi kohën kur u krijua regjistri i gjurmimit, dhe listohen vetëm regjistrat, dërgimi i të cilëve ka dalë vërtet.
limitnumber
Më së shumti kaq mesazhe, nga 1 deri në 200 dhe me parazgjedhje 50, më të rejat të parat. Nuk ka cursor: ky është një raport mbi një dritare dhe jo një rrjedhë, pra kufizohet nga `days` dhe `limit` dhe lexohet i tëri.

Përgjigjja: TrackingResource

object'tracking'
Gjithmonë `'tracking'` te një raport i marrë më vete, përmes `tracking.get`, `tracking.list` ose `emails.getTracking`. I njëjti raport i ndërthurur si `email.tracking` te një mesazh i marrë mbërrin pa këtë çelës, sepse atje ai është pjesë e atij objekti dhe jo diçka që u mor.
idstring
Id-ja e vetë regjistrit të gjurmimit, `tmsg_…`. Është ajo mbi të cilën janë të çelësuara thirrjet për çdo goditje, `listOpens` dhe `listClicks`; një `msg_…` i dhënë atyre zgjidhet fillimisht në këtë.
sendIdstring | null
Dërgimi `msg_…` me të cilin korrelon ky, dhe null aty ku nuk u shkrua asnjë regjistër dërgimi. Kompozuesi, `sendEmail` i MCP-së dhe asistenti dërgojnë të gjithë pa një të tillë. Gjurmimi mbulon kutinë postare, jo vetëm trafikun e API-së.
threadIdstring | null
Mbushet pas transmetimit që një ndërfaqe leximi ta gjejë sërish mesazhin, dhe null aty ku driver-i nuk raportoi asnjë. Jo thelbësor: një regjistër me të null numërohet gjithsesi.
messageIdstring | null
Message-ID sipas RFC 5322, jo id-ja jonë. Edhe ky mbushet pas transmetimit, dhe është null aty ku transporti nuk ktheu asgjë për ta mbushur.
subjectstring | null
Subjekti ashtu siç ishte në kohën e dërgimit. Null te një mesazh i regjistruar pa të.
fromstring
Adresa dërguese, e kopjuar mbi regjistrin në vend që të bashkohet nga dërgimi. Raportet lexohen shumë kohë pas ngjarjes, dhe një adresë e korrigjuar ose e hequr që atëherë do ta rishkruante historinë.
sourceEmailSource | (string & {})
Cila sipërfaqe e dërgoi: `composer`, `api`, `mcp`, `ai` ose `queue`. E tipizuar hapur, kështu që një sipërfaqe që kjo SDK nuk e emërton ende nuk është një ndryshim prishës.
sentAtstring | null
Kur u nis mesazhi, si një çast ISO-8601. Null te një regjistër dërgimi i të cilit nuk përfundoi kurrë. `tracking.list` i përjashton ata, `get` jo.
opensboolean
Nëse mbi këtë mesazh U ZBATUA një piksel. Kjo është ajo që u bë, jo ajo që thotë cilësimi i llogarisë tani.
clicksboolean
Nëse lidhjet e këtij mesazhi u rishkruan. False kur trupi nuk mbante asnjë lidhje, sepse atëherë nuk u ndryshua asgjë dhe një regjistër që pretendon të kundërtën nuk do të pajtohej me bajtet.
openedboolean
Nëse u regjistrua ndonjë hapje e numëruar mbi kopjet. Lexojeni përballë `opens`: mungesa e të dhënave sepse nuk u mblodh asnjë është një fakt tjetër nga fakti që askush nuk e ka lexuar mesazhin.
clickedboolean
Nëse u regjistrua ndonjë klikim i numëruar. Provë më e fortë se një hapje, meqë imazhet bllokohen shumë më shpesh se sa lihen pa u ndjekur lidhjet.
attributableboolean
Nëse çdo lexim këtu mund t'i atribuohet një marrësi të emërtuar. False në çastin kur një kopje e paatribuueshme shfaq veprimtari të numëruar, që është rasti me shumë marrës ku një trup i vetëm shkon te e gjithë lista nën një token të vetëm, pra kontrollojeni para se të shkruani "Bob nuk e ka hapur këtë".
openCountnumber
Hapje që besohet se i shkaktoi një person, të mbledhura mbi kopjet. Goditjet e makinave përjashtohen dhe përsëritjet brenda tridhjetë sekondave bashkohen në një, pra kjo është shifra që duhet vënë para një lexuesi.
clickCountnumber
Klikime të numëruara, të mbledhura mbi kopjet. Të deduplikuara për lidhje dhe jo për mesazh, pra dy lidhje të ndryshme të ndjekura me disa sekonda diferencë janë dy klikime.
openCountRawnumber
Çdo marrje e pikselit, përfshirë skanuesit dhe proxy-t e privatësisë. `openCountRaw - openCount` është sa prej tyre i la mënjanë klasifikuesi, dhe e vetmja provë e disponueshme se filtrimi ndodhi fare.
clickCountRawnumber
Çdo vizitë te një lidhje e rishkruar, përfshirë goditjet e makinave dhe përsëritjet.
firstOpenAtstring | null
Hapja e numëruar më e hershme mbi kopjet, dhe null përderisa nuk ka asnjë. Goditjet e makinave nuk e lëvizin kurrë.
lastOpenAtstring | null
Hapja e numëruar më e fundit mbi kopjet, null përderisa nuk ka asnjë.
firstClickAtstring | null
Klikimi i numëruar më i hershëm mbi kopjet, null përderisa nuk ka asnjë.
lastClickAtstring | null
Klikimi i numëruar më i fundit mbi kopjet, null përderisa nuk ka asnjë.
recipientsTrackingRecipientResource[]
Një hyrje për çdo kopje të gjurmuar: një për marrës aty ku transporti lejon që bajtet të ndryshojnë për çdo person, dhe një hyrje e vetme e përbashkët aty ku nuk e lejon. Hyrja e përbashkët hiqet veç nëse mbi të ka rënë vërtet diçka, kështu që një rresht "dikush" i paprekur nuk rri kurrë krah emrave të vërtetë.
recipients[].emailstring | null
Te kush shkoi kjo kopje, me shkronja të vogla dhe ashtu siç ishte në kohën e dërgimit. Null pikërisht kur `attributed` është false.
recipients[].kind'to' | 'cc' | 'bcc' | null
Te cili header u shfaq adresa, që raporti të lexohet ashtu siç lexohej mesazhi. Null te kopja e përbashkët, e cila nuk i përket asnjë adrese.
recipients[].attributedboolean
Nëse ky rresht emërton një person. Lexojeni para `email`: false është kopja e përbashkët, e listuar sapo bie mbi të ndonjë goditje, dhe vënia e një emri mbi atë goditje, qoftë edhe te një mesazh me një marrës të vetëm, do të shpikte të vetmin fakt që mekanizmi nuk mund ta japë.
recipients[].openCountnumber
Hapje të numëruara vetëm mbi këtë kopje, nën të njëjtat përjashtime si totali i mesazhit: goditjet e makinave hiqen, dhe përsëritjet brenda tridhjetë sekondave bashkohen në një.
recipients[].clickCountnumber
Klikime të numëruara vetëm mbi këtë kopje, të deduplikuara për lidhje dhe jo për kopje.
recipients[].firstOpenAtstring | null
Hapja e numëruar më e hershme mbi këtë kopje, null përderisa nuk ka asnjë.
recipients[].lastOpenAtstring | null
Hapja e numëruar më e fundit mbi këtë kopje, null përderisa nuk ka asnjë.
recipients[].firstClickAtstring | null
Klikimi i numëruar më i hershëm mbi këtë kopje, null përderisa nuk ka asnjë.
recipients[].lastClickAtstring | null
Klikimi i numëruar më i fundit mbi këtë kopje, null përderisa nuk ka asnjë.
linksTrackingLinkResource[]
Çdo lidhje që u rishkrua në këtë mesazh, e renditur sipas vendit ku ndodhej në trup. Bosh aty ku nuk pati asnjë: një mesazh i dërguar me `clicks` të fikur, ose një trupi i të cilit nuk mbante fare lidhje.
links[].idstring
Id-ja e vetë lidhjes, `lnk_…`. Është vlera që emërton `linkId` i një rreshti klikimi, kështu që një goditje nga `listClicks` mund të përputhet mbrapsht me hyrjen këtu.
links[].urlstring
Ku shkon vërtet lidhja, ashtu siç ishte te mesazhi para rishkrimit. Ridrejtuesi e zgjidh një id mbrapsht në këtë dhe e çon vizitorin më tej.
links[].labelstring | null
Teksti i lidhjes ashtu siç u shfaq te mesazhi, ose null aty ku lidhja nuk kishte, si te një imazh ose një URL e zhveshur. Është aty që një raport të mund të thotë "lidhja e çmimeve" në vend që të citojë një URL me tre parametra gjurmimi mbi të, dhe nuk e zëvendëson kurrë `url`.
links[].clickCountnumber
Vizita të numëruara te kjo lidhje, të mbledhura mbi kopjet. E njëjta dritare tridhjetësekondëshe për lidhje si te `clickCount` i mesazhit.
links[].clickCountRawnumber
Çdo vizitë te kjo lidhje, përfshirë goditjet e makinave dhe përsëritjet.