
Launch HN: Freshpaint (YC S19) – an automated, retroactive Segment alternative - malisper
Hello HN!<p>We’re Fitz &amp; Malis, the founders of Freshpaint (YC S19) (<a href="https:&#x2F;&#x2F;www.freshpaint.io&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.freshpaint.io&#x2F;</a>). Our product is a more flexible way of setting up your analytics and marketing tools.<p>With our javascript snippet, Freshpaint automatically instruments your site by tracking every behavior for you, up front. From there, you can create events for behaviors like clicks, pageviews, etc either through a point-and-click interface or code (whichever you’re more comfortable with). In one click, Freshpaint sends data collected for that event – past or present – to 80+ analytics or marketing tools.<p>What does retroactive mean? Install Freshpaint’s snippet today. In 6 months start tracking something new, and you&#x27;ll have the last 6 months worth of data that our product has already collected. We make it easy to backfill that historical data into your tools.<p>There’s two types of people that get the most value out of Freshpaint:<p>1. The developer that owns data infrastructure at their company, and wants to lighten the load through automation.<p>2. The non-technical marketer&#x2F;customer success&#x2F;PM (or founder!) that makes use of the tools that require customer data.<p>We both met while working at Heap (YC W13) – Malis led the database team and Fitz led product marketing. When starting Freshpaint, we were inspired by a phenomenon we saw while working with customers at Heap. Even though they used Heap for analytics, we kept seeing companies also writing tracking code for each behavior they wanted to use in other tools, either with a routing service like Segment and mParticle or building direct implementations and their own pipelines. Across analytics, product, and marketing it was common to see a dozen tools that required the same data including tools like Hubspot, Intercom, Fullstory, advertising platforms, data warehouses, and more.<p>Let’s say you want to see how many users clicked your signup button or played a song in your analytics tools. Or you want to take the users who added an item to their cart and engage them in an automated marketing campaign. First, you have to write code to collect and log each behavior that you want to track. Then you have to send it to your marketing and analytics tools.<p>This requires a massive engineering effort and it’s distracting to maintain (it’s not uncommon to delay shipping a new feature by 2-3 weeks because of this tax). If you didn’t track something or made a mistake, that data is lost forever.<p>Developers have to do a bunch of work that (1) is not core product development, and (2) they often aren’t the ones to get value from that work because they’re not the end users of this data. Flip this problem around and you have marketers and PMs that are slowed or blocked from their work, and have to distract developers to get unblocked.<p>This is painful for multiple teams. Fitz experienced this a few years back as part of the growth team at Quantcast, and he always had to work with engineering to instrument what he needed to trigger marketing flows and or get analytics telemetry on his experiments.<p>We built Freshpaint to lighten the load and streamline the workflow for both groups. How it works:<p>1. Install Freshpaint’s javascript snippet on your site. It takes 60 seconds, and from that point Freshpaint collects every behavior like clicks, pageviews, etc.<p>2. Connect destinations like Google Analytics, Amplitude, Hubspot, Fullstory, Intercom, and a data warehouse. This is done by copying and pasting an API key or account ID. Complete integrations list here: <a href="https:&#x2F;&#x2F;www.freshpaint.io&#x2F;integrations" rel="nofollow">https:&#x2F;&#x2F;www.freshpaint.io&#x2F;integrations</a>. We plan to build more so let us know what you’d like to see.<p>3. Create events for clicks, pageviews, form submissions, and more from data in Freshpaint. Create events thru code or point-and-click in our UI. Data is retroactively available back to the day you installed Freshpaint, regardless of when the event is created. We also support manual tracking and server-side tracking.<p>4. Send data to the destinations we support in one click. You can even backfill past data that Freshpaint has collected.<p>We&#x27;re eager to hear your feedback, since we know HN has a ton of members who are familiar with this space from all different perspectives!
======
jamesmcintyre
From my experience working with both Segment and mParticle (and tons of tools
they integrate with) this is definitely a need and a great idea!

My only advice would be to focus your primary messaging closer to that primary
value prop. I can see how it probably took many iterations to get to
“Codelessly connect your site to your stack.” But I’d guess that the concept
of ‘codelessly’ won’t be as exciting to people with the problems you’re
solving as something like “Capture all data for today’s needs AND tomorrows.
It’s like time travel.” Or “A time traveling, no-code analytics tool for the
future.”, “The world’s first time traveling analytics tool.”, “Future-proof
your analytics with the world’s first time-traveling analytics tool.”

One other customer acquisition idea- many co’s will already have
segment/mparticle and if they’re opening communication with you then that
likely means they want something better but it takes a surprising amount of
work to integrate segment/mparticle with many marketing tools so I’d offer
some sort of onboarding assistance if you can otherwise they won’t want to
take the risk of embarking on them migration.

Great idea, good luck!

------
codegeek
Curious. Since you both worked at Heap before, is there a potential conflict
of interest or Non-compete that you may have/had to worry about ? I don't know
the details of Heap or Segment but I am assuming this service is similar to
them if not closer ?

~~~
malisper
We're a Segment competitor, not a Heap competitor (we actually support Heap as
a destination). A significant number of Heap's users use both Segment and
Heap. That's actually one of the big reasons we started Freshpaint. A lot of
people would buy Heap for product analytics, but they would still setup manual
event tracking for Segment for their other tools. We started Freshpaint so you
won't need to setup event tracking at all.

