<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Михаил Брайковский</title>
    <description>The latest articles on DEV Community by Михаил Брайковский (@__f20721).</description>
    <link>https://dev.to/__f20721</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3721333%2Fa88a24b6-1a46-46cd-b688-249ee8c8701d.jpg</url>
      <title>DEV Community: Михаил Брайковский</title>
      <link>https://dev.to/__f20721</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/__f20721"/>
    <language>en</language>
    <item>
      <title>How to track email opens and clicks via API (without the CRM bloat)</title>
      <dc:creator>Михаил Брайковский</dc:creator>
      <pubDate>Tue, 20 Jan 2026 09:54:06 +0000</pubDate>
      <link>https://dev.to/__f20721/how-to-track-email-opens-and-clicks-via-api-without-the-crm-bloat-4pc</link>
      <guid>https://dev.to/__f20721/how-to-track-email-opens-and-clicks-via-api-without-the-crm-bloat-4pc</guid>
      <description>&lt;p&gt;Hi everyone! 👋&lt;/p&gt;

&lt;p&gt;I wanted to share a project I've been working on: Trackkit.&lt;/p&gt;

&lt;p&gt;The Problem&lt;br&gt;
Most email tracking solutions are either tied to a specific provider (like SendGrid/Postmark) or require heavy CRM SDKs. I wanted something provider-agnostic and lightweight that works via a simple HTTP API.&lt;/p&gt;

&lt;p&gt;The Solution: Trackkit&lt;br&gt;
I built Trackkit to give developers full control over their email interaction data without the overhead. You can use it with any SMTP server or even personal mail.&lt;/p&gt;

&lt;p&gt;Quick PHP Integration Example&lt;br&gt;
Here is how easy it is to create a tracked message and get your metadata:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Initialize CURL request&lt;/span&gt;
&lt;span class="nv"&gt;$ch&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;curl_init&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'https://api.trackkit.io/message/create'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nb"&gt;curl_setopt_array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$ch&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="no"&gt;CURLOPT_POST&lt;/span&gt;           &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="no"&gt;CURLOPT_RETURNTRANSFER&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="no"&gt;CURLOPT_HTTPHEADER&lt;/span&gt;     &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="s1"&gt;'Authorization: Bearer YOUR-API-KEY'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// Use your API-key&lt;/span&gt;
        &lt;span class="s1"&gt;'Content-Type: application/json'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="no"&gt;CURLOPT_POSTFIELDS&lt;/span&gt;     &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;json_encode&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
        &lt;span class="s1"&gt;'recipient'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'user@example.com'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s1"&gt;'subject'&lt;/span&gt;   &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Order #12345 Confirmation'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;]),&lt;/span&gt;
&lt;span class="p"&gt;]);&lt;/span&gt;

&lt;span class="nv"&gt;$response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;curl_exec&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$ch&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nv"&gt;$data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;json_decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$response&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Extract tracking metadata&lt;/span&gt;
&lt;span class="nv"&gt;$token&lt;/span&gt;       &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'token'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="nv"&gt;$pixelUrl&lt;/span&gt;    &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'tracking_pixel'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="nv"&gt;$linkPrefix&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'link_prefix'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="nv"&gt;$messageUuid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'message_uuid'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt; &lt;span class="c1"&gt;// Store this in your DB to link events&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Key Technical Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;No SDKs: Pure HTTP/CURL. Works with PHP, Node.js, Python, Go, etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;HMAC-Signed Webhooks: Securely verify that data is coming from us.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Smart Bot Filtering: We filter out pre-fetches from Gmail and Outlook to keep your analytics clean.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Privacy First: We don't store your email content, only the tracking events.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Feedback Welcome!&lt;br&gt;
I just launched the beta and I'm looking for feedback on the API design and documentation.&lt;/p&gt;

&lt;p&gt;Check it out here: &lt;a href="https://trackkit.io" rel="noopener noreferrer"&gt;https://trackkit.io&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'll be in the comments to answer any questions!&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>api</category>
      <category>php</category>
    </item>
  </channel>
</rss>
