Both carry the same events, in the same envelope: the same
id, type, created_at and data. A sync can mix them — receive webhooks, and read the log after an outage to fill the gap.
Read the event log
The first time, start from a date:limit), with the usual pagination. Keep the id of the last event you handled: next time, ask for what comes after it.
What the log guarantees:
- In the order TIKT wrote them, and never one skipped: an event appears only once everything written before it is complete. The price is a delay of a few seconds at most.
- 180 days of history.
lead.matched(a workflow match) is in the log; test events are not. datais the object as it is now, like a resend: a lead read today has today’s score.
Follow new engagements
To know who engaged with which post — every reaction and comment of your leads — read the engagement feed, oldest first, from a date:{ "lead_id", "signal" }: the lead, and the engagement with its post and tracked profile. Filter with kol_id, post_id, or kind (reaction, comment, reply). Only engagements of your leads are there, never those of people who aren’t.
Example: keep a CRM up to date
A scenario that runs every 15 minutes:- Read the bookmark you saved last time — the
idof the last event handled. GET /v1/events?after=<bookmark>&type=lead.created,lead.status_changed,list.lead_added, page after page untilhas_moreisfalse.- For each event, in order:
lead.created→ create the contact fromdata.lead.personanddata.lead.company;lead.status_changed→ when the lead was discarded, mark the contact;list.lead_added→ tag the contact with the list’s name.
- Save the
idof the last event as the new bookmark — only after the CRM has accepted the changes, so a failed run starts again from the same place.
POST /v1/lists/{id}/leads — see Respond to TIKT in the n8n, Make, Zapier and Clay guides.