Kalo te dokumentacioni
Python

Gjurmimi i hapjeve dhe i klikimeve

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

Një mesazh i vetëm

tracking.py
from openemail import openemail report = openemail.emails.get_tracking('msg_…') print(report['openCount'], 'opens from', len(report['recipients']), 'recipients')for link in report['links']:    print(link['url'], link['clickCount'])

Një mesazh që nuk u gjurmua kurrë ngre një OpenEmailApiError is_not_found 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.py
import time from openemail import openemail openemail.tracking.list(opened=False, days=7, limit=100)openemail.tracking.get_stats(days=30, offset_minutes=time.localtime().tm_gmtoff // 60)openemail.tracking.get('msg_…')openemail.tracking.list_opens('msg_…', include_machine=True)openemail.tracking.list_clicks('msg_…')

list, list_opens dhe list_clicks kthejnë një faqe, {'items': [...], 'hasMore': ..., 'nextCursor': ...}, dhe list_all, iterate, list_all_opens, iterate_opens, list_all_clicks dhe iterate_clicks përshkojnë të gjitha faqet për ju. get, list_opens dhe list_clicks pranojnë qoftë id-në e dërgimit msg_…, qoftë tmsg_… të 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.
openCountGoditje 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%.
attributableNëse një lexim mund t'i atribuohet fare një marrësi të emërtuar.

Shkallët nga tracking.get_stats 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

openedbool
`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ë.
clickedbool
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.
daysint
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.
limitint
Raporte për faqe, nga 1 deri në 200 dhe me parazgjedhje 50, më të rejat të parat. Kthejeni `nextCursor` e faqes si `cursor`, me të njëjtat filtra, për faqen tjetër, ose lërini `list_all` dhe `iterate` ta përshkojnë gjithë dritaren.

Përgjigjja: TrackingResource

objectLiteral['tracking']
Gjithmonë `'tracking'` te një raport i marrë më vete, përmes `tracking.get`, `tracking.list` ose `emails.get_tracking`. 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.
idstr
Id-ja e vetë regjistrit të gjurmimit, `tmsg_…`. Është ajo mbi të cilën janë të çelësuara thirrjet për çdo goditje, `list_opens` dhe `list_clicks`; një `msg_…` i dhënë atyre zgjidhet fillimisht në këtë.
sendIdstr | None
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ë.
threadIdstr | None
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.
messageIdstr | None
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.
subjectstr | None
Subjekti ashtu siç ishte në kohën e dërgimit. Null te një mesazh i regjistruar pa të.
fromstr
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 | str
Cila sipërfaqe e dërgoi: `composer`, `api`, `mcp`, `ai`, `oauth` ose `form`. E tipizuar hapur, kështu që një sipërfaqe që kjo SDK nuk e emërton ende nuk është një ndryshim prishës.
sentAtstr | None
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.
opensbool
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.
clicksbool
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.
openedbool
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.
clickedbool
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.
attributablebool
Nëse çdo lexim këtu mund t'i atribuohet një marrësi të emërtuar. False në çastin kur një kopje e paatribuuar 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ë".
openCountint
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.
clickCountint
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.
openCountRawint
Ç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.
clickCountRawint
Çdo vizitë te një lidhje e rishkruar, përfshirë goditjet e makinave dhe përsëritjet.
firstOpenAtstr | None
Hapja e numëruar më e hershme mbi kopjet, dhe null përderisa nuk ka asnjë. Goditjet e makinave nuk e lëvizin kurrë.
lastOpenAtstr | None
Hapja e numëruar më e fundit mbi kopjet, null përderisa nuk ka asnjë.
firstClickAtstr | None
Klikimi i numëruar më i hershëm mbi kopjet, null përderisa nuk ka asnjë.
lastClickAtstr | None
Klikimi i numëruar më i fundit mbi kopjet, null përderisa nuk ka asnjë.
recipientslist[TrackingRecipientResource]
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[].emailstr | None
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[].kindRecipientKind | None
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[].attributedbool
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[].openCountint
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[].clickCountint
Klikime të numëruara vetëm mbi këtë kopje, të deduplikuara për lidhje dhe jo për kopje.
recipients[].firstOpenAtstr | None
Hapja e numëruar më e hershme mbi këtë kopje, null përderisa nuk ka asnjë.
recipients[].lastOpenAtstr | None
Hapja e numëruar më e fundit mbi këtë kopje, null përderisa nuk ka asnjë.
recipients[].firstClickAtstr | None
Klikimi i numëruar më i hershëm mbi këtë kopje, null përderisa nuk ka asnjë.
recipients[].lastClickAtstr | None
Klikimi i numëruar më i fundit mbi këtë kopje, null përderisa nuk ka asnjë.
linkslist[TrackingLinkResource]
Ç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[].idstr
Id-ja e vetë lidhjes, `lnk_…`. Është vlera që emërton `linkId` i një rreshti klikimi, kështu që një goditje nga `list_clicks` mund të përputhet mbrapsht me hyrjen këtu.
links[].urlstr
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[].labelstr | None
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[].clickCountint
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[].clickCountRawint
Çdo vizitë te kjo lidhje, përfshirë goditjet e makinave dhe përsëritjet.

Referencë