------
jamiequint
I don't have any specific context on this company so won't comment on their
offering compared to that of Segment, but I do find the "collect everything"
approach to be generally bad and undesirable.

What I want, past any sort of reasonable business scale, is a constrained set
of specific events that I have explicitly decided that I want to track. I then
want those events to be well documented and well QA'd. The approach of "here
we tracked everything for you, now just sort through it" is great if you only
want to serve small companies who just don't want to do the work to be more
intentional about their data, but at any sort of reasonable scale of people
touching data this becomes a recipe for disaster.

~~~
malisper
Freshpaint works like:

> What I want, past any sort of reasonable business scale, is a constrained
> set of specific events that I have explicitly decided that I want to track.

and not like:

> here we tracked everything for you, now just sort through it

We collect everything for you behind the scenes, but we will only surface a
piece of data if you explicitly ask for it.

This is similar to undo in a text document. While you're editing a document,
the entire history is tracked behind the scenes. You don't ever need to pay
attention to all of that data unless you explicitly use the undo feature.

------
alentodorov
This absolutely brilliant. Been using Segment for multiple project on over 1m
MTUs and now at a B2B SaaS where we simply can’t invest in writing events for
every interaction. You’ve perfectly captured our/my pain.

------
soumyadeb
I remember seeing you guys sometime back on Show HN. Any change in your
product positioning since then? Any learnings from customers?

[https://news.ycombinator.com/item?id=21973458](https://news.ycombinator.com/item?id=21973458)

Congrats on building this. This is awesome and much needed.

------
mrwnmonm
Sorry, I am not very old :), but I didn't follow up with the tools. I don't
know anything other than Google Analytics. So could you please explain as you
would explain to a child what those tools do more than GA?

~~~
malisper
Fitz wrote a blog post on the analytics and marketing tools we recommend
startups use [0]. It goes through a number of the different tools and why or
why not you would want to use them. You should check it out.

[0] [https://www.freshpaint.io/blog/yc-stack-recommendations-
for-...](https://www.freshpaint.io/blog/yc-stack-recommendations-for-growth-
analytics-and-marketing-tools-for-2020-yc-startups)

~~~
mrwnmonm
Thanks <3

------
ThePhysicist
I always found it interesting that YC will fund competitors of existing
portfolio companies, but I guess it might make sense from various angles as
they increase the chance that one of their funded companies will make it big,
and it will probably stimulate innovation.

I wonder though how they handle the potential conflict of interest as I
imagine they get updates from both companies and might be asked for advice by
both as well.

Regarding the product I think it’s interesting but if retroactive event
streaming is the only USP I think that should be easy to reproduce for
Segment. Also, I really like that Segment started taking privacy a bit more
serious by introducing their privacy hub. Freshpaint is probably not compliant
with GDPR as of now, I guess as they’re focused on the US market that might
not matter much though.

~~~
malisper
We didn't apply to YC with the idea of Freshpaint. We were initially a
Postgres performance optimization tool.

> but if retroactive event streaming is the only USP I think that should be
> easy to reproduce for Segment

Retroactivity has been the main differentiator between Heap and it's
competitors for seven years now. None of them have been able to successfully
copy it yet. Mixpanel launched an autotrack feature, but later shut it down.

> Freshpaint is probably not compliant with GDPR as of now

We are GDPR compliant. In fact, Fitz helped form an industry working group on
GDPR with the IAB while working at Quantcast a year ahead of GDPR coming into
effect.

~~~
slap_shot
Can you speak to the architecture at all? e.g. an event hits Freshpaint, and 3
months later is is qualified as a defined "event" to be forwarded to 3
destinations - how does it happen?

