Can you please clarify, is this for bringing lots of different analytics sources to the same location, or is it for capturing events itself? I’m having a hard time finding whether I could use EventNative by itself to capture, for example, how many visitors went to a certain page. Would I need to route google analytics through EventNative to get that type of data?
We actually support both! You can route everything that is captured by GA or Segment (analytics.js) through your EventNative backend in intercept mode. Or you can configure EventNative to capture all these events in direct tracking mode.
Ok, if this project gets traction it might replace my own analytics solution based on JavaScript, Go and ClickHouse.
I'll stay tuned about it.
Are the maintainers in the room? I'd like to exchange some ideas.
If you're posting a Show HN here, please exchange ideas here. That's the whole point of Show HNs as well as the purpose of this site, and starving this thread of discussion is not going to help you.
I do understand the purpose or your post and I celebrate it, however this medium might lack some of the features Slack has which makes it quite easier to follow up ideas.
Can't tell from the docs, but how do you deal with "stubbed" events that are triggered before segment/GA loads? Are you able to do anything to make sure your snippet loads fully before other third party scripts that might "do work"?
I guess put more simply, do you need to do work when implementing to make sure you don't miss any of the existing events being captured, or does this rely on the same developer implementing all three?
We actually ask to insert a snippet after GA / Segment initialization code.
The algo is a follows: a) check if ga / analytics object is present b) add interceptor c) if the code was fully loaded (not a stup), send "fake" pageview event (which has been already sent), intercept it and send to EN backend only (not the original backend).
Also, we received a pull request that won't require EN code be inserted after GA/Segment. It tries to get window.ga/analytics object. If it doesn't exist, try the same thing in 1 second via setTimeout. We most likely with merge it to master soon
What I gets me wondering is that by having your own hosted solution you bypass adblockers but this implementation requires GA to be loaded, which is what adblockers block in the first place.
Am I missing anything?
While we do have a hook to intercept GA data, it is actually optional! You can use the self hosted JS tracker that we include with EventNative and serve it from your domain.
Is the intent for EventNative to be used as a way to capture events in an eventsourcing pattern, where custom events may be generated by microservices or other applications? A follow up if that is the case, how are schema migrations handled over time
Not really :( We design EventNative to collect data solely for analytics purposes. However, you still can send events from microservices as well. We're building server-2-server HTTP API and will hope that people contribute clients for popular languages
We actually working on ClickHouse integration right now, it will be shipped next week!
Re: materialized views - since not all DWH support them, we're not sure how can we leverage them. However, what do you have in mind? Maybe we're wrong!
We solve the same problem, but with different approach: we aim for very quick-start: snowplow consist from multiple services, EventNative has everything in one service. Also,
we have more destinations in pipeline, also we're going to collect data from more sources as well (Google Ads, Facebook etc).
Overall, snowplow is a great product, but they build for more complicated data pipelines rather than EventNative. We want to keep things simple
We just got it setup and it goes a bit further than EventNative by including a frontend interface. It's more akin to Heap and a superset of most of what EventNative has.
PostHog is a great project, I've actually talked to their founders in the early days and we use them! They're more similar to Mixpanel vs EventNative being n event collector focusing on processing large amount of data at scale (our first destinations were RedShift and BigQuery).
We are not trying to bypass adblock. If selfhost EventNative on track.yourapp.com, AdBlock has less incentive to block JS code on yourapp.com. It doesn't look like 3rd-party tracker, just like a part of you application (you can even host it at yourapp.com/en if you reverse-proxy with nginx
Would this be a replacement for something like Divolte? If yes, any specific reason why one should choose EventNative over Divolte, except for the "made in go" argument?
Took a look at their github. Great product! However, it requires Hadoop or Kafka cluster setup (=devops resourced). We designed kSense to be a simple as possible and have as few dependencies as possible.
Besides, if you want to data to land at BQ/CH or RedShift with Devlot, you'll need add a 3rd-party Kafka->DWH layer. I'm pretty sure there'are many oss options. Not sure if they can automatically generare SQL schema from JSON object like EventNative
RudderStack is focusing on replacing Segment.com completely, we focus only on a part of the problem: getting events to DWH. Also, we don't have a UI.
By narrowing down the focus, we think we can do a better job sending data to DWHs. One example: we automatically create SQL schema based on JSON structure. You can send
{
"any": {
"custom": "a",
"field": "b"
}
}
To EventNative and we'll create any_custom and any_field columns in DWH table on a fly.
Because we are Segment event structure/API compatible, there is an inherent structure in events. You can pass arbitrary JSON but only inside the properties or traits field of track/identify call. We do automatically create the schemas for those cases.
Congrats on your launch!! Glad to see more projects in this space. Would love to checkout your repo and share ideas etc.
This kind of internal service is required if you are operating a business for children and families.