Creating a tracking pixel for email opens

I’m trying to build an app that allows companies to see who opened the emails they send through the app. I currently use postmark to send emails but their API, unfortunately, does not allow me to differentiate between companies which means companies could see all opens by an email regardless if the recipient is in their database or from another company database.

The easiest solution would be having a tracking pixel directly in my bubble app where I can change the URL depending on which company sent the email and read that data directly. Unfortunately as Bubble uploads everything to the AWS bucket I can’t seem to figure out a way how to access that data. Maybe some of you have a better way of doing it and can help me?

Thank you!

So the ‘traditional’ way of doing this would be to put a hidden image (or doesn’t have to be hidden I guess - could be a logo or something) in the body of the email. Though this image would need to be unique to each email that goes out and then you’re just watching to see whether that image is pulled from the server or not.

I can’t really think of how you’d achieve this in Bubble. The only way I can think of you doing this is to embed a dynamic iFrame in the emails. Although that’s one way to ensure your emails end up in the spam box so probably not a great idea.

I think you’re going to need to look at some non-bubble options to make this work. Like using your own AWS S3 bucket and using analytics to get the data out that you need.


Josh @ Support Dept
Helping no-code founders get unstuck fast :rocket:save hours, & ship faster with an expert :man_technologist: on-demand

Thanks, I was expecting this to be the answer.

@paul.karrmann Were you able to solve this? I’m stuck on the same issue.

@saviorabrams you actually can’t really solve this simply through bubble as their is no way that I could find (besides maybe getting a dedicated server) to get the server data for a page opening.

My solution at the end was using postmark and their API to track mails and link opens and it works quite well, it just sucks because of GDPR compliance. The only other way I see is to create a website where you ow the server and link it back to bubble through webhooks.

1 Like

Thanks for this @paul.karrmann, I’m sure this is going to take me a few days to experiment.

How were you able to differentiate between companies, and show the proper data?

I created a music PR software, so I want to show teams the data (open and clicks) for a specific campaign.

Any examples or guidance here would be appreciated :slight_smile:

I’m using the Postmark bubble plugin and sending html emails, everything works great. I’m guessing I might need to send these emails via the API Connector?

I’ve been stuck on this problem for quite some time.

I know this thread is old but just in case anyone stumbles across this. This is how I solved the issue that the OP was running into. I simply created a backend workflow and placed the API endpoint URL with any query string params for tracking into the src of the img tag. This img tag is added to the email and is fired whenever the email is opened and the image is loaded. You can then do whatever logic you need within the backend workflow (adding to the database, validating query strings, etc…). Keep in mind this is not a surefire way of tracking email opens due to the many measures modern email clients take in regard to security, plus the image needing to load and user could have images turned off etc… but should get the job done if you have no other options.

1 Like

I was able to solve this using Postmark’s API, created a webhook for opens & clicks, and connected that data to Bubble via backend workflow. Worked like a charm. Now, I’m able to show users this activity in real time.

I struggled for months trying to figure this out and saw a handful of posts trying to accomplish this.

My schedule has been hectic, but I might put together a video lesson for this to help others.

Nice… I tried to create a solution that was completely within Bubble and did not require any outside API or additional charges.

It’ll be great if you can make a video of your solution Saviora. Thank you for your update.

Hello! This is exactly what I’m trying to do. Do you mind sharing how you did this? A quick video or walkthrough would be a huge help. All the best.