I ask because I saw your previous comments and saw that 1) you're an expert at
optimizing PostgreSQL, and 2) you said that Heap was harder to build because
of the queries that users can define in the frontend.

So basically, are you able to leverage PostgreSQL to build something like
Freshpaint? I would imagine it is prohibitively expensive to store your event
data in PostgreSQL if it's sole purposed is to be categorized and forwarded to
other destinations, vs. being queried like it was in Heap.

Amazing work and best of luck!

~~~
polote
They probably store the XPath of each click, and when an event with the same
XPath is created they browse through all the past click with this specific
XPath

~~~
slap_shot
Of course. But my question pertains _how_ the event data is stored. Heap
stored the event data in Citus, and OP worked to optimize their PostgreSQL for
queries across the data. Freshpaint doesn't query the data (in the aggregate
form that Heap does), it simply needs to find events that qualify as defined
events and forward them to their destinations.

I'm just asking if PostgreSQL is still the right tool for that.

------
dzalexin
I've been using Freshpaint for a few months and really enjoyed it because it's
an end-to-end solution. While i's not fully "code-less", it did speed up our
analytics deployment process by _weeks_. I'd highly recommend it to people who
are semi-technical (i.e. you know how to code but would rather someone else
did it for you). Also support has been tremendous and their release pipeline
looks very impressive.

------
vosper
How does the point and click UI generate event targets? At my work we use
Pendo which sounds very similar to Freshpaint. Pendo’s UI generates CSS
selectors. Problem is that we use CSS modules and our class names include a
hash, so they change frequently. Also our classes aren’t designed to
communicate the semantics the Product team is trying to capture, and there’s
also no way for Pendo to know that the selector it generated uniquely captures
whatever event the user wants - it’s entirely possible that the same selector
could occur on a different screen.

We’ve been asked to “stabilize” our class names for the product team, so that
Pendo doesn’t “break”, but we have resisted as fundamentally this is not what
CSS is meant for. Nonetheless we now have an invisible, undocumented coupling
between our application internals and Pendo.

IMO the only way this kind of event tracking can be done right is if
developers and Product communicate and the devs, who understand the code, put
the tracking in the right place.

I’d encourage you to bless a “data-freshpaint” attribute as the preferred way
to link events to your system, if the way it currently works is CSS selectors.

~~~
malisper
> I’d encourage you to bless a “data-freshpaint” attribute as the preferred
> way to link events to your system.

If you want to go through with this, you can do this already with CSS classes.
You can have classes like "freshpaint-login", "freshpaint-checkout", etc.

> IMO the only way this kind of event tracking can be done right is if
> developers and Product communicate and the devs, who understand the code,
> put the tracking in the right place.

If you have the resources to do this, I highly recommend you setup manual
tracking. In Freshpaint, we give you the ability to fall back to manual event
tracking if you want it. The thing is most teams don't have the resources to
write tracking code for everything, so a lot of the time it just doesn't get
done. We commonly hear it takes 3-6 months to get Segment fully setup, and
even then you have to constantly write new tracking code as you launch new
features.

~~~
vosper
True, you could dedicate CSS classes like that. I’m really talking about
separation of concerns: CSS is for styling, not communicating user intentions
to external systems. A data attribute is better, and you could program the
selector-creator to prefer those attributes if it can find them.

That doesn’t help with after-the-fact attribution, though. That’s where using
existing CSS classes really shines. With the huge proviso that you have to be
sure the CSS selector you’re using really captures (and only captures) the
action you’re trying to track. I suspect it’s easy to get this wrong and end
up with skewed analytics.

------
divbzero
Congratulations on your launch!

I use Segment and can easily see the value in backfilling historical data when
adding new data destinations. Also impressed with the respectable set of
integrations [1] you have implemented already.

[1]:
[https://www.freshpaint.io/integrations](https://www.freshpaint.io/integrations)

What would be your plan if Segment added “backfill” as a feature to their
existing product? Does your “automation” also provide significant advantages
over Segment?

~~~
malisper
> What would be your plan if Segment added “backfill” as a feature to their
> existing product? Does your “automation” also provide significant advantages
> over Segment?

I don't think it's possible for them to provide the same kinds of backfills we
provide. At least not without completely redesigning their infrastructure. In
order to support retroactive backfills, we capture every user action up front.
If Segment were to try to do that, they would suddenly find themselves
processing an order of magnitude more data than they are today. If you want to
support autotrack, you need to design your infrastruture from day 1 with that
in mind.

~~~
divbzero
From other comments by you & Fitz, the “define events in UI” feature is also
very intriguing as a value prop.

Thanks! Look forward to trialing this soon.

------
lapnitnelav
Hey sounds brilliant, congrats on the launch.

As soon as I heard of Segment, I knew they were onto something valuable and
can only welcome more competition.

Now that I've been nice, allow me to get the plastic pitchfork.

I see no mention of GDPR, I assume you are going to restrict your market to NA
for now? What about CCPA?

In the same vein I don't think you have any integration with open-sources
alternatives to commercial software that one could host on premise.

That's an odd choice given the shape of things to come wrt privacy.

~~~
fitzrocks
Hey thanks for the feedback!

For customers that need it, we get necessary legal documents/procedures in
place (DPA, etc) to be compliant with local regulations. We also share with
customers our documentation that communicates our security measures and how we
process customer data. You are correct - this stuff is not accessible on the
marketing site, we'll get there :)

In terms of your integrations comment: beyond the integrations we have now, we
prioritize new ones based on customer demand. So, yes, if the market trends in
the direction you mentioned then we will as well. My personal take is that
open source alternatives are currently a small subset and it's unclear to me
where the future lies. I also think privacy and security get conflated here
sometimes.

------
jakearmitage
Without more integrations, it's a hard thing to sell. Salesforce? Dynamic
Yield? BounceX? Emarsys?

Also, how does it work with native mobile apps? No catch-all collector?

------
zebnyc
Firstly, congrats on the launch.

Please let me know if I am wrong but it seems the major differentiator from
Segment is (3) as you can do the 1,2 and 4 with Segment. And even with (3) the
only difference is the way the events are collected (through code / point-and-
click). So my question is whether this really needs to be an end-to-end
solution / competitor to Segment rather than just an adapter/ wrapper on top
of Segment.

~~~
malisper
You're missing out on the whole retroactive piece! When you install
Freshpaint, Freshpaint starts tracking every click, pageview, etc. This means
Freshpaint is tracking nearly every event you will ever care about from day 1.
At any point in the future, you can send any data Freshpaint has collected to
your different tools. In the same way that programmers try to achieve 100%
test coverage, Freshpaint achieves nearly 100% "event tracking coverage" out
of the box. That's not true at all with Segment and it can take several months
to get even most of the events you care about.

~~~
zebnyc
I assumed that companies which used Segment would also integrate with
solutions like Kissmetrics and get those analytics automatically through their
Segment integration.

What am I missing here? Are you saying that Freshpaint replaces Segment +
Kissmetrics?

~~~
malisper
Freshpaint is separate from Kissmetrics. Freshpaint and Segment are both data
collection tools. Out of the box Segment collects nothing, while Freshpaint
collects everything.

Let's say you want to send a purchase event to Kissmetrics to do analytics on.
With Segment that would look something like:

    
    
      1) File a JIRA ticket for an engineer to instrument the purchase event.
      2) Wait a few weeks for the engineer to write and deploy the Segment tracking code.
      3) Wait a few weeks to collect enough data to do your analysis.
      4) Run your analysis in Kissmetrics.
    

With Freshpaint:

    
    
      1) Use our UI to create the purchase event.
      2) Send every purchase event that happened since you installed Freshpaint to Kissmetrics. This is possible because Freshpaint tracks every event out of the box.
      3) Run your analysis in Kissmetrics.
    

Does the difference make sense?

------
curo
One point of clarification: what counts as a user?

We have a product that has both public- and private-facing components. If it's
unique IP addresses then we'd be close to your enterprise plan which seems
price prohibitive. If it's an authenticated user with a name, that seems much
different.

Otherwise looks great and love the point-and-click. Even though creating
events is easy, it saves the back-and-forth with development.

~~~
fitzrocks
When a user visits your site, we give them a cookie with a unique user ID. We
determine the number of users you have based on the number of distinct user
IDs we've seen.

We're definitely conscious of user-based pricing, and we'll try to work with
you to come up with a price that allows you to use Freshpaint across your
entire site. We've done this with others that have funky business models where
traffic is high in some spots. Otherwise, you can install Freshpaint just on
the private component of your site and collect data where it's the most
valuable.

~~~
jakearmitage
What about bots?

------
chishaku
Congrats on the launch!

Is there a way to track when a component comes into the viewport?

What's the best practice for tracking component impressions?

------
vishalzone2002
Congrats on the launch. I have been a segment user and I think they also have
capabilities to backfill as well as they seem to be moving towards a CDP. I am
struggling to see what is the difference here? Or your value proposition is
different business/technical model ?

~~~
malisper
The big difference between us and Segment is we automatically instrument your
entire site. As soon as you install Freshpaint, we are automatically capturing
every click, pageview, etc, performed on your site. You can create a new event
six months after installing Freshpaint, and you'll have access to every
instance of that event since you installed Freshpaint. This means you:

1) Don't have to delay launches so you have time to setup event tracking.

2) Don't have to worry about forgetting to setup tracking. A common problem is
a company will ship a new feature and realize two weeks down the road that
they forgot to track a key event. They then have to setup tracking for that
event and wait another two weeks for data to come up. That jus doesn't happen
with Freshpaint. Freshpaint collects every action out of the box and gives you
access to that data whenever you want it.

------
EgoIncarnate
How does backfilling work? Do all destinations support it completely? Do
things like the original IP address and date time get passed through?

------
kareemm
Saw your comment on the Posthog post yesterday. Sounds like you felt the pain
of scaling at Heap, which bodes well for FP.

Freshpaint looks super useful for two reasons:

1\. Heap-style "collect it all" and "define events in the UI" features. Loved
these on Heap and it should be the default collector for taking dev out of the
"tracking usage metrics" equation

2\. More Segment competition. Segment's great, but super expensive for
business models where the # of your tracked users doesn't scale with pricing.

I could imagine using this with PostHog for a nice product usage stack.

~~~
malisper
> Saw your comment on the Posthog post yesterday. Sounds like you felt the
> pain of scaling at Heap, which bodes well for FP.

Yep! At Heap I had to build a system to ingest a ton of data and process
queries over that data that returned in seconds in real-time. For Freshpaint,
we need to ingest the same amount of data, but without the need to query it. I
honestly think building Freshpaint has been several times easier than building
Heap.

Early on, I had a conversation with Heap's CTO about Freshpaint. He said
something funny along the lines of "I wish I could work on this because I
would absolutely destroy this problem."

> Segment's great, but super expensive for business models where the # of your
> tracked users doesn't scale with pricing.

Definitely! This is one of the things Fitz and I noticed before starting
Freshpaint. It seems like until now, Segment hasn't had any real competitors.
Segment is kind of now known for being overpriced.

------
technics256
Would this work for React Native?

~~~
malisper
Not right now, although we have plans to build a React Native integration in
the future.

------
polskibus
Could you compare your product to PostHog that has also launched on HN
recently ?

~~~
malisper
They're pretty different tools. If anything, you would use Freshpaint to send
data into PostHog.

PostHog is an analytics tool. Once you have data in PostHog, you can run
queries against the data to produce various charts and graphs. Other analytics
tool include Mixpanel, Amplitude, and Heap. The primary reason you would use
an analytics tool is you want to ask questions about your users.

Freshpaint is a data collection tool. We automatically collect data from your
site such as clicks, pageviews, etc. You can then use our UI to send that data
to different tools. We integrate with the large analytics tools and also a ton
of marketing tools like Intercom and HubSpot. There are two reasons you would
want to use a tool like Freshpaint:

    
    
      1) It's easy to collect data. Freshpaint instruments your entire site, so you don't have to.
      2) It's easy to send the data to different tools. Once a piece of data is in Freshpaint, you can send it in one click to any of your analytics and marketing tools.
    

Does that make sense?

------
adampgreen
Fantastic idea - congrats on the launch!

------
xmly
Segment + a universal no-code events collector?

~~~
xmly
Because events collector can not make money and usually open source... so have
to add one ETL backend.

~~~
slap_shot
I'm not affiliated with Freshpaint, but I'm curious what you mean by this.

Event collectors absolutely do make money (albeit none are probably profitable
due to being in growth phases right now). Also, very few are open source
(Mixpanel, Segment, Snowplow, and Amplitude's tracking libraries are open
source, Heap's mobile library is open source, but the backends and
visualization platforms are closed and the primary value of the product).

~~~
xmly
collectors, I mean analytics.js...

These js files collect the events from web app and sent them to the backend.

You can charge people on these files, but who is gonna pay?

But once the events are in your backend, customers have to pay for getting
them out and for storage as well.

~~~
slap_shot
Who is going to pay for anlaytics.js? Segment, the maintainers of
analytics.js, did $50MM in revenue last year.

~~~
xmly
That is because they have a backend service. The revenue is generated through
the backend service, not the js client.

